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

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

28
最初に彼らが来た
「最初に来た...」は、マーティン・ニーモラーの詩です。 First they came for the Socialists, and I did not speak out- Because I was not a Socialist. Then they came for the Trade Unionists, and I did not speak out- Because I was not a Trade Unionist. Then they came for the Jews, and I did not speak …

20
インターキン-ループで互いに出力する2つのプログラム
プログラムAは実行時にプログラムBのコードを出力し、BはAのソースを出力します。 要件: 両方のプログラムで1つの言語のみ プログラムは異なります。それ自体を出力する1つのプログラムは資格がありません。 両方のプログラムは空ではないか、少なくとも1バイトの長さです。ソースと出力の両方の末尾の改行は無視されます stdinは閉じられています。何も読まないでください(したがって、ソースを読み取って操作することはできません)。出力は標準出力に送られます。 編集: stdinはに接続されてい/dev/nullます。明確になっている場合は、閉じるように注文できます。 random関数を使用しないでください。 追加: 可能であれば説明する スコアは全長です。プログラムに影響しない場合、末尾の改行はカウントされません。
29 code-golf  quine 

30
それは蝶の数字ですか?
Sphenic Numberは、正確に3つの異なる素数の積である数値です。最初のいくつかのSphenic番号は30, 42, 66, 70, 78, 102, 105, 110, 114です。これは、OEISのシーケンスA007304です。 あなたのタスク: 入力された整数がSphenic数であるかどうかを判断するプログラムまたは関数を作成します。 入力: 0から10 ^ 9までの整数。これは、スフェニック番号である場合とそうでない場合があります。 出力: 入力がSphenic Numberかどうかを示す真実/偽の値。 例: 30 -> true 121 -> false 231 -> true 154 -> true 4 -> false 402 -> true 79 -> false 0 -> false 60 -> false 64 -> false …

28
連結カウント
あなたの課題は、書くことですNのあなたが最初に連結する際に、というようなコードのスニペットK ≥1一緒に、彼らは数を生み出すKを。Nが高いほど良い。キャッチは次のとおりです。スニペットで文字を複数回使用することはできません。 ルール 1つのスニペットで同じ文字を複数回使用できます。 これらのスニペットは、スキップせずに、提示された順序で連結する必要があります。 少なくとも2つのスニペットを作成する必要があります。 すべてのスニペットは同じ言語である必要があります。 注意:スニペットは完全なプログラムや機能である必要はなく、独自に機能する必要もありません。-1Javaの有効なスニペットです。たとえば 結果の連結はすべて、それぞれのK値を出力する必要があります。 勝者は最高のN値を持つ人です。タイブレーカーは、バイト単位のプログラム全体の最短の長さです。 例 スニペットたと仮定しAD、xc、123、と;l。次に: AD 生産すべき 1 ADxc 生産すべき 2 ADxc123 生産すべき 3 をADxc123;l生成する必要があり4ます。 このプログラムのスコアは4です。

8
重力ソートを実行する
チャレンジ 整数のリストが与えられたら、重力ソートがどのように行われるかを示します。 重力ソート 重力ソートでは、数字をアスタリスクの行として想像してください。その後、すべてが落ち、新しい行が明らかにソートされます。例を見てみましょう: [2, 7, 4, 6]: ** ******* **** ****** ------- ** **** ******* ****** ------- ** | 2 **** | 4 ****** | 6 ******* | 7 これは、ほとんど並列化されたバブルソートであることに注意してください。 正確な仕様 各反復で、一番上の行から開始し、その下にアスタリスクのない行からすべてのアスタリスクを取得し、行の下に移動します。リストがソートされるまでそれを続けてください。 入力 入力は、厳密に正の整数のリストになります。 出力 出力については、各ステップを出力する必要があります。任意の2つの非空白印刷可能ASCII文字を選択できます。1つは「アスタリスク」で、もう1つは分離する「ダッシュ」です。アスタリスクの行は、ある種の標準改行(\nまたは\r\f)で区切る必要があります。ダッシュの行は、少なくとも最も広い行の幅である必要があります(そうしないと、アスタリスクが下がりすぎます!)。一番下のダッシュの列はオプションです。末尾の改行は許可されます。各行の末尾のスペースは許可されます。 テストケース 入力はリストとして表され、出力はすぐ下にリストされます。テストケースは二重改行で区切られています。 [4, 3, 2, 1] **** *** ** * ---- *** ** …

