こんにちは、Golfgeneers。
これはかなり長く詳細な質問です。それが求めていることを考えると、それはそうである必要がありました。ご不明な点がございましたらお尋ねください。不明な点がありましたら、私に知らせて修正してください。これはおそらくコードゴルフのより厳しい側面にあります。
私たちは軽量のコンピュータを構築しており、できるだけ軽量なファイルシステムが必要です。最短のコードが選択されます。
私たちは最先端の65536バイトのハードドライブを提供しています。このプロトタイプのために、それは直接のイメージファイルであり、プログラムが存在すると想定でき、適切な場所にあります。つまり、ハードディスク全体を表すバイナリファイルです。この画像はすでに「フォーマット済み」であると想定できます。プログラムがファイル内の何かに依存している場合、それは可能です。初期の空の状態をすべて0以外にする必要がある場合は、その状態を説明してください。
アプリケーションが使用するRAMについては、メモリ制限はありません。
入出力コマンドには、実際のハードドライブへのインターフェースが必要です。ディスクイメージと同様に、プログラムは入力用のファイルが存在し、どこにでも置くことができると想定できます。同様に、プログラムは都合のよい場所に出力できます。ただし、入力または出力コマンドの実行後にファイルを閉じる必要があります。
ディスクイメージに使用する必要のあるフォーマットが提供されていません。独自のフォーマットを自由に作成できます。最大248個のファイルを保存できる必要があります。256バイトを超えるファイルはすべて、256バイトごとまたはその一部に対するこの制限のために、新しいファイルとしてカウントできます。ファイルは最大63488バイトです。基本的には、256バイトの248セクターのハードドライブと同じくらいの能力が必要です。
これらの見かけ上のサイズの背後にある理由は、2048バイトの「管理」を提供することです-ファイルの詳細を保存するためです。各ファイル/フォルダは、4つの英数字の名前でアクセスできる必要があります。これは、好みに応じて、大文字と小文字を区別する場合と区別しない場合があります。プログラムが4文字以下の名前をサポートしている場合、0.95乗数のボーナスがあります。
プログラムは、stdinを介して次のコマンドを受け入れる必要があります。パラメータはスペースで区切られます。コマンドは改行で終了します。
- L-現在のすべてのファイルの標準出力する名前とそれらのサイズを改行で区切ってバイト単位でリストします。
- C ab-ファイルaを新しいファイルbにコピーします。
- D a-ファイルaを削除
- R ab-ファイルaの名前を新しい名前bに変更します。
- I a-入力ファイル(上記の注を参照)をファイルaとして追加します
- O a-出力ファイルに出力ファイルa
コマンドの実行に失敗する正当な理由として、次のエラーがSTDOUTまたはSTDERRに報告される場合があります。ERR#のみを印刷するように選択できます。#はエラーの番号です。
- 1-ファイルが存在しません
- 2-ファイルはすでに存在します
- 3-スペース不足*
*プログラムは、連続したスペースが不足しているという理由だけでこれを発行できないことに注意してください。それでも使用可能なセクターがある場合は、ディスクを最適化して機能させる必要があります。
フォルダーシステムはオプションですが、スコアに0.8乗数のボーナスが加算されます。1レベルを超えるディレクトリをサポートしている場合、(0.8に加えて)0.7乗数のボーナスを獲得します。ボーナスについては、
- L、R、C、Dは、現在のディレクトリ内でのみ機能します。Lは、現在のディレクトリ内のフォルダとファイルを一覧表示する必要があります。
- 新しいコマンドM abは、ファイルaをフォルダーbに移動します。bが「。」の場合、ファイルを親ディレクターに移動します
- 新しいコマンドG aはフォルダーaに移動します。aが「。」の場合、親フォルダーに移動します
- Rはフォルダの名前も変更する必要があります
- Dはフォルダとその中のファイル/フォルダも削除する必要があります
- Cはフォルダとその中のファイル/フォルダもコピーする必要があります
コマンドの実行に失敗する正当な理由として、次の追加のエラーがSTDOUTまたはSTDERRに報告される場合があります。
- 4-フォルダーは存在しません
- 5-フォルダーではなくファイルが必要です-ここで、IとOはファイル名を必要とし、フォルダーが指定されています
あなたのスコアは:
- ソースコードのサイズ(バイト単位)
掛ける
- 4文字以下の名前をサポートする場合は0.95
- 単一レベルのフォルダーをサポートする場合は0.8
- 0.7複数のレベルのフォルダーをサポートする場合
- 小文字または大文字のコマンド(必ずしもファイル名ではない)をサポートする場合は0.95
幸運を。