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

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

19
列を回転させる
整数kとテキストブロック、または内部配列の長さが等しくない(テキストブロックに似ている)2d配列の場合、k番目の列のすべての文字または要素を次の位置まで上下に回転させます。それが存在します。 例 次のテキストの20番目の列を回転します(1から始まります)。 A line with more than k characters. A longer line with more than k character. A short line. Rotate here: ------v-- This is long enough. This is not enough. Wrapping around to the first line. 出力: A line with more thtn k characters. A longer line with …

18
警官と強盗(警官)のハードコーディング
これは警官と強盗の挑戦です。強盗のスレッドはこちらです。 考えるべき興味深い質問は次のとおりです。 番号のシーケンスがある場合、どのシーケンスについて話しているかが明確になる前に、それらの番号をいくつ提供する必要がありますか? 私はから順に、正の整数についての話をしたい場合は例えば111、私が言うことができる1,2,3,…1,2,3,…1,2,3, \dots、それは本当に十分でしょうか? 私はこの質問に答える一つの方法があり、それはコードゴルフをするコードゴルファーである。それらの用語を生成する最短のコードがシーケンスのすべての用語を生成する場合、シーケンスの十分な用語を提供しました。これをコードゴルフの観点から考えると、テストケースを通過する最短のコードが目的のタスクを実行するのに十分なテストケースを提供したことになります。 チャレンジ この挑戦は警官と強盗の挑戦です。どの警官がテストケースを提示し、強盗は、意図したシーケンス以外のテストケースをスプーフィングするより短い方法を見つける必要があります。警官は次のものを提示します。 入力として負でない整数を取り、出力として整数を生成するコード。このコードはシーケンスを定義します。コードは入力として0をサポートする必要はなく、代わりに1を最小入力として使用することを選択します。これがあなたの答えに当てはまるかどうかは明らかです。 出力に影響する可能性のある関連するプラットフォームまたは言語の要件(longintのサイズなど)。 コードによって計算されたシーケンスの最初のn項とともに、数値。これらは「テストケース」として機能します。nnnnnn シーケンスの機能を説明し、OEISが存在する場合はリンクすることをお勧めしますが、説明ではなくシーケンスを定義するのはコードです。 強盗は、提示されたものよりも短い同じ言語のプログラムを見つけ、すべてのテストケースに合格します(最初の入力に警官のコードと同じ出力を生成します)。強盗のコードは、nよりも大きい数の場合、警官のプログラムからの出力も異なる必要があります。nnnnnn 警官は、提出する前に自分の回答を解読できなければなりません。 1週間後、警官がクラックを明らかにし、答えを安全とマークする場合があります。そのようにマークされた回答は、もはやクラックできません。 得点 警官の回答は、バイト数が少ないほど良いと評価されます。ひびの入った回答は無限のスコアを獲得します。