28
モノリスの高さは?
モノリスの入力の例を次に示します。この例には4つあります。 _ | | _ | | _ | | | | | | | | _ _| |_| |___| |____| |_ 最初のモノリスの高さは4ユニット、2番目は2ユニット、3番目は3ユニット、最後は1ユニットです。 タスク プログラムは、モノリスの高さを左から右の順に出力する必要があります。出力形式は、任意の種類のリストまたは配列にすることができます。 ノート 入力は、任意の次元の文字列、文字列のリスト、または文字のリストとして取得できます。 これはcode-golfであるため、最低バイトが勝ちます。 モノリスは常に同じ幅を持ち、常に少なくとも1つ_離れていると仮定する必要があります。 それらはどんな高さでも、どんな数量でも来ることができます。 I / O _ | | _ | | _ | | | | | | | | _ _| …

26
階段番号
階段番号は正の整数xで、そのn番目の桁(最下位桁から始まるインデックス付き)はx%(n + 1)に等しくなります。それはちょっと一口なので、例を見てみましょう。テイク7211311を我々はモジュラー残基取る場合、7211311の範囲に2-8私たちは以下のようになります。 7211311 % 2 = 1 7211311 % 3 = 1 7211311 % 4 = 3 7211311 % 5 = 1 7211311 % 6 = 1 7211311 % 7 = 2 7211311 % 8 = 7 これらは7211311の数字です!したがって、7211311は階段番号です。 仕事 入力として正の数を与えたときに取るコードを書くと、2つの異なる値が出力されます。1つは階段番号であり、もう1つはそうでない場合です。 これはコードとゴルフの競合なので、目的はソースコードのバイト数を最小限にすることです。 テストケース 最初の13の階段番号は次のとおりです。 1, 10, 20, 1101, 1121, 11311, …

29
チキンマクナゲット番号
説明 チキンマクナゲットの番号は、6、9、または20の合計として表現できる番号です。これは、マクドナルドが販売している有名なチキンマクナゲットボックスの初期サイズです。その合計では、数字は複数回出現する可能性があり、その6 + 6 = 12ような数字も同じであり、数字は前述のサイズの少なくとも1つを「含む」必要があります。最初のチキンマクナゲット番号は次のとおりです。 6 9 6 + 6 = 12 6 + 9 = 15 9 + 9 = 6 + 6 + 6 = 18 20 6 + 6 + 9 = 21 ... チャレンジ あなたの仕事はプログラムまたは関数を書くことです。それは、正の整数が与えられると、この数が記述された方法で表現できるかどうかを決定します。したがって、そのようなチキンマクナゲット数です。次に、その決定に基づいて、真の値または偽の値を出力する必要があります。 テストケース 6 -> true 7 -> false 12 -> true …

11
切断するワイヤー
このタスクは、一連の条件の圧縮と処理に関するものです。 Keep Keepinging and Nobody Explodesのゲームでは、爆弾デフューザーは、複雑な爆弾処理マニュアルを参照する専門家によってリレーされた指示の助けを借りて爆弾を武装解除しなければなりません。この課題は、マニュアルの5ページで説明されているモジュール「ワイヤの主題」を扱います。デフューザーには、色付きのワイヤーの配列が表示されます。そのうち1つだけが安全に切断できます。残りは爆弾を爆発させます。 コードは、「ワイヤ切断規則」で再現されたマニュアルの指示に従って、ワイヤの数と色に基づいて切断するワイヤを決定するエキスパートとして機能します。 入力:大文字で表される、3、4、5、または6ワイヤー色の順序付きリストまたはストリング: B: ブラック U: 青い R: 赤 W: 白 Y: 黄 青はUであることに注意してくださいB。 入力には、爆弾のシリアル番号の最後の桁が奇数であるかどうかのビット(True / Falseまたは0/1)も含まれます。これは、いくつかのルールで使用される条件です。 ワイヤの数を個別の入力として使用するのではなく、リストまたは色の文字列から取得する必要があります。おそらくあなたの言語がどれくらいの長さかわからない場合、リストまたは文字列に色の後にターミネータ要素を含めることができます。このターミネータは、追加情報をエンコードしない固定値である必要があります。 出力:切断するワイヤを示す1〜6の数字。これはゼロインデックスではないかもしれません。 ワイヤー切断規則:これらの規則は、デファスラルマニュアルの 5ページから複製されています。 3 wires: If there are no red wires, cut the second wire. Otherwise, if the last wire is white, cut the last wire. Otherwise, …

