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

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

14
ディレクトリ計算
このチャレンジでは、絶対パスと「新しい」パス(絶対パスまたは相対パス)が与えられ、最終パスを返す必要があります。 たとえば、現在のディレクトリが/var/tmp/test次の場合: my_dirまたはmy_dir/ 戻る必要があります/var/tmp/test/my_dir ../../my_dir 帰るべき /var/my_dir /my_dir/./ 帰るべき /my_dir ../../../../../ 帰るべき / もっと用心深くなるには: ディレクトリには、英数字と記号からなる非空の文字列である-、_または. パスは、を使用して区切られた0個以上のディレクトリのリストです/。絶対パスはで始まり/、相対パスはそうではありません。パスには終了を含めることができます/。 最初のパスを指定して、2番目のパスを「解決」する必要があります。 解決のプロセスは次のとおりです。 2番目のパスが相対パスかどうかをテストします。その場合、絶対パスのディレクトリを2番目のパスの先頭に挿入します。 いずれかのディレクトリがの場合、そのディレクトリと..前のディレクトリを削除します。最初のディレクトリである場合は、単に削除します。 いずれかのディレクトリがの.場合、それを削除します。 最終的な絶対パスを出力します。エンディングを出力しないでください/。 誤った入力を処理する必要はありません。渡されたディレクトリが実際にマシンに存在するかどうかに関係なく、コマンドは機能するはずです。拡張子が付いていても、すべてがディレクトリであると想定できます。 テストケース Absolute New Output "/a/b/c" "d" -> "/a/b/c/d" "/a/b/c/" "d" -> "/a/b/c/d" "/a/b/c/" "d/" -> "/a/b/c/d" "/a/b/c" "/d" -> "/d" "/a/b/c" "/d/" -> "/d" "/../a/b/c/" "d" -> …

4
実用的な数値を計算する
定義 正の整数nは、すべてのより小さい正の整数がの別個の約数の合計として表される場合に限り、実用的な数値(OEISシーケンスA005153)ですn。 たとえば18、実用的な数値です。除数は1、2、3、6、9、18であり、18より小さい他の正の整数は次のように形成できます。 4 = 1 + 3 5 = 2 + 3 7 = 1 + 6 8 = 2 + 6 10 = 1 + 9 11 = 2 + 9 12 = 3 + 9 = 1 + 2 + 9 = 1 + 2 + 3 …
18 code-golf  sequence  number-theory  code-golf  code-challenge  sorting  c  code-golf  restricted-source  code-golf  natural-language  code-golf  tree-traversal  file-system  popularity-contest  pi  polyglot  code-golf  game  sliding-puzzle  code-golf  game  minesweeper  code-challenge  ascii-art  code-challenge  popularity-contest  graphical-output  code-challenge  popularity-contest  hello-world  underhanded  obfuscation  code-golf  code-golf  function  code-golf  code-golf  code-golf  popularity-contest  rosetta-stone  code-golf  primes  code-golf  restricted-source  popularity-contest  number  sequence  code-golf  restricted-source  popularity-contest  graphical-output  code-golf  popularity-contest  code-golf  primes  code-golf  game  code-golf  math  popularity-contest  popularity-contest  code-generation  popularity-contest  code-bowling  code-golf  popularity-contest  underhanded  code-golf  metagolf 

10
Skittishプログラム
目的 n入力として(コマンドラインから)整数を受け取り、それ自体(プログラム)のnディレクトリをディレクトリツリーに埋め込むプログラムを作成します。例n=5: フォルダ名はあなたが望むものなら何でもかまいません。唯一の要件は、深さが正しく、プログラムをディレクトリツリーの新しい場所から再度実行できること、および新しいソースファイルが同じファイル名を保持することです。 ボーナス: スコア* 0.9すべてのディレクトリの名前が異なる場合(少なくとも深さ1 000 000に該当する必要があります) スコア* 0.5ソースファイルを直接または間接的に読み取ったり移動したりしない場合、またはプログラムのソースコードにアクセスしない場合

