プログラミングパズルとコードゴルフ

プログラミング愛好家やコードゴルファーのためのQ&A

14
対称マップを完成させる
入力としてx軸とy軸に対して対称なマップの4分の1が与えられます。プログラムは完全なマップを印刷する必要があります。 マップには次の文字を含めることができます:-+/\|.、それらは期待どおりに回転する必要があります。入力データは常に長方形で小さくなります。 例 $ cat in +--- |./. |/.. $ ./solution < in +------+ |./..\.| |/....\| |\..../| |.\../.| +------+ 最短のコードが優先されます。
12 code-golf  string 

1
グラフの最短経路
プログラムを作成して、グラフを(標準入力または選択したファイルから)取得し、グラフ内の最短パスを見つけます。 グラフは、次の形式を使用して指定されます。 A---S F--T | / \ | | / 5 0 |/ \| D----3--E A-Z: nodes in the graph -|/\: edges in the graph 0-9: weights on the edges <space>: all the holes すべてのエッジは無方向で、8つの基本方向のいずれかに沿って配置されます(つまり、曲がりません)。エッジには、オプションで0〜9の重みを含めることができます。重みは、エッジをノードに接続する最後のシンボルにはありません(つまり、エッジには、重みを含めるために少なくとも3つのシンボルが必要です)。重みなしエッジのデフォルトの重みは1です。 コードは、ノード間の最短経路を計算する必要がありSそしてT長さおよび経路を印刷し、このように: 5:SDEFT 最短の正しいプログラムが勝ちます。

8
バイナリツリーエンコーディング
完全なバイナリツリーがあると仮定します(つまり、各内部ノードには正確に2つの空でない子孫があります)。各ノードにはゼロ以外の整数が含まれています。整数のリストへ/からツリーをエンコードおよびデコードするタスクが与えられます。 ツリーは内部的に次のように保存されます: struct node { int data; struct node *left, *right; }; そして、2つの機能を実装する必要があります。 int *encode(struct node *root); struct node *decode(int *array); エンコードとデコードの方法はユーザー次第です。 ポイント: 最小エンコード長 複雑さ(ノード数が理想的に線形) 独創 ソースコードの長さのポイントはなく、Cに制限されません。 ツリーの例: 5 / \ 3 2 / \ 2 1 / \ 9 9

18
ヒストグラム生成
ヒストグラム(データの分布のグラフィカルな表現)を生成する最短のプログラムを作成します。 ルール: プログラムに入力された単語(句読点を含む)の文字長に基づいてヒストグラムを生成する必要があります。(単語の長さが4文字の場合、数字4を表すバーは1ずつ増加します) バーが表す文字の長さと相関するバーラベルを表示する必要があります。 すべてのキャラクターを受け入れる必要があります。 バーをスケーリングする必要がある場合は、ヒストグラムに表示される何らかの方法が必要です。 例: $ ./histogram This is a hole in one! 1 |# 2 |## 3 | 4 |### $./histogram Extensive word length should not be very problematic. 1 | 2 |# 3 |# 4 |## 5 | 6 |## 7 | 8 | 9 |# …