22
この値は、一意のコインやメモで作成できますか?
整数として入力された金銭的価値が、コインや紙幣の一意の組み合わせで表現できるかどうかを計算するプログラムを作成します。これは、同じコイン/紙幣を複数回使用できないことを意味します。 プログラムは入力として値を取る必要があり、入力または言語の配列に相当するものを介してコイン/紙幣の値のリストを取ることができます。硬貨/紙幣のリストは変更できるはずですので、定数を使用している場合は、これがどこで定義されているかを明確にしてください。 プログラムは、真偽値を出力する必要があります。 値を構成する硬貨/紙幣のリストを出力する必要はないことに注意してください。 例 英国ポンドを使用(£1.00 = 100および£420.69 = 42069) coins = [1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000] 以下はtrueを出力します: 6 (1, 5) 15 (10, 5) 88 (1, 2, 5, 10, 20, 50) 512 (500, 10, 2) 7003 (5000, 2000, 2, 1) 以下はfalseを出力します: 4 209 …
29 code-golf  math 

30
2つの文字列を「乗算」する
これは、言語Add ++に最近追加した関数に触発されました。したがって、Add ++で短い回答を送信しますが、勝った場合は受け入れません(公平ではありません) 数字を掛けることはできるが、文字列は掛けられないときは嫌いではありませんか?だから、あなたはそれを修正するべきですよね? 入力として2つの空でない文字列を取り、乗算されたバージョンを出力する関数または完全なプログラムを作成します。 文字列をどのように乗算しますか?私が教えてやろう! 2つの文字列を乗算するには、2つの文字列を取り、各文字を比較します。次に、最高のコードポイントを持つ文字が出力に追加されます。それらが等しい場合は、単に文字を出力に追加します。 文字列の長さが等しいとは限りません。長さが異なる場合、最終文字列の長さは最短文字列の長さになります。入力は常に小文字で、0x20 - 0x7E大文字を除く印刷可能なASCII範囲内の任意の文字()を含めることができます。 文字列、リストなど、合理的な形式で出力できます。賢明なことに、整数はこのチャレンジで出力する賢明な方法ではありません。 入力を持つhello,とworld!、これは、それがどのように動作するかです hello, world! w > h so "w" is added ("w") o > e so "o" is added ("wo") r > l so "r" is added ("wor") l = l so "l" is added ("worl") d < o so …
29 code-golf  string 

2
パックマンがパックドットを数えるのを助ける
パックマンは太りすぎを心配しているパックマンさんのアドバイスで、パックドットの毎日の摂取量を追跡することにしました。彼が迷路の所定のパスにあるPac-Dotsの数を数えるのを助けてください! 迷路 迷路の独自のエンコーディングを構築するために、ここで生データを取得できます。 パックマンの旅 この課題の文脈では、次の規則が適用されます。 まず、朗報です。幽霊はいません。 パックマンは常に上の写真に示されている位置からレースを開始し、東に向かいます。開始位置にはPac-Dotはありません。 彼はまっすぐな道を進んでいる限り、次のマスに進み続けます。 他の使用可能な経路(マップ上のオレンジ色の正方形)がない状態で90度の回転に遭遇すると、自動的かつ体系的に回転します。 複数のパスが利用可能なジャンクション(マップ上の緑の四角)に遭遇すると、同じ方向に進むか(該当する場合)、別の方向(Uターンを含む)を選択します。 パックマンが迷路の中央左側または中央右側の出口の1つを通過すると、すぐに反対側に現れます。 パックマンは、自分がたどる経路上のすべてのパックドットを食べます。パックドットが食べられると、迷路から取り除かれます。 チャレンジ 入力 パックマンが到達するジャンクションでのパックマンの動作を説明する文字列が与えられます。この文字列は、次の文字で構成されます。 L:左に90°回転します R:右に90度回転します F:前進(方向変更なし) B:後退(Uターン) すべてのキャラクターが処理されると、パックマンは次のジャンクションで停止します。 出力 入力パスに沿って食べられるPac-Dotsの数を印刷または出力する必要があります。 ルール 完全なプログラムまたは関数を作成できます。 入力は、文字列または文字の配列として、大文字または小文字で入力できます。で他の文字(ただし、方向ごとに1文字のみ)または整数を使用することもできます[0 .. 9]。その場合は、回答で明確に指定してください。 入力は常に有効であると想定できます。(以下のjsFiddleはエラーを検出しますが、そうする必要はありません。) これはコードゴルフなので、バイト単位の最短コードが優先されます。 標準的な抜け穴は禁止されています。 ヒント 迷路の正確な形状を保存する必要はなく、最適でもない場合があります。 テストケースとデモ このjsFiddleでは、次のテストケースまたはその他の入力をテストできます。 1. Input : "" Output : 1 Comment: Pac-Man just advances to the first junction, eats …