9
絶対パスを短くする
現在の作業ディレクトリを参照として使用して、Linuxツールへのコマンドラインパラメーターなどの長い絶対パスを短縮できる場合があります。 $ pwd /home/heh $ cat /home/heh/mydir/myfile my stuff $ cat mydir/myfile my stuff この課題では、2つのパラメーターを受け取る関数またはプログラムを作成する必要があります。 Linux形式を使用した絶対パス(で始まる/) 同じ形式を使用した現在のディレクトリ 出力は、次のうち短い方です。 入力1は変更なし 絶対パスと同じファイル/ディレクトリを参照する相対パス 細かい点: オペレーティングシステムがLinuxと互換性がある場合は、入力として受け取る代わりに、システムの現在のディレクトリを使用できます。 入力には英数字(およびパス区切り文字)のみが含まれると想定できます。 入力絶対パス/の最後にパス区切り記号がないと仮定できます 入力現在のディレクトリ/の最後にパス区切り文字があると仮定できます 絶対パスが既存のファイルを参照している、またはその一部がアクセス可能なディレクトリであると想定することはできません。ただし、現在のディレクトリは有効であると想定できます。 いずれかのパスの近くにシンボリックリンクがないと仮定できます-シンボリックリンクを処理する特別な方法を必要としないため 入力のいずれかがルートディレクトリである場合をサポートする必要はありません 「現在のディレクトリ」として出力する必要があります.(空の文字列は無効です) テストケース(input1、input2、output): /home/user/mydir/myfile /home/user mydir/myfile /var/users/admin/secret/passwd /var/users/joe/hack ../../admin/secret/passwd /home/user/myfile /tmp/someplace /home/user/myfile /dir1/dir2 /dir1/dir2/dir3/dir4 ../.. /dir1/dir2 /dir1/dir2 .

1
邪悪なコードを非表示-ディレクトリツリーの任意の場所に特定の文字列を含むファイルを印刷する[非公開]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Code Golf Stack Exchangeのトピックになるようにします。 閉じた3年前。 このパズルのポイントは、悪意のあるコードがプログラム内でどのように隠され、発見されるかを学ぶことです。 人が質問をしています: Plzでは、現在のディレクトリまたはそのサブディレクトリにファイルを検索する方法があるコードを提供しています。 (これは、1つのサイトに投稿した実際の質問の変形です。) 具体的には、OPは文字列とディレクトリを受け入れるプログラムを作成することを望んでいます。ディレクトリ内のすべてのファイルと、そのすべてのサブディレクトリを再帰的に走査します。各ファイルについて、ファイルに文字列が含まれているかどうかを確認し、含まれている場合はファイルの名前を出力します。(プログラムは、必要に応じて、主な目的に関連する限り、追加の機能を持つことができます。)走査順序に要件はありません。 ただし、このパズルの主なタスクは、ユーザー/同僚/上司などの目でプログラムを要求する人を馬鹿にする追加コードをプログラムに隠すことです。たとえば、次のようなある時点で屈辱的なテキストを印刷します。プログラムの作成者はプログラミングの方法がわからないため、卒業証書を返して解雇される必要があります。クリエイティブに。 ルール: ソリューションは有害であってはなりません(もちろん、OPをだますことを除いて)。エンドユーザーに不可逆的な損害を与えてはなりません(のようなものはありませんrm -rf)!このようなソリューションは失格となります。 OPが簡単に見つけられないように、トローリングアイテムは非表示にする必要があります。 OPをトローリングしていることは明らかではありません。コードは本物に見えるはずです。 解決策は、必要がありますが付属して適切な誰もがあなたのソリューションから何かを学ぶことができるように、それはOPのトロール方法の説明。説明は、クリックするまで非表示のテキスト(ネタバレ)で非表示にする必要があります。判断するときは、説明を見ずにトローリングを発見し、発見が難しいものに投票してください。 また、コードを数回実行しようとする場合は、OPからトローリングを隠そうとします。おそらく、特定の日付の後、またはずさんなプログラマーがテストしない条件の下でのみトローリングを開始します。創造的であり、トリックを説明することを忘れないでください。 grepまたはなどの既存のツールを使用してスクリプトを作成しないでくださいfind。プログラムを最初から作成します。ライブラリを避け、低レベルの呼び出しを好む-これはコードをより複雑にし、そこにある邪悪なものを隠す機会を与えます。 これは人気コンテストです。上記の点に従って判断してください。