9
郵便配達
私は郵便配達員としての仕事を得たばかりで、それを維持するためにあなたの助けが必要です。配達する前にたくさんのメールを注文する必要があります。 道路には、道路の先頭の1から始まり、最後まで番号がスキップされずに順番に番号が厳密に付けられ、左側に奇数、右側に偶数が付けられます。また、後に家が追加されたため、市民番号に文字が追加される場合があります。 チェストには街のすべての郵便物が入っているので、通りの郵便物のみを選択する必要があります。 メールをより速く注文するには、あなたの助けが必要です。私があなたに尋ねるのは、関数または完全なプログラムを書くことです: -通りの名前。 -私のパスに続いて注文された市民番号のリスト。 -アドレスのリスト(メールボックスを表します)。 そして、私の番地の住所のみを含む住所のリストを出力し、市民番号のリストに従って順序付けします。 アドレスの形式は次のとおりです。 Person Name/n CivicN Street Name ここCivicNは、「/」と大文字(10 10 / B)が続くことができる数です。必要に応じて、小文字を使用できます。 ストリート名が重複している場合、それらは異なるストリートと見なされます。 Church Road != Saint Lorenz Church Road 簡単にするために、残りのアドレスは省略します(すべてのメールで同じであると仮定) 最短の回答が得られるように、手紙は早く届けられなければなりません。 例: レイアウト : 1 1/B 3 5 7 9 11 13 ============================== 2 4 4/B 6 入力: "Tea Avenue" ["1","1/B","2","4","3","5","7","4/B","6","9","11","13"] ["Mrs. Pie …
12 code-golf  string 

6
途切れた言葉を修正する
St音は、私たちの多くが経験したか、少なくとも見たことがある問題です。有名な音声認識ソフトウェアのほとんどは、speaking音の話に関して深刻な問題を抱えていますが、st音は理解できますが、修正することはできず、そのまま書くだけのソフトウェアを想像してみましょう。 そのようなソフトウェアによって書かれたテキストの例は、次のようになります:「注意してください」。この例では、「注意」が元の単語であり、「ca ca」がthe音の単語です。 チャレンジ 元の単語を保持したまま、入力から単語を削除することにより、st音の単語を修正するプログラムまたは関数を作成します。たとえば、「注意してください」の修正バージョンは「注意してください」となります。 これはcode-golfであり、すべての言語で最短の答えが得られます! どもり言葉とは何ですか? St音にはさまざまなバリエーションがあります。ただし、この課題を簡単にするために、次のルールに制限します。 St音の単語は、元の単語の未完成の部分または全体である場合があります。「未完成の部分」とは、元の単語がst音の単語から正確に始まることを意味します。たとえば、「OPE」と「オープン」の両方がどもっための単語ことができ、「オープン」が、「ペン」以来の1にすることはできません「オープン」で始まらない「ペン」。 St音の単語には、少なくとも1つの「あいうえお」母音が含まれている必要があります。たとえば、「star」は「a」を含むため「start 」のst音の単語になりますが、「st」は上記の母音が含まれないためst音の単語にはなりません。 St音の単語は元の単語の前にのみ表示され、有効になるには少なくとも2回繰り返される必要があります(元の単語は繰り返しにはカウントされません)。たとえば、「oo open」は単語が途切れますが、「o open o」はそうではありません。元の単語の後の「o」はカウントされず、元の単語の前の「o」は少なくとも2回繰り返されないためです。「ゴーゴーゴーゴーゴーゴー」は、元の単語の前にst音の単語が5回繰り返されており、有効です。 繰り返しst音の単語の単一のセットに混合形式を含めることはできず、単語は互いに正確に一致する必要があります。たとえば、「op o op open」は、単語がcount音としてカウントされません。一方、「o op op open」は、最初の「o」がここではまったく異なる単語と見なされ、2つの「op」が「open」の st音単語としてカウントされるため、単語をst音にしています。 複数の有効な繰り返し単語が連続して繰り返される場合、最後の元の単語のみが残ります。たとえば、「ooo op op op open」では、「oo o」の部分が最初の「op」の st音の単語と見なされるため、削除してから「op op op」を「open」のopen音の単語と見なします「彼らは、あまりにも除去しなければならないので、唯一の『オープン』どもっ言葉を除去した後に残されます。繰り返しst音単語の複数の有効なセットが左から右にのみ発生すると想定できるため、「op op ooo open」を修正すると「op op open」(別名 入力 入力は、ASCII英語文字(az)、数字(0-9)、およびスペース文字のみを含む1行の文字列です。文字の大文字小文字は重要ではなく、小文字、大文字、またはその両方を受け入れることができますが、大文字小文字は同じままにして、出力で変更することはできません。 ["l","i","s","t"," ","o","f"," ","l","e","t","t","e","r","s"]文字列の代わりに文字のリスト(など)を使用できますが、単語のリストは使用できません。言語の入力構造が異なる場合は、それを使用します。重要なのは、入力を単語で区切るべきではないため、一部の言語で単語を区切るコストが実際に他の創造的なソリューションを引き起こす可能性があるということです。 入力には、何も含まれないか、1つまたは複数のst音が含まれる場合があります。 単語や数字は単一のスペースで区切られ、入力には隣同士に二重のスペースは含まれません。 出力 文字列、文字のリスト、または言語内の適切な構造で、st音の単語はすべて入力から削除されます。 出力ワードは、正確に1つのスペースで区切る必要があります(入力と同じ)。 単一の先頭と末尾の改行またはスペースが許可されます。 標準的な抜け穴は禁止されています。 テストケース …
12 code-golf  string 

20
お問い合わせ回答者
オリジナル:https : //james-iry.blogspot.co.at/2009/05/brief-incomplete-and-mostly-wrong.html Alain Colmerauerは、論理プログラミング言語Prologを設計しました。彼の目標は、2歳の子供と同じくらいインテリジェントなプログラミング言語を作成することでした。彼が目標を達成したことを証明するために、彼はすべての問い合わせに対して「いいえ」と答えるPrologプログラムを提示しました。 何でも聞いて! ?- (もちろん彼はしませんでした。)あなたの仕事は、Alain Colmerauerのプログラムよりもインテリジェントなプログラムを作成することです。これはPrologにある必要はありません。 仕様 入力が終了し?、少なくとも1つある,場合、最後から最後,までのテキストを返します?。 それ以外、入力が?returnで終了する場合No。 それ以外の場合、戻りYesます。 ルール 標準的な抜け穴はありません。 入出力は、標準の入出力メソッドを介して取得されます。 あなたのプログラムは、少なくとも1つの問い合わせが必要です。 処理された照会を出力する必要があります。 YesとNoのは、実施例において、大文字と小文字が区別されています。 入力にが含まれる場合、入力には?1つのみが含まれ、?常に最後の文字になることが保証されます。 入力は常にフレーズ/センテンスになります。このフレーズ/文は文字のみが含まれることはありません,と?、例えば,、?、および,?有効な入力ではありません。(とにかく、サブミッションはそれを実装するかもしれませんが、これらの場合、フレーズ/センテンスは空の文字列です。) また、入力がで終わることはありません,?。 最後の,直後または空白の直前に空白がある場合は?、出力に含める必要があります。 例 Hmm. -> Yes Alright, -> Yes Ask me anything! -> Yes Ask me a question, please! -> Yes Are you okay? -> No No? -> No …
12 code-golf  string 

13
MalbolgeからMalbolgeへの翻訳者を正規化
このタスクでは、正規化Malbolgeプログラムを取得し、結果のMalbolgeプログラムを出力するプログラム/関数を作成します。(これは、すべてのMalbolgeプログラマが使用している秘密のツールです!) 入力 (何らかの形で)正規化されたMalbolgeプログラムを表すデータ構造。 出力 結果のMalbolgeプログラムを表すデータ構造。 例 jpoo*pjoooop*ojoopoo*ojoooooppjoivvvo/i<ivivi<vvvvvvvvvvvvvoji (=BA#9"=<;:3y7x54-21q/p-,+*)"!h%B0/.~P<<:(8&66#"!~}|{zyxwvugJ% jjjj*<jjjj*<v ('&%#^"!~}{XE jjjjjjjjjjjjjjjjjjjjjjj*<jjjjjjjjjjjjjjjjjjjjjjjj*<v ('&%$#"!~}|{zyxwvutsrqpnKmlkjihgfedcba`_^]\[ZYXWVT1| 変換方法 正規化されたMalbolgeプログラムを反復処理し、各文字に対して次の手順を実行します。 文字列の文字*jpovi</をの対応する文字に置き換え'(>DQbcuます。(すなわち、マップ*に'、jへ(、など)。 次に、文字のASCIIコードからプログラムカウンターの現在の位置(つまり、現在の前の文字数)を減算します。 結果のASCIIコードが33未満の場合は、94ずつ増やし、少なくとも33になるまで繰り返します。 結果の文字を出力に追加します。 ルール これは、コードとゴルフのコンテストです。最短の答えが勝ちます。 標準的な抜け穴はありません。 デフォルトのI / Oメソッドが許可されています。 入力には文字のみが含まれます*jpovi</。
12 code-golf  string 

8
ジミーには新しい靴が必要です!
ジミーは先週、これら すべてのプラットフォーム と ロープで忙しくしており、貧しいジミーには足や足さえありません! あなたの仕事は、複数のジミーを含むストリングを取り、足と靴を与えることです! ジミー文字列の形式で入力を取得する ジミー・ストリング=> /o\ /o\ /o\ とのみ/o\を 含む 入力の各ジミーに次のような足を与えます。 /o\ _/ \_ 次のように、入力されたフローティングヘッドジミー文字列をフィート文字列付きジミーに変換します。 // Input /o\ /o\ /o\ // Output /o\ /o\ /o\ _/ \_ _/ \_ _/ \_ 2人のジミーが近くにいる場合、部屋を空けるために移動しなければなりません。ジミーは常に右に移動して他のジミーの部屋を空けます。 // Input /o\/o\ // Output /o\ /o\ _/ \__/ \_ 遠くにいる他のジミーは、必要でない限り移動してはいけません // Input /o\/o\ /o\ // …

30
最後に入力されたバイトを印刷
チャレンジ 入力バイトの1つの文字列があり、その中の最後のバイトを出力します。 ルール あなたの提出は、入力の最後のバイトを出力するプログラムまたは関数である可能性があります 文字列、標準入力、またはコマンドライン引数のいずれかであり、 空ではありません。 私はこれをBrainfuckで解決しようとしていましたが、すべての言語が参加できます。これはcode-golfです。 例 "?" -> "?" "29845812674" -> "4" カタログ この投稿の下部にあるスタックスニペットは、a)言語ごとの最短ソリューションのリストとして、b)全体的なリーダーボードとして、回答からカタログを生成します。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 ## Language Name, N bytes N提出のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: ## Ruby, <s>104</s> <s>101</s> 96 bytes ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。 ## Perl, 43 + 2 (-p flag) = 45 bytes 言語名をリンクにして、スニペットに表示することもできます。 ## [><>](https://esolangs.org/wiki/Fish), 121 bytes コードスニペットを表示 /* Configuration */ var …
12 code-golf  string 

8
ブラックジャックバスト計算機
21としても知られるブラックジャックは、自分とディーラーのカードゲームを比較するもので、各プレイヤーは順番にディーラーと対戦しますが、プレイヤーはお互いに対戦しません。 プレイは次のように行われ、ディーラーはあなたにカードを配ります。次に、ディーラーは自分自身にカードを伏せて配ります。ディーラーはあなたに別のカードを配ります。そして最後に、ディーラーは自分自身にカードを表向きに配ります。 チャレンジ あなたの課題は、ディーラーが与える次のカードが破産する確率を実行(または呼び出し)、出力(またはリターン)するプログラム(または関数)を書くことです。ディーラーから21枚以上の別のカードが渡されます。 入力 プレイ中の3枚の目に見えるカード。それらはあなたが手に持っている2枚のカードと、ディーラーの手にある1枚のフェイスカードです。これは、アプリケーションに適した任意の形式にすることができます。 デッキには52枚のカードがあります(以下の各カードのうち4枚)。カードの価値は次のとおりです。 Symbol(Case Insensitive) Name Value 2 Two 2 3 Three 3 4 Four 4 5 Five 5 6 Six 6 7 Seven 7 8 Eight 8 9 Nine 9 T Ten 10 J Jack 10 Q Queen 10 K King 10 A or 1 …

9
BigNumベイクオフリブート
皆さんの中には、BigNum Bakeoffに精通している人もいるかもしれません。目標は、多少の制約と理論的条件、たとえばプログラムを実行できるコンピューターの下で、出力が最大になるCプログラムを作成することで多少要約できます。 同じ精神で、私はすべての言語に開かれた同様の課題を提起しています。条件は次のとおりです。 最大512バイト。 最終結果はSTDOUTに出力する必要があります。これがあなたのスコアです。複数の整数が出力される場合、それらは連結されます。 出力は整数でなければなりません。(注:Infinityは整数ではありません。) 10を超える組み込み定数はありませんが、数字/桁は問題ありません(たとえば、Avogadroの定数(組み込み定数として)は無効ですが、10000は無効です)。 実行するのに十分なリソースが提供されたら、プログラムを終了する必要があります。 実行するのに十分なリソースが提供される場合、印刷出力は確定的でなければなりません。 プログラムを実行するのに十分な整数またはbigintが提供されます。たとえば、プログラムで10 1,000,000より小さい数値に基本操作を適用する必要がある場合、これを実行しているコンピューターは少なくとも10 1,000,000までの数値を処理できると想定できます。(注:最大10 2,000,000までの数値を処理するコンピューターでプログラムを実行することもできます。そのため、コンピューターが処理できる最大整数を呼び出しても、確定的な結果は得られません。) 5秒未満でプログラムの実行を完了するのに十分な計算能力が提供されます。(プログラムがコンピューターで1時間実行されていて、すぐに終了しない場合でも心配する必要はありません。) 外部リソースはないので、組み込みでない限り、そのアッカーマン関数をインポートすることを考えないでください。 すべての魔法のアイテムは一時的に寛大な神から借りています。 限界が不明で非常に大きい スティーブンH、ピス f 3 +B³F+ω²(256 26) ここで、B³Fは、次の基本シーケンスを持つChurch-Kleene序数です。 B³F[n] = B³F(n), the Busy Beaver BrainF*** variant B³F[x] = x, ω ≤ x < B³F リーダーボード: 単に美しいアート、ルビー F ψ 0(X(Ω M + X(Ω M + 1 …

7
あなたのためにアナグラムをゴルフしてください!
タスク この課題では、ランダムに選択されたアナグラムの1つを均一な分布で出力するコードを作成しますが、それ自体は出力しないでください。 精緻化 入力がない場合、プログラムはソースコードのアナグラムのいずれかを出力する必要があります。あなたのプログラムは、それ自身のソースをそのまま出力するべきではありません。つまり、それは決して馬であってはなりません。 入力 プログラムは何も入力してはいけません。ただし、必要に応じて言語で入力が必要な場合は、小文字が入力されると想定できますa。ただし、入力を使用しないでください。 出力 プログラムは、変数に書き込む以外の方法で出力できます。ファイル、コンソール、画面などへの書き込みが許可されています。機能returnも許可されています。 追加の規則 プログラムのソースコードには、少なくとも3 文字(3バイトではない)が必要です。 プログラムのソースコードには、少なくとも3つのアナグラムが含まれている必要があります(それ自体を除く)。たとえば、(および)以外のアナグラムが2つしかaabないため、有効な送信としてカウントされません。aabaabbaaaba プログラムはエラーを生成してはなりません。 あなたのプログラムはアナグラムを正確に出力するはずです。 標準の抜け穴と標準のクインルールが適用されます。 例 プログラムのソースコードがであるとしますabc。次のいずれかをランダムに出力する必要があります(均一な分布): acb bca bac cba cab そして、それは決して出力すべきではありませんabc。 受賞基準 これはcode-golfなので、バイト単位の最短コードが勝ちです!同点の場合、以前に投稿されたソリューションが勝ちです!

4
///でのゴルフのヒント
///でゴルフをするための一般的なヒントは何ですか?私はコードゴルフの問題に適用でき、少なくとも///に特定のアイデアを探しています(たとえば、「不要な空白を削除する」は答えではありません)。itflabtijtslwiとLinesのヒントはトピックに基づいており、ここでも有効です。 回答ごとに1つのヒントを投稿してください。
12 code-golf  tips 

1
気違いの化学者と賢いプログラマー
バックストーリー あなたは化学実験室でめまいを起こし、古い気違いの化学者に誘されたことに気づきます。彼は彼の年齢のために非常によく見えないので、彼はあなたに彼のために働きたいと望み、その時だけ、あなたは実験室から逃げることができる。 仕事 入力として化学式が与えられる分子の構造式を返すのはあなたの仕事です。炭素()、酸素()および水素()原子のみが入力として使用されることに注意してください。化学式とは異なり、a は有効な量指定子であり、a は省略できません(たとえば、有効な入力ですが、そうではありません)。COH01C1H4O0CH4 あいまいさを防ぐために、二重結合と三重結合が分子に現れないと仮定します。すべての炭素原子には4つの単結合、すべての酸素原子には2、水素原子には1つの単結合が必要です。また、O-O債券も存在しないと想定しています。分子は存在する必要も安定している必要もありません。 3出力の表示の明るさを確保するために、入力に炭素原子以上が含まれることはありません。 中断することなく、炭素原子が直線に配置されている分子のみを表示する必要があります。エルゴ、C-O-C絆なし。 前のルールで除外されていない可能性のあるすべての分子を返す必要があります。無効な入力を処理する必要はありません。 次の例は、その分子に対して処理する必要があるすべてのソリューションを表示します。 分子の式の1つのページの平面での180度の回転は冗長性と見なされ、表示する必要はありません。 以下の例では、分子に可能なすべての式を示し、表示する必要のない式を指摘します。 例 入力: C2H6O2 まず、この入力に使用できるすべての式を以下に示します(@Jonathan Allanに感謝します) 01 H | O H | | H - O - C - C - H | | H H 02 H | H O | | H - O - C …

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