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

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

13
配列データのグループ化
整数行列aと非負の整数を指定すると、番目の列の個別の値を、その列の値を持つ人の行にiマッピングするマッピングbを出力します。iaai あなたはそれiが半開の範囲内にある[0, num_cols(a))か(または[1, num_cols(a)]1ベースのインデックスを使用することを選択した場合)、すべての整数が言語の表現可能な範囲内にあると仮定することができます。入力と出力は、チャレンジの基本的な要件(2D配列-> intから2D配列のintへのマッピング)を満たす限り、合理的な方法で実行できます。マッピングが明確で一貫している限り、キーを出力に含める必要はありません。 例 [[1]], 0 -> {1: [[1]]} [[3, 4, 5], [1, 4, 2], [5, 5, 5], [7, 7, 7], [1, 5, 9]], 1 -> {4: [[3, 4, 5], [1, 4, 2]], 5: [[5, 5, 5], [1, 5, 9]], 7: [[7, 7, 7]]} [[1, 2, 3, 4, …

12
文字列と数字を楽しもう
プログラミングパズルは次のとおりです。 たとえば、文字列と対応する番号のペアのリストが与えられた場合、[[A,37],[B,27],[C,21],[D,11],[E,10],[F,9],[G,3],[H,2]]次の方法で文字列のみを持つ別のリストを出力します。 文字列の総数は、入力データの対応する数と正確に等しくなければなりません。 シーケンス内で文字列が隣接して繰り返されてはならず、すべての文字列が出力リストに表示される必要があります。 次の文字列の選択は、2つのルールを超えない限り、ランダムに実行する必要があります。各ソリューションには、選択されるゼロ以外の確率が必要です。 組み合わせが不可能な場合、出力はになります0。 入力リストは任意の順序(ソート済みまたは未ソート)で指定でき、リスト内のストリングの長さは任意です。 上記のサンプル入力1のサンプル出力 [A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,B,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,A,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,D,C,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,F,E,G,H,G,H,G] 入力サンプル2: [[A,6],[B,1],[C,1]] 2番目の入力の出力: 0 ルールに基づいて可能なリストがないため サンプル入力3: [[AC,3],[BD,2]] 有効な出力: [AC,BD,AC,BD,AC] 無効な出力: [AC,BD,AC,AC,BD] さらに説明が必要な場合は、コメントで私に伝えることをheしないでください、私はすぐにそれに応じて行動します。 これはcode-golfなので、各言語のバイト単位の最短コードが勝ちです!

7
重さの山
チャレンジ: 入力としてウェイトの山のASCIIイメージが与えられ、パイルの組み合わされたウェイトを出力する必要があります。 フォーマット: 計量5点の異なる重みがあり、1、2、5、10、20 Passerees(または他の何らかの任意単位)。 重みは、昇順で次のようになります。 1: __ |__| 2: ______ |______| 5: ______ | | |______| 10: ______________ | | |______________| 20: ____________________ | | |____________________| 計量物は(例の画像のように)対称的に配置され、必ずしもソートされた順序ではありません。該当する場合、重量は境界を共有します。 テストケース: すべての単一ウェイトをテストケースとして使用することもできます。 __ _|__|_ |______| | | |______| 1 + 2 + 5 = 8 ____________________ | | |____________________| | | |______________| …

1
すべての光すべての光すべての光!
このチャレンジはされて完全に食い物に大きく触発され た全ての光 Soulgitゲームによって開発されました、。 チャレンジ あなたは電気技師であり、すべてのライトをバッテリーに接続するのはあなたの仕事です。 ライトとバッテリーは格子状に配置されています。 ライトまたはバッテリーを、その北、南、東、および西の最も近いライトまたはバッテリーに接続できます。 バッテリーにはいくつでも接続できます。 各ライトは、必要な接続数を指定します。そのライトと正確に同じ数の接続を行う必要があります。 2つのライト(またはライトとバッテリー)間の単一接続または二重接続を作成できます。 ワイヤーは交差できません。 各ライトからバッテリーへのパスが必要です。 少なくとも1つの有効なソリューションが存在することが保証されています。 バッテリーと各ライトの位置、および各ライトに必要な接続の数が与えられたら、これらのプロパティを認めるそれらの間の接続を出力します。 勝利条件 これはcode-golfであるため、各言語で最も短いコードが優先されます。 テストケース I / Oは通常どおり柔軟です。 入力には、ライト用の正の整数、空白用のゼロ、およびバッテリー用の-1を格納するグリッドのサイズの2D配列を使用します。別の良い選択としては、ライトのリストがあります。ライトは、ライトの位置と必要な接続の数を含むタプルです。 出力には、接続のリストを使用します。接続は、開始位置と終了位置を含むタプルです。接続が2倍になった場合、リストに2つあります(別のオプションは、このパラメーターをタプルに含めることです)。別の良いオプションは、ある種のグリッドレイアウトです。 座標系を使用している場合は、開始インデックスとインデックス元を指定できます。私の例は0からインデックス付けされ、左上隅(行、列)として(0、0)を使用します。(私は{}を単に別のタイプの区切り文字を導入するために使用しているので、セットであるためではなく、読みやすくなっています。) テストケースのグラフィカルビューを次に示します。テスト1〜12 テスト1: [-1 | 0 | 1 ] => [{(0, 0), (0, 2)}] テスト2: [-1 | 0 | 2 ] => [{(0, 0), (0, 2)}, {(0, 0), …
13 code-golf 

30
プライムパワーからプライムを回復する
定義:素数はp nの形式で表現できる自然数です。pは素数で、nは自然数です。 タスク:プライムパワーp n > 1の場合、プライムpを返します。 テストケース: input output 9 3 16 2 343 7 2687 2687 59049 3 得点:これはcode-golfです。バイト単位の最短回答が優先されます。
13 code-golf  arithmetic  primes  king-of-the-hill  python  board-game  code-golf  number  subsequence  code-golf  ascii-art  code-golf  array-manipulation  decision-problem  grid  fastest-algorithm  logic-gates  logic  code-golf  cards  code-golf  rational-numbers  code-golf  math  number  sequence  code-golf  array-manipulation  integer  code-golf  number  array-manipulation  code-golf  number  sequence  decision-problem  code-golf  ascii-art  number  code-challenge  sequence  arithmetic  sorting  code-golf  date  fastest-algorithm  code-golf  string  number  random  combinatorics  code-golf  combinatorics  code-golf  ascii-art  base-conversion  code-golf  array-manipulation  code-golf  string  code-golf  string  number  arithmetic  code-golf  kolmogorov-complexity  code-golf  string  array-manipulation  json  code-golf  puzzle-solver  code-golf  binary  graph-theory  code-golf  arithmetic  haskell  code-golf  string  cipher  code-golf  code-golf  string  parsing  alphabet  code-golf  string  code-golf  ascii-art  code-golf  string  number  code-golf  string  balanced-string 

3
ワード検索ソルバー
昨日、特定の単語検索をくまなく調べて答えを出力するプログラムを書くことができるかどうか疑問に思いました。実際、驚くほど簡単でした。今、私たちはどれだけ小さくできるのだろうか。 ルール 最初の入力は、n行の文字列またはコレクションであり、各行はn文字の長さです 2番目の入力は、パズルで見つけるための任意の形式の単語のリストです 検索リスト内のすべての単語はパズルに含まれていることが保証されています 単語は、4つの基本方向のいずれか、および前方と後方の両方に斜めに向けることができます。 大文字のAZ文字のみがパズルに存在します コードは、検索文字列内のすべての単語を検索し、開始文字の座標位置を出力する必要があります。0,0は左上の文字です。 同じ単語の複数のインスタンスを見つけた場合は、好きなように処理できます。複数回、または一度だけ出力します。それはあなた次第です 例/テストケース 次のボードを考えます: ABCD EFGH IJKL MNOP そして、次の検索文字列: ABCD,CGKO,POMN,NJF,AFKP,CFI,LGB,MJGD プログラムは、次の順序で出力します。 ABCD at 0,0 CGKO at 0,2 PONM at 3,3 NJF at 3,1 AFKP at 0,0 CFI at 0,2 LGB at 2,3 MJGD at 3,0 いつものように、最短回答が勝ちます

6
RGB to Xtermカラーコンバーター
256色のXterm互換端末は、通常の16システム色の上に240色を追加します。色16〜231は、辞書式に並べられた赤、緑、青の6つのレベル(0、95、135、175、215、255)を使用します。色232-255は、単純に24レベルのグレー(8〜238 x 10秒)です。私が話していることをよりよく理解するには、この表を参照してください。 チャレンジ 目標は、入力としてrgb値を取り、そのrgb値に最も近いXterm色に対応する数値を出力するプログラムまたは関数を作成することです。16のシステムカラー(色0〜15)は多くの場合カスタマイズ可能であるため、この変換から除外します。 「最も近い」色を明確に定義するには、赤、緑、青の成分に沿ってマンハッタン距離を使用します。たとえば、rgb(10, 180, 90)から20ユニット離れていますrgb(0, 175, 95)(色35)abs(10 - 0) + abs(180 - 175) + abs(90 - 95) == 20。入力色が2つ以上のXterm色の間で等しい場合、最高のインデックスを持つXterm色を出力します。 例 R G B Xterm 0 0 0 ==> 16 95 135 0 ==> 64 255 255 255 ==> 231 238 238 238 ==> 255 90 133 140 …
13 code-golf  color 

26
シンプルなゴルフ通訳
チャレンジ: あなたの仕事は、単純なゴルフ言語の簡単な通訳を作成することです。 入力: 入力は、スペースで区切られた文字列の形式になります。 スペース区切りを必要なものに置き換えることができます 出力: すべての操作を実行した後に得られた結果(数値または文字列)を出力します。複数の出力がある場合、結合して単一の結果(セパレーターなし)にします。変数の初期値は常にゼロです。すなわち:で始まる0 言語構文: この言語には次の演算子があります。 inc ---> add one to variable dec ---> remove one from variable mult ---> multiply variable by 2 half ---> divide the variable by 2 Pri ---> print the variable to console (or whatever your language has) exit ---> end the …

7
迷路のカットポイント
迷路は、任意の便利な形式で0(壁)と1(歩行可能な空間)のマトリックスとして与えられます。各セルは、4つ(またはそれ以下)の直交隣接ノードに接続されていると見なされます。連結成分は全て過渡互いに接続歩行セルの集合です。あなたの仕事は、カットポイントを特定することです-歩きやすいセルは、壁になった場合、接続されたコンポーネントの数を変更します。それらの位置でのみ1-sのブール行列を出力します。目標は、コードの最小バイトでそれを行うことです。 入力行列は、少なくとも3行3列で構成されます。そのセルの少なくとも1つは壁で、少なくとも1つは歩行可能です。関数またはプログラムは、TIO(または言語がTIOでサポートされていない場合は自分のコンピューター)で1分以内に以下の例を処理できる必要があります。 in: 11101001 11011101 00000001 11101111 11110101 00011111 10110001 11111111 out: 01000000 00001001 00000001 00000101 00110000 00010000 00000000 11100000 in: 1111111111111111 1000000000000001 1111111111111101 0000000000000101 1111111111110101 1000000000010101 1011111111010101 1010000001010101 1010111101010101 1010101111010101 1010100000010101 1010111111110101 1010000000000101 1011111111111101 1000000000000001 1111111111111111 out: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 …

13
算術サイクル
入力: 整数nである>=0か、>=1(f(0)任意です) 出力: n以下のシーケンスの'番目の番号、またはn'番目の番号までのシーケンス。 シーケンス: (0),1,-1,-3,0,5,-1,-7,0,9,-1,-11,0,13,-1,-15,0,17,-1,-19,0,21,-1,-23,0,25,-1,-27,0,29,-1,-31,0,33,-1,-35,0,37,-1,-39,0,41,-1,-43,0,45,-1,-47,0,49,-1,-51,0,53,-1,-55,0,57,-1,-59,0,61,-1,-63,0,65,-1,-67,0,69,-1,-71,0,73,-1,-75,0,77,-1,-79,0,81,-1,-83,0,85,-1,-87,0,89,-1,-91,0,93,-1,-95,0,97,-1,-99 このシーケンスはどのように構築されますか? f(n=0) = 0(オプション) f(n=1) = f(0) + nまたはf(n=1) = 1 f(n=2) = f(1) - n f(n=3) = f(2) * n f(n=4) = f(3) / n f(n=5) = f(4) + n など。 または擬似コードで: function f(integer n){ Integer result = 0 Integer i = 1 …

6
Brain-Flakへのテキスト
あなたの課題は、入力テキストを、テキストを出力するBrain-Flakコードに変換することです。 ここから許可を得てここから取られたチュートリアル Brain-Flakには、「左」と「右」として知られる2つのスタックがあります。アクティブなスタックは左から始まります。空のスタックがポップされると、0が返されます。それだけです。他の変数はありません。プログラムが起動すると、各コマンドライン引数がアクティブスタックにプッシュされます。 Brain-Flakプログラムで有効な文字はのみ()[]{}<>であり、常にバランスが取れている必要があります。関数にはNiladsとMonadsの 2種類があります。niladは 0の引数をとる関数です。すべてのniladsは次のとおりです。 () 1に評価します。 [] 現在のスタックの高さを評価します。 {}アクティブなスタックをポップします。ポップされた値を評価します。 <>アクティブなスタックを切り替えます。ゼロに評価します。 これらは評価されるときに連結されます。したがって、アクティブスタックの上に「3」がある場合、このスニペットは次のとおりです。 ()(){} するために評価されます1 + 1 + active.pop()5と評価されることになります。 モナドは1つの引数、Brain-Flakコードの塊を取ります。すべてのモナドは次のとおりです。 (n) アクティブなスタックで「n」を押します。 [n] 負の「n」に評価します {foo} スタックの先頭にゼロはありませんが、fooを実行してください。 <foo> fooを実行しますが、0として評価します。 これらの関数は、内部の値も返すため、 (()()()) 3をプッシュしますが、 ((()()())) 3を2回押します。 {}すべてのランの合計に評価します。したがって、スタックの一番上に「3」と「4」がある場合: {{}} 7と評価されます。 プログラムの実行が完了すると、アクティブなスタックに残っている各値が改行を挟んで印刷されます。他のスタックの値は無視されます。 ルール Brain-Flakはascii outで実行されていると仮定できます。(-A) brain-flakコードは入力を要求してはいけません すべての標準ルールが適用されます TIOで最大1024バイトの入力がある場合、コードは1分以内に実行する必要があります。(TIO出力が利用できない場合、インタープリターを提供し、マシンで実行します(マシンはTIOに近づくことができるはずです))。 任意の長さの入力をサポートする必要があります。 ファイルから入力を取得できます。 テストケースの最適化は許可されていません 確定的な出力が必要です プログラムはスタッククリーンである必要はありません テストケース(これらのコードを試してください。実際のスコアテキストは、チャレンジが投稿されてから1〜2週間後にリリースされます) ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz …

30
アイソグラムチェッカー
チャレンジ: 単語が与えられたら、それがアイソグラムかどうかを確認します。 何 : アイソグラムは、重複のない文字のみで構成される単語です(大文字と小文字は区別されません)。空の文字列はアイソグラムです。 例: "Dermatoglyphics" ---> true "ab" ---> true "aba" ---> false "moOse" ---> false "abc1" ---> false "" ---> true 入力: 合理的な形式の入力を受け入れることができます 入力には文字や数字のみが含まれ、スペースは含まれません([a-zA-Z0-9]) 出力: true または入力がアイソグラムである場合、任意の真実の値 false または偽の値 これはコードゴルフなので、各言語のバイト単位の最短コードが優先されます。

3
Stack Catsプログラムをフラット化する
Stack Catsは、可逆的なスタックベースの言語です。その可逆的な性質により、やや奇妙なループになります。この挑戦は条件付きループについて(...)です。これらのループが特定の方法でネストされると、コードを変換してネストの深さを減らすことができます。ルールは次のとおりです(任意のスニペットの場所Aと略称B): 1つのループが別のループで始まるとき、私たちは前に内部ループを抽出することができます:((A)B)なり(A)(B)。 1つのループが別のループを終了すると、我々は最後まで内部ループを抽出することができます:(B(A))なり(B)(A)。 空のループを()プログラムから完全に削除できます。当然の結果として(他の規則と組み合わせて)、((A))と同等(A)です。 残る唯一のネストされたループは、の形式です(A(B)C)。ここでA、BおよびC空ではありません。 チャレンジ 有効なStack Catsプログラムが与えられ、タスクは、上記の変換を使用して、ループのネストレベルを可能な限り減らし、空のループを残さないことです。 有効なStack Catsプログラム... ...は文字のみで構成され()/\<>[]{}!"*+-:=ITX^_|ます。 ...ミラー対称性\(]{}!{}[)/があります(たとえば、有効なプログラムですが、そうで/|/はありません)。 ...が正しく一致してネストされ()、and {}([]、通常のように一致する必要は<>あり\/ませんが、ミラー対称性の要件によりペアで表示されます)。 入力として文字列または文字のリストを使用できますが、出力は同じ形式で提示する必要があります。 プログラムまたは関数を記述し、入力を受け取って出力を提供する当社の標準的な方法を使用できます。これらの抜け穴はデフォルトでは禁止されていることに注意してください。 これはcode-golfであるため、バイト単位で測定された最短の有効な回答が勝ちます。 テストケース テストケースはそれぞれ2行(入力と出力)で、空の行で区切られています。1つの出力が空であることに注意してください。また、空の入力をサポートする必要があります(結果として空の出力になるはずです)。 (((=+|+=))) (=+|+=) ({(=+|+=)}) ({(=+|+=)}) ((\)/)I(\(/)) (\)(/)I(\)(/) (()()(())()()) ((<|>((X((T)))[_]))\^/(([_](((T))X))<|>)) (<|>)(X)(T)([_])(\^/)([_])(T)(X)(<|>)

1
ビル・ゲイツをアウトゴルフできますか?
パンケーキソーティングは、スパチュラをスタックの任意の位置に挿入して、その上にあるすべてのパンケーキを裏返すことができるときに、サイズの乱れたパンケーキのスタックをソートする数学的問題の口語的な用語です。パンケーキ番号P(n)は、n個のパンケーキに必要なフリップの最小数です。1 1979年、若いBill GatesとChristos Papadimitriouは、P(n)=(5n + 5)/ 3の上限を証明する論文を書きました。2 Gates(および/またはPapadimitriou)が開発したアルゴリズム(おそらく1979年以降)を使用してパンケーキソートを実行するプログラムを作成したと想定するのは安全だと思います。ゲイツは熟練したプログラマーだったので、おそらくこのコードをできる限りゴルフしようとしましたが、ソースコードのサイズは公開されていません(AFAIK)。 チャレンジ: パンケーキのソートを実行する関数/プログラムを作成します。ここで、フリップの最大数は、GatesとPapadimitriouによって検出された境界を超えません。3リストが一貫している限り、リストを昇順または降順で選択できます。 n <50と仮定することができます。したがって、フリップの数を(ランダムに選択されたn値)に制限する必要があります。 n P(n) 38 65 49 83 50 85 出力は、各フリップの前のヘラの位置になります。出力は0または1のインデックスが付けられ、上からカウントするか下からカウントするかを選択できます。 追加のルール: ランタイムは確定的でなければなりません 固定の時間制限はありませんが、50要素のリストの出力を提供できる必要があります テストリスト: 私は最も難しいリストを提供することはできません(もしそうなら、私は挑戦ではなく論文を書きます)、関数/プログラムをテストできる数のランダムなリストを提供します。これらのリストが「簡単」であることが判明した場合、他の人を追加できます。 9, 63, 62, 75, 45, 78, 59, 75, 69, 3, 28, 94, 51, 10, 45, 93, 97, 80, 72, 36, 80, 88, 30, 93, …

3
配列からエントリを削除してソートし、要素の合計を最大化します
この課題は、入学試験からクローズドナンバーのサイバーセキュリティコースまでです。とにかくサイバーセキュリティとは関係なく、学生の論理的スキルとコーディングスキルをテストするだけです。 仕事 配列からエントリを削除するプログラムを作成して、残りの値が厳密に減少する順序で並べ替えられ、その合計が他のすべての可能な減少シーケンスの中で最大化されるようにします。 入出力 入力は、整数値の配列になり、厳密に大きいより0、すべて互いに異なります。ファイル、コマンドライン、またはstdinから入力を読み取るかどうかは自由に選択できます。 出力は降順でソートされます、入力のもののサブ配列になり、その合計は他の可能な降順でソートされたサブ配列よりも大きくなります。 注: [5, 4, 3, 2]は、とが隣接していない[5, 4, 1, 3, 2]場合でも、のサブ配列です。という理由だけで431ポップされました。 ブルートフォースソリューション もちろん、最も単純な解決策は、与えられた配列のすべての可能な組み合わせの中で繰り返し、最大の合計でソートされた配列を検索することです。 import itertools def best_sum_desc_subarray(ary): best_sum_so_far = 0 best_subarray_so_far = [] for k in range(1, len(ary)): for comb in itertools.combinations(ary, k): if sum(comb) > best_sum_so_far and all(comb[j] > comb[j+1] for j in range(len(comb)-1)): best_subarray_so_far …

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