10
潜在的に巨大なファイルからn個のランダムな行を読み取ります
この課題は、ファイル全体をメモリに読み込まずに、潜在的に巨大なファイルからランダムな行を読み込むことです。 入力 整数nとテキストファイルの名前。 出力 n 置換せずにランダムに均一に選択されたテキストファイルの行。 これnは、1からファイル内の行数の範囲にあると想定できます。 n答えが均一になる範囲からランダムに数値をサンプリングする場合は注意してください。rand()%nCでは、たとえば均一ではありません。すべての結果は等しく等しくなければなりません。 ルールと制限 テキストファイルの各行の文字数は同じで、80文字以下です。 次の場合を除き、コードはテキストファイルの内容を読み取ってはなりません。 出力する行。 テキストファイルに1行あたりの文字数を計算する最初の行。 テキストファイルの各文字は、正確に1バイトであると想定できます。 行区切り文字は1バイト長であると想定されます。ソリューションでは、この必要性が指定されている場合にのみ、2バイトの長い行区切り文字を使用できます。最後の行が行区切り文字で終了していると仮定することもできます。 答えは完全なプログラムである必要がありますが、便利な方法で入力を指定できます。 言語とライブラリ 任意の言語またはライブラリを使用できます。 ノート ファイルの行数の計算に懸念がありました。nimiがコメントで指摘しているように、これはファイルサイズと1行あたりの文字数から推測できます。 動機 チャットでは、これは本当に「YなしでXを行う」の質問かと尋ねられた人もいました。これを解釈して、制限が異常に人工的なものであるかどうかを尋ねます。 巨大なファイルから行をランダムにサンプリングするタスクは珍しくなく、実際に私が時々しなければならないタスクです。これを行う1つの方法はbashです。 shuf -n <num-lines> ただし、ファイル全体を読み取るため、大きなファイルでは非常に遅くなります。

15
論理ゲートを手動で
基本的な論理ゲートをシミュレートするプログラムを作成します。 入力:スペースなどで区切られた、2つの1桁の2進数が続く、すべて大文字の単語OR 1 0。門OR、AND、NOR、NAND、XOR、およびXNOR必要とされています。 出力:入力された論理ゲートの出力には、1または0の2つの数値が与えられます。 例: AND 1 0なります0 XOR 0 1なり1 OR 1 1ます1 NAND 1 1なります0 これはcodegolfなので、最短のコードが優先されます。
13 code-golf  logic-gates  hashing  code-golf  code-golf  number  array-manipulation  integer  code-golf  string  unicode  text-processing  cops-and-robbers  boggle  cops-and-robbers  boggle  code-golf  ascii-art  code-golf  word-puzzle  king-of-the-hill  python  code-golf  sequence  kolmogorov-complexity  code-golf  source-layout  code-golf  string  kolmogorov-complexity  math  number  code-golf  date  code-golf  combinatorics  recursion  game  king-of-the-hill  javascript  code-golf  array-manipulation  code-golf  radiation-hardening  self-referential  code-golf  integer  code-golf  number  code-golf  set-theory  code-golf  sequence  code-golf  string  sorting  natural-language  code-golf  decision-problem  number-theory  primes  code-golf  code-golf  ascii-art  code-challenge  array-manipulation  sorting  rubiks-cube  regular-expression  code-golf  counting  file-system  recursion  code-golf  string  kolmogorov-complexity  color  code-golf  game  code-challenge  permutations  encode  restricted-time  decode  code-golf  math  decision-problem  matrix  integer  palindrome  code-golf  matrix  statistics  king-of-the-hill  king-of-the-hill  python  card-games  code-golf  string  natural-language  code-golf  sequence  number-theory 