5
木々の森が見えない
樹木を描画するプログラムまたは関数を作成して、森林を構築します。 木はピラミッドを積み重ねるように描かれます。最初(一番上)の行が含まれている1木を、次の行の下には含まれ2(合計3)、次が含まれている3(合計6)など。行全体を完成させるのに十分な木がない場合は、左に記入し、右側のスポットを空のままにします。さらに、下位レベルのツリーは、その配置のために上位レベルのツリーとわずかに重なります。 これはサイズの森です 1 /\ //\\ ///\\\ || || これはサイズの森です 2 /\ //\\ /\///\\\ //\\ || ///\\\|| || || これはサイズの森です 3 /\ //\\ /\///\\\/\ //\\ || //\\ ///\\\||///\\\ || || || || これはサイズの森です 4 /\ //\\ /\///\\\/\ //\\ || //\\ /\///\\\||///\\\ //\\ || || ///\\\|| || || || これはサイズの森です5(5番目のツリーの上部が最初のツリーの幹を覆っていることに注意してください) /\ …

21
インデックスと値を交換する
タスク 入力が整数のリスト/配列Xであり、出力が整数Yのセットのリストであるプログラムまたは関数を記述します。これにより、各セットY [ i ]の各要素eに対して、X [ e ] = i、Yのセットの要素の総数がXの要素の数と等しくなるようにします。 (これは基本的にハッシュテーブル/辞書を逆にするのと同じ操作ですが、代わりに配列に適用されます。) 例 これらの例では1ベースのインデックス付けを想定していますが、必要に応じて0ベースのインデックス付けを代わりに使用できます。 X Y [4] [{},{},{},{1}] [1,2,3] [{1},{2},{3}] [2,2,2] [{},{1,2,3}] [5,5,6,6] [{},{},{},{},{1,2},{3,4}] [6,6,5,5] [{},{},{},{},{3,4},{1,2}] 明確化 必要に応じて、セットをリストとして表すことができます。その場合、要素の順序は重要ではありませんが、要素を繰り返すことはできません。 妥当な明確なI / O形式を使用できます。たとえば、セットの要素をスペースで区切り、セット自体を改行で区切ることができます。 Yは有限長で、少なくともXのすべての要素を配列インデックスとして持つのに十分な長さでなければなりません。ただし、Xの最大要素よりも長くなる場合があります(余分な要素は空のセットになります)。 Xの要素はすべて有効な配列インデックスになります。つまり、0ベースのインデックスを使用する場合は負でない整数、1ベースのインデックスを使用する場合は正の整数になります。 勝利条件 コードゴルフの挑戦、短い方が良いです。

9
OEISシーケンスを表示する
整数列のオンライン百科事典(OEIS)は、整数系列のオンラインデータベースです。数学的に興味深い280000近くのシーケンスが含まれています。 シーケンスの例: 正の整数(A000027) 素数(A000040) フィボナッチ数(A000045) あなたの仕事は、できる限り多くのOEISシーケンスを表示するプログラムまたは関数を、最大100バイトのソースコードで記述することです。プログラムは、入力としてシーケンスID(先頭Aとゼロなし)を受け入れ、そのシーケンスの最初の20個の数値を出力する必要があります。 OEIS Webサイトから直接データを取得することは許可されていません。すべてのシーケンスはコードで計算する必要があります。 得点 スコアは、プログラムが表示できるOEISシーケンスの数です。回答には、プログラムが認識するシーケンスのIDをリストする必要があります。 例 Java 8の有効な答えは次のとおりです。 (int a) -> { for (int i = 0; i < 20; i++) { System.out.println(a==27?i+1:i*i); } }; このプログラムは、正の整数(A000027-入力27)と二乗(A000290-入力290)を表示できるため、スコアは2です。 注意 OEIS Webサイト全体をスクレイピングしないようにしてください:-) シーケンス名(約3メガ)またはシーケンス値(約9メガ)をダウンロードできます。このダウンロードは、OEISエンドユーザーライセンス契約の対象です。

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