15
pannenkoekがAプレスをカウントするのを助ける
pannenkoek2012は、Aボタンをできるだけ押すだけでスーパーマリオ64を完成させ、マリオをジャンプさせます。各「A press」は3つの部分で構成されています。 ボタンを押す いつでもそれを保持する リリースする 上記の画像を含む優れた説明については、このビデオ(1:15-3:23)を参照してください。(ただし、このチャレンジでは、半押しプレスの用語は使用されず、Aをリリースする必要がある障害が想定されます。) 仕事: Aボタンを押す(P)、ホールドする(H)、または放す(R)必要がある一連の障害物がある場合、それらの障害物を指定された順序で克服するために必要な最小のプレス数を出力します。Aボタンは最初は保持されていません。 形式的に記述:文字の文字列Sが与えられた場合、サブシーケンスとしてSを含むPHR形式の文字列を考慮し、そのような文字列のの(PH*R)*最小数を出力しPます。または、P?H*R?Sを分割できる形式のチャンクの最小数を見つけます。 例 inputを見てみましょうRHRPHHHR。Aボタンは開始されないため、最初の障害を克服するにRは、ボタンを押してから離す必要があります(#1を押します)。次に、ボタンを保持する必要がありますH。この場合も、最初にボタンを押す必要があります(#2を押します)。その後、その後にリリースして、その後を満たすことができRます。最後に、PHHHR1回押す(#3を押す)に続いてを押しHHHて放すと、残りが満たされRます。したがって、出力カウントは3です。 もう1つの見方は、入力文字列を3つの部分に分割して、文字をPHH..HHR省略できることです。 R HR PHHHR 入力形式 入力は、次の選択肢として長押し、解放を表す要素のリストまたは文字列になります。 P, H, R p, h, r 1, 2, 3 0, 1, 2 指定された順序で一致します。入力は空になりません。 テストケース: P 1 H 1 R 1 HP 2 RHP 3 HHR 1 PHRH 2 RHRPHHHR 3 HHHHHH 1 PPRRHHPP …

29
最も一般的な倍数
混同しない最小公倍数。 複数の要素を持つ正の整数のリストを指定すると、配列内の2つの要素の最も一般的な積を返します。 例えば、リストのMCMは、[2,3,4,5,6]ある12製品のテーブルがあるとして、: 2 3 4 5 6 --------------- 2 | # 6 8 10 12 3 | # # 12 15 18 4 | # # # 20 24 5 | # # # # 30 6 | # # # # # DJMcMayhemに感謝します 12ほとんどの時間表示されます(の2倍を2*6して3*4)。我々は要素の製品を含め、それ自体、そうではないことに注意してください2*2または4*4このリストには表示されませません。ただし、同一の要素は引き続き乗算されるため、表は[2,3,3]次のようになります。 2 3 3 ---------- …

30
ベクトルを正規化する
ベクトルを正規化するとは、方向を一定に保ちながら、長さ1(単位ベクトル)にスケーリングすることです。 たとえば、3つの成分uでベクトルを正規化する場合、最初にその長さを見つけます。 | u | = sqrt(u x 2 + u y 2 + u z 2) ...次に、各コンポーネントをこの値でスケーリングして、長さ1のベクトルを取得します。 û= u÷| u | チャレンジ あなたの仕事は、署名された整数の空でないリストを与えられ、それをベクトルとして解釈し、それを正規化するプログラムまたは関数を書くことです。これは、たとえば、任意の数のディメンションで機能するはずです(テストケースを小数点以下2桁に丸める)。 [20] -> [1] [-5] -> [-1] [-3, 0] -> [-1, 0] [5.5, 6, -3.5] -> [0.62, 0.68, -0.40] [3, 4, -5, -6] -> [0.32, 0.43, -0.54, …

8
最小の非表示、ただし共有桁なし!
チャレンジ ここPPCGでは、シーケンスが確実に好きなので、別の楽しみがあります。 のは、定義しようa(n)ものとして最小非負整数X任意に等しくないa(k)(0 < k < n)、及びa(n-1)及びX任意の10進数字を共有しません。a(0) = 0 入力が与えられるとn > 0、出力などa(n)。 例えば、入力のためにn = 13、我々は持っているa(13) = 20ので、a(12) = 11と20して任意の10進数字を共有しない、我々はまだ見ていない整数最小非負です11。 シーケンス 始めるための最初の20の用語を以下に示します。これは、OEISのシーケンスA067581です。 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 22, 11, 20, 13, 24, 15, 23, 14, 25 ルール 入力と出力は、言語のネイティブ整数型に適合すると仮定できます。 入力と出力は、任意の便利な形式で指定できます。 私の例ではここにあるように、0インデックス、または提出用の1インデックスのいずれかを選択できます。あなたがしていることを述べてください。 完全なプログラムまたは機能のいずれかが受け入れられます。関数の場合、出力する代わりに出力を返すことができます。 可能であれば、他の人があなたのコードを試すことができるように、オンラインテスト環境へのリンクを含めてください! 標準的な抜け穴は禁止されています。 これはコードゴルフなので、通常のゴルフルールがすべて適用され、最短のコード(バイト単位)が勝ちます。

23
迷惑なバグがある基本的な並べ替え
入力は5-255の正の整数のリスト/シーケンス/ベクトル/配列であり、必ずしも一意ではありません。どのような入力形式が最も適切であり、各整数(および整数の量)が5〜255の範囲から一様にランダムに選択されると想定できます。 目標は、同じ(または同等の)形式で同じリストを出力することですが、昇順(非降順)にソートされます。言語学習の一般的な初期の練習。含める提出物: 正しく機能し、目標を達成する回答。そして 迷惑なバグを含む2番目の回答。時間の1%から10%の間、出力は正しい形式で、正しい要素を含むリストである必要がありますが、順序は正しくありません(正しくソートされていない任意の順序)。残りの時間、プログラムは正しく動作し、目標を達成する必要があります。 2つの答えには、レーベンシュタイン距離 1 が必要です。つまり、1バイトを削除するか、1バイトを追加するか、1バイトを変更することで、一方から他方を取得できます。 通常の抜け穴を禁止した状態で、2つの回答のうち短い方に基づいて、コードゴルフで通常どおりスコアリングします。 迷惑なバグが入力に依存しない場合、つまり同じ入力を再度使用してもバグが再現されない場合は、10%のボーナス(スコアの減少)(1%から10%の間を除く)。

29
アナグラムを出力してください!そんなことない!
相互のアナグラムである一意の文字列のリストが与えられたら、リスト内の各単語とは異なるそれらの単語のアナグラムを出力します。 文字列は英数字になり、有効なアナグラムが保証されます。 プログラムまたは関数は非決定的である必要はありませんが、同じ入力が与えられた場合、可能なすべての出力が有効である限り、コードを複数回実行すると異なる出力を生成できます。 テストケース [Input] -> Possible output ----------------- [ab] -> ba [aba, aab] -> baa [123, 132, 231, 312, 321] -> 213 [hq999, 9h9q9, 9qh99] -> 999hq [abcde123, ab3e1cd2, 321edbac, bcda1e23] -> ba213ecd

25
最小のゼロレスベース
正の整数が与えられた場合n、先行ゼロなしb >= 2のnin base の表現にbaが含まれない最小のベースを出力します0。あなたはb <= 256すべての入力に対してそれを仮定するかもしれません。 テストケース 1 -> 2 (1) 2 -> 3 (2) 3 -> 2 (11) 4 -> 3 (11) 5 -> 3 (12) 6 -> 4 (12) 7 -> 2 (111) 10 -> 4 (22) 17 -> 3 (122) 20 -> 6 (32) 50 -> …

11
ピンホールカメラを介した日食
このチャレンジは、2017年8月21日に発生した日食に触発されたシンプルなASCIIアートチャレンジです0 <= n <= 4。 n=0: ***** ** ** * * * * ** ** ******* n=1: ***** ** ***** * ******* * ******* ** ****** ******* n=2: ***** ********* *********** *********** *********** ******* n=3: ***** ***** ** ******* * ******* * ****** ** ******* n=4: ***** ** ** * …

6
助けて!電卓が誤動作します!
前書き 電卓の動作がおかしい。入力するときにが8表示されることがあり2ます。そして時々私がタイプするとき6それは表示する+。いくつかのボタンが混同されています! 誰が私がどちらを決定するのを手伝ってもらえますか? チャレンジ: 入力:間違った方程式のリスト、正しい結果。 出力:交換される2つのボタン。 例: 入力は次のとおりです。 123 = 3 8423 = 252 4+4 = 8 4*7-10 = 417 9/3 = 3 42-9 = -36 そのために期待される出力は、次のとおり2と*。 どうして?2と*を入れ替えると、すべての方程式が正しいからです。 1*3 = 3 84*3 = 252 4+4 = 8 427-10 = 417 9/3 = 3 4*-9 = -36 チャレンジルール: 入力は任意の合理的な形式にすることができます。スペースで区切られた単一の文字列にすることができます。文字列リストまたは-array。方程式のリストと正しい結果の別のリスト。あなたの電話。使用した入力形式を明記してください! 注:これは-5--15、-5- -15またはとしてテストケースを入力できることも意味します-5 …
28 code-golf  number  arithmetic  integer  code-golf  math  number  geometry  code-golf  grid  code-golf  math  number  sequence  primes  code-golf  sequence  kolmogorov-complexity  code-golf  string  ascii-art  alphabet  code-golf  math  sequence  integer  code-golf  number-theory  integer  natural-language  code-golf  date  code-golf  function  code-golf  ascii-art  code-golf  math  number-theory  primes  classification  code-golf  array-manipulation  decision-problem  matrix  code-golf  number  code-golf  code-golf  ascii-art  matrix  code-golf  string  code-golf  sequence  base-conversion  code-golf  code-golf  math  number-theory  combinatorics  integer-partitions  code-golf  integer  binary  base-conversion  code-golf  integer  base-conversion  palindrome  code-golf  code-golf  integer-partitions  code-golf  math  ascii-art  matrix  code-golf  number  sequence  number-theory  matrix  code-golf  interpreter  code-golf  graph-theory  code-golf  ascii-art  decision-problem  code-golf  division  code-golf  array-manipulation  primes  code-golf  string  ascii-art  code-golf  primes  counting  code-golf  matrix  unicode  code-golf  source-layout  code-golf  grammars  code-golf  string  cops-and-robbers  regular-expression  obfuscation  string  code-challenge  cops-and-robbers  regular-expression  code-golf  kolmogorov-complexity  game  card-games  code-golf  kolmogorov-complexity  code-golf  array-manipulation  matrix  code-challenge  cops-and-robbers  code-challenge  decision-problem  cops-and-robbers  code-golf  permutations 

6
六角形の隣接
上の画像は、六角形の六角形のグリッドを表示しています。グリッド内の各セルには、図のように中心から反時計回りに螺旋状にインデックスが割り当てられます。グリッドは無期限に継続することに注意してください-上の写真は単に最初のセクションです。次の六角形は60と37に隣接します。 あなたのタスクは、このグリッド上の2つのセルが隣接しているかどうかを判断することです。 2つのセルインデックスを指定して、2つのセルが隣接している場合は真理値を出力し、そうでない場合は偽値を出力するプログラムまたは関数を作成します。 実用的な理由に制限されない場合、コードは理論的にはあらゆるサイズの入力に対して機能するはずです。 真実のテストケース: 0, 1 7, 18 8, 22 24, 45 40, 64 64, 65 偽のテストケース: 6, 57 29, 90 21, 38 38, 60 40, 63 41, 39 40, 40 これはコードゴルフなので、バイト単位の最短回答が勝ちです。説明は、非難解な言語であっても奨励されています。

10
アラームの最適化
私の目覚まし時計 私はアメリカ人です。私の(デジタル)目覚まし時計もそうです。アラームを設定するには、以前の時刻に開始します。時ボタンを押すと1時間上に移動し、分ボタンを押すと1分上に移動します。両方のボタンを同時に押すと、真夜中(午前12:00)にリセットされ、ボタンを2回押すとカウントされます。 時間が上限(12)を超えると、1にリセットされ、AM / PMライトが切り替わります。分が上限(59)を超えると、時間に影響を与えずに0にリセットされます。 タスク タスクには、開始時間と目標時間を指定して、アラームを目標時間に設定するために必要なボタンの最適な押し回数を出力します。 最適な形式で入力できます。プログラムが必要とする唯一のデータは、両方の入力に対して時間と分です。これは、たとえば、エポックからミリ秒としてデータを取得し、時間と分を抽出できることを意味しますが、年、月、秒などに何もエンコードすることはできません。 「軍事時間」(または世界のほとんどの場合は通常の時間)が、それは私の時計の動作を変更しません。 例 1:15 pm -> 2:30 am 両方のボタンを押し下げて午前12:00にリセットし、次に2+2+30 = 34ボタンを押すと午前2:30に増分できます。13+15 = 28ボタンを押すと、午前2時30分まで増分することもできます。したがって、出力は28です。 3:58 am -> 4:02 am 2+4+2 = 8ボタンを押すと、リセットして増分できます。1+4 = 5ボタンを押すと、増分することもできます。したがって、出力は5です。 10:55 pm -> 1:00 am 2+1 = 3ボタンを押すと、リセットして増分できます。3+5=8ボタンを押すと、増分することもできます。したがって、出力は3です。 1:00 am -> 1:59 pm リセットして増分することもできますが、それは単に増分するよりもさらに3回押すことです。したがって、出力は12+59 = 71です。 テストケース Current Target = …

2
Brainf ***の任意の大きなセルをゼロにします***
あなたの仕事は、各セルが通常の0から255の代わりに任意の大きさの符号付き整数を含むことができるBrainfuckバリアントの現在のセルをゼロにするコードを書くことです。 現在のセルの左側にl個、右側にr個のセルがあり、それらは最初はゼロであると想定できます。プログラムは、これらのl + r +1セルにのみアクセスできます。コードが終了すると、l + r個の余分なセルはゼロのままになり、現在のセルへのポインタは元の位置に残ります。 入出力を使用することはできません。 最小のl + rを持つコードが優先されます。同点の場合、最短のコードが優先されます。参照用にプログラムの時間の複雑さも記載することをお勧めします。nは、現在のセルの元の整数の絶対値です。 便利なツール mbomb007によるTIOでこのインタープリターを使用して、このバリエーションのBrainfuckプログラムをテストできます。 boothbyによるこの回答でインタープリターを使用することもできます(他のPythonの回答もおそらく機能しますが、テストしませんでした)。

1
無制限の言語
このサイトでの私のお気に入りのチャレンジの1つは、ソースが制限されたチャレンジです。これらの課題は、潜在的な回答のソースが通過しなければならないコンピューターの扱いやすい制限を課します。私はこれらの挑戦がとても好きで、私はこれらの挑戦で勝つために設計されたゴルフ言語に今しばらく取り組んでいます。今、私はあなたに挑戦を広げたいです。あなたの仕事は、制限されたさまざまなソースタスクを解決する言語を設計することです。言語を設計および実装する時間です。この時点で、変更や新しい追加は競合せず、すべての提出物はソースが制限された挑戦の挑戦に向かいます。 得点 課題を投稿する前に、解決すべき簡単な課題のリストと、従うべきソースの制限のリストを考えます。チャレンジとソースの制限が一致するたびに、言語は0〜2ポイント獲得できます。(10の課題と10の制限があり、合計100の組み合わせになります)言語スコア 150バイト未満の制限でタスクを完了できる場合は1ポイント ソリューションが競合する言語の最短ソリューションである場合は2ポイント(両方の言語が同点の場合は2ポイントを獲得します) 150バイト未満の制限でタスクを完了するプログラムを作成できない場合、0ポイント。 スコアは、可能なすべてのマッチアップで獲得したすべてのポイントの合計になります。目標は、最高のスコアを取得することです。他の人が各チャレンジの解決策をゴルフしてスコアを改善するのを手伝うかもしれません。 投稿時に各リストの4つの項目を明らかにし、2番目の回答の1週間後にさらに8つの項目を明らかにします。最初の週の前に両方の部分が明らかになったマッチングでは、1ポイント(最短の提出はカウントされません)のみを獲得できます。これにより、作業中に言語がどれだけうまく積み重ねられているかを知ることができますが、すべての課題と制限を組み込むためだけに言語を設計することはできません。 目的のカテゴリのハッシュを質問に含めるので、どのパーティーにも有利になるように週中にカテゴリを変更しないようにすることができます。さらに、1週間が経過するまで誰にも隠されたパラメーターを伝えたり、自分でチャレンジに参加したりしません。 既存の言語 この課題は既存のすべての言語に開かれていますが、あなたがその言語の作成者でない場合は、コミュニティwikiに回答して、コミュニティの他のメンバーがスコアに直接貢献できるようにしてください。コマンドラインフラグは制限に従う必要はありませんが、すべてのプログラムは同じコマンドライン引数を使用して実行する必要があります(つまり、いずれかを選択してそれを使用する必要があります)。これらはバイトカウントに追加されません。 課題と制限 使用するコードページに関係なく、バイナリのASCIIエンコーディングに制限が適用されます。これらの一部は、チャレンジのio要件と制限のソース制限を継承するサイトの既存の質問にリンクしています。「ビルトインの禁止」やリンクされた課題に関する既存のメタコンセンサスの上書きは無視できます。 警告の言葉として:弁護士を支配しようとしないでください。競争であることは知っていますが、基本的に100のサブチャレンジチャレンジがあるため、すべてが完全に問題がないことを保証することはできません。楽しんでみてください。 課題 整数のリストを並べ替える 印刷する Hello, world! 括弧のバランスが取れているかどうかを判別 素数のテスト 制限事項 奇数バイトのみ(8ビットごとに奇数でなければなりません) ダブルバイト バイトは昇順です(各バイトは最後よりも大きい) ソースコードは回文です 残りの基準には、次のsha512ハッシュがあります。 4de5eca33c6270798606cf1412820c4ce112d8b927ef02877f36795b2b15ffacca51ea598fa89b8d6bc9f4cde53810e0e7ade30e536e52e28f40a6a13841dfc5 -

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