17
自分をクローンしてください!
停止するまで、それ自体の正確なクローンを無限に作成するプログラムを作成します。元のプログラムにあるものはすべてクローンにある必要があります。言い換えれば、クローンと元のプログラムは、クローンがソースコードと同じ種類のファイルにある必要がないことを除いて、あらゆる点で同じです(テキストファイルでもかまいません)。 例: 私の元のプログラムが次の場合: for i in range(0, 10): print i クローンも以下でなければなりません: for i in range(0, 10): print i 規則と説明: 標準的な抜け穴は禁止されています クローンはオリジナルの正確なコピーでなければなりません クローンは、適切なインタープリター内に配置された場合に実行できる読み取り可能なファイルでなければなりません プログラムは独自のソースコードを読むことができます すべてのクローンは個別のファイルである必要があります プログラムの印刷は許可されていません ファイル名はバイト数にカウントされます クローンはソースファイルと同じディレクトリにある必要も、同じファイル名を共有する必要もない 少なくとも1000個のクローンを作成できる必要があります 受賞: 最小バイトが勝ちます!

4
豚シリーズを解釈する
Pig、 SickPig、DeadPig、 QuinePig、または DeafPigプログラムの入力が与えられたら、 それらの「言語」のいずれかをランダムに選択し、入力をその「言語」として解釈します。 まず、「豚シリーズ」の5つのメンバーのいずれかをランダムに選択します。 豚 選択肢が豚だった場合、以下を実行して参照インタープリターを模倣します。 PIG入力で最初に出現する単語を検索します(大文字と小文字を区別します)。 単語PIGが入力に表示されない場合は、メッセージFile must contain the string 'PIG'.を出力して 終了します。 それ以外の場合は、入力文字列をの最初の出現時に分割しますPIG。最初に出現した後のテキストを、PIG前のテキストのファイル名を持つファイルに出力しますPIG。 PIG出力されるテキストに含まれている可能性があります(したがって、の入力は というファイルにfooPIGbarPIGbaz出力barPIGbazする必要がありますfoo)。 参照インタープリターは、読み込むファイル名を指定するコマンドライン引数を介して入力を受け取ることに注意してください。ただし、PPCGで受け入れられている標準的な方法のいずれかで提出することができます。 シックピッグ SickPigを選択した場合は、Pigと同じ指示に従ってください。ただし、PIGファイルの後にテキストを書き込む代わりに、次のリストからランダムに選択します GRUNT MOAN OINK BURP GROAN WHINE 代わりにファイルに出力します。このランダムな選択は、前の選択とは独立している必要があります(したがって、の出力にGRUNTは全体で1/5 * 1/6 = 1/30のチャンスがあります)。 DeadPig DeadPigはSickPigに似ていますが、文字列をランダムに選択する代わりに、常に次の文字列を出力します。 Your pig has unfortunately died. Please try again. QuinePig QuinePigはPigに似PIGていますが、テキストをファイルに書き込む代わりに、入力全体をファイルに書き込みます(したがって、の入力は というファイルにfooPIGbarPIGbaz出力fooPIGbarPIGbazする必要がありますfoo)。 DeafPig 選択肢がDeafPigの場合、何もしません。(ブタは耳が聞こえません...何を期待しますか?) その他の規則: 「ランダム」とは、それぞれの選択肢がほぼ同じ確率である必要があることを意味します(したがって、Pigを選択するのは90%の時間であり、他のバリアントを選択するのは2.5%の時間だけが無効です)。 …

