タグ付けされた質問 「file-system」

ファイルシステムの操作とトラバースに関連する課題。これには、ディレクトリツリーの読み取り、ファイルまたはディレクトリの作成、移動、削除、ファイルアクセス権の読み取りまたは変更などが含まれます。

2
シェルグロブゴルフ
このタスクは、グロブ拡張後にファイルへの最短パスを出力することです。 シェルグロビングとは何ですか?ほとんどのシェルで*は、パス内の文字を使用して、その位置にある任意の文字を表すことができます。たとえば、ディレクトリfooにファイルbar bazとが含まれている場合asdf、foo/b*に展開されfoo/bar foo/bazます。 ここで、現在のディレクトリにというファイルだけが含まれているとしましょうihavealongname。このファイルを参照する場合は*、完全な名前を入力するのではなく、と入力します。これは、その1つのファイルのみを表します。 ディレクトリにというファイルも含まれている場合、両方のファイルに一致するialsohavealongnameため*、実行できません。私は少なくともしなければならないでしょうih*。 この*パターンは、探しているファイルの上のディレクトリに一致する場合にも機能します。そこに2つだけのディレクトリがある場合fooとbarが、fooファイルのみが含まれているbazとbar、ファイルが含まれているasdf、私は一致させることができますfoo/bazし*/baz。それとも、もっと簡潔に、*/b*。場合はbar空だった、*/*働くだろう。 あなたのタスク:「現在のディレクトリ」を表すパスの文字列配列と単一のターゲットパスを指定して、* sを展開した後、そのターゲットパスのみに展開される最短の文字列を出力します。 ターゲットパスは、それ自体の文字列として、パスの配列へのインデックスとして、渡されたパスの配列の最初の項目として、またはハードコーディングされていない他の便利な方法として取得できます。わからない場合はコメント欄で尋ねてください。 ターゲットパスは、「現在のディレクトリ」に存在することが保証されています。 すべてのパスに英数字のASCII(および/s)のみが含まれていると想定できます。入力パスとして、ルート(で始まる/)または相対(で始めない)を取ることができます/。 等しく短い可能性が複数ある場合は、それらのいずれかまたはすべてを返します。 これはコードゴルフで、最少バイトが勝ちます! Kevin Cruijssenのおかげで、テストケース。

5
dog bashユーティリティを実装する
dog は任意の数の引数をとるコマンドラインユーティリティです。最初の引数は書き込むテキストで、その他は任意の数のファイルです。 dogユーティリティは、これらのファイルの上に等分してテキストを分割します。残りがある場合n、最初のnファイルは追加のバイトを取得します dogcatしたがってx、forall の反対です。以下が成り立つはずです。 $> dog x a.txt b.txt ... $> cat a.txt b.txt ... x$> どこで...任意に多くのファイルを示します。 例(12バイト、3ファイル、均等に分割可能): $> ./dog.py "Dogs vs Cats" a.txt b.txt c.txt $> cat a.txt Dogs$> cat b.txt vs $> cat c.txt Cats$> cat a.txt b.txt c.txt Dogs vs Cats$> 残りのある例(13バイト、5ファイル、残り3): 9$>./dog.py "0123456789abc" a.txt b.txt …

10
エラーを処理するHello World
次の機能を持つプログラムまたは関数を記述します。 プログラム/関数は、最初に文字列Hello, world!を標準出力ストリームに書き込もうとします。(プログラム自体の些細な動作ではなく、I / Oに重点が置かれているため、この課題では他の形式の出力は受け入れられません。)成功した​​かどうかによって、次のようになります。 出力に成功した場合Hello, world!、プログラム/関数はそれ以上動作せずに終了します。 エラーのために正しい出力を生成できなかった場合、プログラム/関数は文字列Error writing "Hello, world!"を標準エラーストリームに書き込もうとします。(この課題では、エラー処理自体にエラー処理は必要ありません。) 明確化 プログラム/関数は入力なしで実行されます(動作するために入力が絶対に必要な言語で記述されている場合を除きます。その場合、可能な限り単純な入力で実行されます)。 出力を生成する場合、必要に応じて単一の末尾改行を生成することもできますが、これは必須ではありません。 プログラムが実装する「標準出力への書き込みエラー」の定義では、少なくとも以下のケースをエラーとして扱う必要があります。 標準出力が存在しない(つまりstdout、閉じたファイルハンドルであり、ファイル記述子1が存在しない、またはこれらのケースが、使用している言語とOSに変換される)。 空き領域が残っていないディスク上のファイルを参照する標準出力。 接続の終わりをすでに閉じている別のプログラムに接続する標準出力。 そして、少なくとも以下のケースを成功(すなわち、エラーではない)として扱う必要があります: 標準出力は端末に接続され、Hello, world!画面に表示されます。 標準出力はファイルに接続し、ファイルにHello, world!書き込まれます。 上記のルールに準拠している限り、出力エラーとして数える詳細を選択できます。 上記のエラー状況が発生しても、プログラム/関数がクラッシュすることはありません。使用する終了コードはあなた次第です。 プログラム/関数は、標準エラーストリームで発生したエラーの性質を記述しないでください。上で指定した文字列を出力するだけです。エラーが発生したかどうかに関係なく、標準エラー(コンパイラの警告など)の無関係な出力は、無条件に生成された場合にのみ有効です。 プログラムは1つのオペレーティングシステムでのみ動作する必要があります(ただし、上記のエラーが理にかなっている必要があります。ほとんどのマルチタスクコンシューマーオペレーティングシステムで動作するように十分に一般的なものにしようとしましたが、より奇妙なオペレーティングシステムでもかまいません。このチャレンジから除外されました)。プログラムが移植性がない場合は、提出するタイトルに、実行する必要がある前提条件をリストします。 このタスクは、すべての言語で可能であるとは限りません(すべての言語でプログラムがカスタムの方法で出力エラーを処理できるわけではありません)。可能な場合は言語を選択する必要があります。 プログラム/関数が機能することを確認してください!ライブラリ関数のドキュメントを信頼して、彼らが言うことを実行しないでください。単純な出力関数のエラー処理は、理論的には関数がエラーを処理すると主張している場合でも、実際には壊れていることがよくあります。 テストケース bashLinuxで上記の各エラー状態をシミュレートする方法を次に示します(Linuxを使用する必要はありませんが、これをテストするのが最も簡単なシステムである可能性があります)。 your_program_here >&- # nonexistent stdout your_program_here > /dev/full # out of disk space mkfifo test # note: change "test" …

4
終了しますが、Windowsファイルです!
実行時に自分自身を現在のディレクトリに、自分自身という名前のソースファイルに作成するクインを書き込みます。ここではWindowsを使用するため、ファイル名(したがってクイン)には次の制限が必要です。 これらの文字はどれも \ / : ? * < > | 211 255文字未満 制限と仮定 あなたのコードは完全なプログラムでなければなりません(結局それは実行されるでしょう)。 ソースファイルからのコピーはありません。 名前にQuineが含まれている別のファイルがないと想定できます(Quine(1)が生成されるため)。 エラーは許可されます(エラーがソースコードに入らない限り) これはcode-golfで、バイト単位の最短コードが優先されます。 編集する 多分私ははっきりしていませんでした、クインの名前のファイルは実際にクインを含まなければなりません。私の悪い。

11
ディレクトリツリーハウスを表示するプログラムを書く
C:/stdinから、またはファイルから読み取られたディレクトリ(など)を指定すると、ディレクトリツリーが生成され、各ファイル/フォルダはその深さに基づいてインデントされます。 例 私が持っている場合C:/のみ、2つのフォルダーを含むドライブをfooしてbar、そしてbar空のときにfoo含まれているbaz.txt場合、入力して実行すると、C:/生成します。 C:/ bar/ foo/ baz.txt 入力で実行している間C:/foo/は foo/ baz.txt これはコードゴルフなので、バイト数が最も少ないものが優先されます。ファイル拡張子(などbaz.txt)はオプションです。補足:隠しファイルは無視できます。ディレクトリは実際に存在している必要があります。ファイルには印刷できない文字や改行は含まれていませんが、他のすべての印刷可能なASCII文字は問題ありません(スペースを含むファイル名をサポートする必要があります)。出力はファイルまたはstdoutに書き込むことができます。インデントは、タブ文字または4つのスペースで構成できます。

1
こんにちは、私は私の小さな猫の写真を取り戻したいです
注意:状況で提示されたものはすべて完全に偽物であり、チャレンジをもう少し楽しくするためにここに配置されました;)...または多分;) === ===送信の開始=== === こんにちは、 最近ディスク障害が発生しました。うまくいけばバックアップがあり、今は写真を取り戻したい。ただし、私が住んでいるパラレルユニバースでは、すべてのバックアップが破損しているように見えます。しかし、ユーザーがファイルを見つけるのに役立つ特別なツールがあったので、それは問題ではありません。それらはあなたのものと少し似ており、画像のように見えるヘッダーをディスクの周りで探します。彼らはまだベータ版であるため、ソフトウェアは見つけた画像を復元し、ランダムな名前を付けて、以下を含むリストを出力します。 写真を撮ったカメラのモデル、または-入手できない場合はシングル。モデルにはスペースを含めることができますが、スペースを含めることはできません-。 タブ文字(\t、ASCII 9) 写真ファイルの名前。 ファイルは標準のテキストファイルで、次のようになります。 [...] - uyfeiebsvH.jpg - hv754ce758.gif - 8321214736.jpg - FgnvsfHJBs.jpg - OMGILOVYOU.jpg - HElloDearH.png - umanHAYYSG.jpg COOLCAM S1332 umanIAYYSG.jpg iCell 7G 1234567890.jpg [...] ファイルは非常に大きく、モデルがあるすべてのファイルを別のディレクトリに移動するために、小さなUbroを使用することはできません。 親愛なる人間、私はあなたの助けが必要です。カメラに関するデータが含まれているすべての写真を別のディレクトリに移動してほしいので、このアイコンの混乱、スクリーンショットから私のかわいい猫の写真を見つけることができました... ただし、これらのバックアップはMy LiquidStateDrive46Xで実行されているため、十分な空き領域がありません(実際にインターネットをダウンロードしているので、他の何かをダウンロードするのは困難です。かろうじてウェブをサーフィンし、あなたが私が見つけた唯一の人、人間です!) そんな風に生きさせないで!私のために機能する小さなプログラムを書いて、ウブロを少し節約してください。 これはコードゴルフなので、最短のプログラムが勝ちます 私はあなたのプログラムHUMANを起動できるようにする必要があります!そのため、プログラムに既存のインタープリターがあることを確認してください。 リストファイルは、スクリプトを起動したディレクトリにあると期待できます。./list.txtという名前になります 画像を./withmodel/に移動する必要があります 復元されたすべての画像は、プログラムを起動した場所と同じディレクトリにあります 彼の名前に-を含む画像はありません。カメラモデルにも同じことが言えます 単純な関数ではなく、実際のプログラムである必要があります。 インターネットにアクセスできません。ダウンロードしています!これは本当に重要です。 猫の画像がすぐに必要な場合、または生き残れない場合:このコードゴルフは、この日にまだ生きている場合、10月10日に終了します。 === ===送信終了=== ===

8
不足している整数シーケンスの検出—ファイルシステム
課題は、ファイルまたはディレクトリの整数シーケンスの欠落を検出することです。整数という名前のファイル/ディレクトリで満たされたディレクトリがあります。 ファイル/ディレクトリは複数のスレッドから生成されていますが、ジョブは完了していません-したがって、シーケンスにギャップがあります。 入力は開始と終了の2つの整数であり、タスクは次の欠落シーケンスの開始整数を検出することです。runが置かれているディレクトリ内のすべてのファイルとディレクトリには、整数の名前のファイルまたはディレクトリしかないと想定できます。 受け入れ可能な回答フォーム:関数、コードスニペット-コマンドラインで実行する必要があります。 受け入れ可能な開始/終了入力:コマンドラインに含まれ、環境変数/引数は大丈夫、関数へのパラメーター、ユーザー入力は大丈夫です。 最短のコードが勝ちます。 更新-私はなんとかこれを絞り出しましたが、興味深い答えがたくさんありました。アプリコットボーイのBash回答のアイデアは、35バイトのBash回答を設計する際に一部使用されました。次の運が良かったです。 E.g. Presume files 1,2,3,4,7,8,9,10,18 are present, start is 1, end is 20: The output should be: 5 11 19

3
高度なコードゴルフ-ディスク操作とファイル割り当て
こんにちは、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 幸運を。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.