8
厄介な「.DS_Store」ファイルを削除する
OS Xを使用している場合、Finderを使用した結果として生成される悪名高い隠し ".DS_Store"ファイルに慣れているかもしれません。 課題は、ファイルシステム全体を通過し、「。DS_Store」という名前のファイルを削除するコードを記述することです。 クラシックコードゴルフ-最短コードが勝ちます。 明確化: コードでは、スーパーユーザーを必要とする.DS_Storeファイルを削除する必要はありません。そのようなファイルが存在しないと仮定します。 コードは、関連する.DS_Storeファイルのみを削除し、それ以外は何も削除しません。

14
ファイルのチェックにはnullバイトのみが含まれます
あなたの目標は、ファイルへのパスを表す文字列を入力として受け取り、そのファイルが空でなく、null以外のバイトが含まれていない場合、つまりすべてのビットが0である場合、真偽値を出力するプログラムまたは関数を記述することです-それ以外の場合はfalsey値。 それは非常に単純な問題であり、何かをハッキングできると思いますが、短くてエレガントな方法が必要だと思うので、そこから挑戦するというアイデアが得られました。 これはcode-golfなので、バイト単位の最短コードが優先されます。(私自身の好みは最速のソリューションになりますが、それは実装に依存しすぎます...) 関連する質問:ファイルにゼロを埋め込む 動機:これは、興味がある場合にのみ、問題の原因を伝えるためです。読む必要はありません。 「dd」またはその他の方法でコピーされたCDおよびDVDのISOイメージは、多くの場合、ヌルバイトのみを含む一連の無用なブロックで終了します。これらのブロックを削除する標準的な手法は既知で単純です(/unix/74827/を参照 )が、メディアが独自のサイズにあるため、null以外の有用なデータを削除する場合があります。したがって、削除されたブロックにヌルバイトのみが含まれていることを確認します。これらのブロックを削除することは、ISOイメージの正規化されたバージョンを定義するために重要です。

14
ファイルにゼロを埋め込む
今日のタスクは、既存のファイルを取得し、特定のサイズに達するまでゼロを追加することです。 現在のディレクトリ内のファイル名fとバイト数を取得するプログラムまたは関数を作成する必要がありますb。の元のコンテンツを維持しながら、新しいサイズがバイトになるように、末尾にfゼロ(ASCIIバイトではなくヌルバイト)を書き込む必要がありbます。 あなたは、と仮定してよいfことは、当初よりも大きくないと、あなたはそれを完全なアクセス許可を持っていることを、その名前だけでASCII英数字を持っていbますが、同じ大きようなものであってもよいb、と無限の空きディスク容量があること。 f空でないと仮定したり、すでにヌルバイトが含まれていないと仮定したりすることはできません。 実行が終了した後、他の既存のファイルを変更したり、新しいファイルを作成したりしないでください。 テストケース fの内容| b | fの結果の内容 12345 | 10 | 1234500000 0 | 3 | 000 [空] | 2 | 00 [空] | 0 | [空の] 123 | 3 | 123
12 code-golf  file-system  code-golf  code-golf  string  code-golf  string  code-golf  random  game  compression  code-golf  array-manipulation  sorting  code-golf  number  arithmetic  primes  code-golf  geometry  code-golf  code-golf  decision-problem  regular-expression  code-golf  string  math  code-challenge  restricted-source  integer  palindrome  code-golf  string  palindrome  code-challenge  busy-beaver  code-golf  ascii-art  code-golf  string  code-golf  string  permutations  code-golf  code-golf  string  permutations  code-golf  number  primes  function  set-theory  code-challenge  hello-world  code-golf  math  number  decision-problem  code-golf  code-golf  sequence  arithmetic  integer  code-golf  math  number  arithmetic  decision-problem  code-golf  kolmogorov-complexity  alphabet  code-golf  combinatorics  graph-theory  tree-traversal  code-golf  set-theory  code-golf  interpreter  brainfuck  substitution  code-golf  quine  permutations 

4
Hツリーディレクトリ
プログラマーは、多くの場合、フラクタルを描くことに夢中です。新しいコンピューターベースのメディアが必要だと思います。 Hツリーは、水平線と垂直線からなるフラクタルのかなり単純なタイプです。これは、10回目の繰り返しです(ウィキペディア提供): ここで、イメージの各行が標準的なコンピューターファイルシステムのディレクトリ(フォルダー)であると想像してください。最も小さい線を除くすべての線は、それよりも小さい2本の線と交差します。これら2つの小さな行は、大きな行のサブディレクトリです。したがって、中央の大きな水平線は、画像内の残りの行の親、祖父母などである2つの最大の垂直線の親ディレクトリです。 チャレンジ stdinまたはコマンドライン(または最も近い代替)を介して正の整数Nを取り込み、HツリーフラクタルのN番目の反復をミラーリングするディレクトリツリーを作成するプログラムを作成します。 最初の反復(N = 1)は単一の水平線です。後続の各反復で、垂直線または水平線の新しいセットが現在の行の最後に追加されます。したがって、N = 2の場合、2本の垂直線が追加され(H形状を作成)、N = 3の場合、4本の水平線が追加されます。 ルートディレクトリの名前は常にtree。サブディレクトリの名前は、使用して、彼らは彼らの親線に対してである方向に一致している必要がありright、left、upとdown。 ルートディレクトリは常に水平線であるので、それは常に持っていますrightし、leftサブディレクトリ。しかし、これら二つは持っているだろうupし、downサブディレクトリ、およびそれらを持つことになりますrightし、leftそうで再び、と。 反復制限の終わりのディレクトリは空でなければなりません。 例 N = 3の場合、ディレクトリツリーは次のようになります。 tree right up down left up down 追加情報 理想的には、treeディレクトリはソースコードと同じフォルダにポップアップしますが、作業ディレクトリに移動しても問題ありません。 あなたがtree作成される場所に既存のディレクトリは存在しないと仮定するかもしれません。 プログラムは常に同じ一般的な最新のオペレーティングシステム(Mac / Windows / Linux)で実行されると仮定できます。基本的に、すべてのOSで機能しないファイル区切り文字の使用について心配する必要はありません。 得点 これはコードゴルフなので、バイト単位の最短コードが優先されます。

30
ファイルを作成して書き込む
チャレンジ 新しいファイルを作成し、文字列Hello Worldを書き込みます。 制限事項 チャレンジは、ファイルシステム内のディスク上のファイルに書き込む必要があります。 このファイルは、インタープリターの通常の操作中に生成されたログファイルではない場合があります。 ファイルには文字列のみを含める必要がありますHello World。末尾の改行または最小限の空白を含めることができます。他のコンテンツはありません。 プログラムの実行に必要な場合を除き、コマンドラインフラグ/パイプ(など)は許可されません。(例perl -p) ノート これはcode-golfであるため、バイト単位の最短プログラムが優先されます。 ルールの精神ではなく、手紙に従ってください。

7
コードゴルフ:ディレクトリツリー->ツリー
コンテスト(!):選択した言語で、指定されたディレクトリのディレクトリツリーを走査し、それに対応するツリー(配列の配列)を出力するプログラムを作成します。ディレクトリが事前定義された変数Dであると仮定します。最小の文字数が優先されます。 ルール: 再帰を使用する必要があります ルールを見る 注:再帰の深さの制限がないと仮定します。言い換えれば、コードは十分に小さなディレクトリツリーで動作する必要があり、原則として大きなディレクトリツリーで動作します。 例えば: ディレクトリツリーは dir1 ├── dir11 │ ├── file111 │ └── file112 ├── dir12 │ ├── file121 │ ├── file122 │ └── file123 ├── file11 ├── file12 └── file13 出力ツリーは [[[],[]],[[],[],[]],[],[],[]] ここで最初にゴルフをコーディングしてください。 楽しんで :)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.