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

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

7
ライトはいつ点滅しますか?
2つのライトがあるとします。これらのライトは特定の速度で点滅します。 Light 0: Delay 0ms and then blink every 1000ms Light 1: Delay 500ms and then blink every 1000ms これらのライトを最初の2000ミリ秒でシミュレートしてみましょう。 0ms: Light 0 on 500ms: Light 1 on 1000ms: Light 0 off 1500ms: Light 1 off 2000ms: Light 0 on チャレンジ ライトのタイミングを表す順序付けられたペアのリストが与えられたら、点滅したときにシーケンスを出力するプログラムまたは関数を記述します。 入力 入力は次の形式にする必要があります。 TimeToSimulate Light0Delay,Light0Period Light1Delay,Light1Period ... この形式では、上記の例は次のようになります。 2000 …
10 code-golf  number 

2
あなたのおじは酔って必要を助けます
Drunk Uncle(リージョンロックで申し訳ありませんがMEとAUS)は、Saturday Night Liveの架空のキャラクターです。彼はしばしば彼らのように聞こえる他の人の言葉を混同します。この課題では、通常のスピーチを酔っぱらいに変換する必要があります。 アルゴリズム drunkspeakに翻訳するには、テキスト内の単語の順序を入れ替える必要があります。スワッピングは、2つの単語の酔いの類似性に基づいています。酔いの類似性は、2つの単語が同じインデックスで発生した文字の数として定義されます。ただし、2つの同一の単語の酔いの類似度は-1です。例えば、treeそしてfriendそれらはインデックス1、インデックス3で「E」で「R」が両方のために、2の酩酊類似性を有します。 あなたがしなければならないのは、最も酔っている類似性を持つテキストの2つの単語を見つけて、それらを交換することだけです。2つの用語を交換すると、それらは移動しなくなります。次に、残りの入れ替え可能な用語を確認し、酔いの類似性が最も高い2つを入れ替えます。スワップできなくなるまでこれを続けます。次に、更新されたテキストを出力(または関数の場合はリターン)します。 詳細 簡単にするために、入力は[A-Za-z]の文字で構成される単語のリストです すべての入力に少なくとも1つの単語が含まれています :文字のマッチングは大文字と小文字を区別しないであるAと一致したa(注:この規則に起因Dogとdog同一であり、したがって、のDSを有する-1) 複数のペアが最も高い酔いの類似性を持っている場合: 単語の中で、それは酔いの類似性を最大にすることができます、リストで最も低いインデックスを持つものを選びます その単語を、酔いの類似性を最大化する最低インデックスの単語とペアにします 例 Drunk Uncle needs your help (題名) S 1:酔って<=>あなた(DS:1)your Uncle needs Drunk help S 2:ヘルプが必要<=>(DS:1)your Uncle help Drunk needs 出力: your Uncle help Drunk needs I love fidget spinners (退屈な例) S 1:I <=>愛(DS:0)love I fidget spinners …

12
セカンドゼロを見つける
チャレンジ 32ビットの2の補数形式の整数を指定して、バイナリ表現の2番目の最下位ゼロ桁のインデックスを返します。のインデックスは0最下位ビットを31表し、のインデックスは最上位ビットを表します。 2番目のゼロがない場合は、0、負の数、偽の値を返すか、言語で意味のある方法でエラーを報告することができます。 必要に応じて1インデックスを使用できますが、以下のテストケースでは0インデックスを使用します。 必要に応じて、符号なし整数を使用できます。その場合、範囲内の整数を処理する必要があります[0, 2^32)。符号付き整数を使用する場合は、範囲内の整数を処理する必要があります[-2^31, 2^31)。ここでのテストケースは符号付き整数を使用しますが、(符号付き)-xは2^32 - x(符号なし)であることに注意してください。 テストケース 0(0b00)-> 1 1(0b001)-> 2 10(0b1010)-> 2 11(0b01011)-> 4 12(0b1100)-> 1 23(0b010111)-> 5 -1(0b11..11)->なし -2(0b11..10)->なし -4(0b11..00)-> 1 -5(0b11..1011)->なし -9(0b11..10111)->なし 2 ^ 31-2(0b0111..1110)-> 31 得点 これはコードゴルフなので、各言語で最も短い答えが勝ちます!
10 code-golf  number 

11
Tri-interquine-ループで互いに出力する3つのプログラム
関連:Interquine プログラムAは実行時にプログラムBのコードを出力し、BはCのソースを出力し、CはAのソースを出力します。 今回は2つの文字を交換して再度交換することはできません:) 要件: すべてのプログラムで1つの言語のみ 標準の抜け穴の制限が適用されます プログラムはすべて異なります。自身を出力する1つのプログラムは対象外です。お互いに出力する2つも対象外です。 すべてのプログラムは空ではないか、長さが少なくとも1バイトです。 stdinが接続されているため、読むものはありません/dev/null(できれば、このルールを悪用することができます)。出力はstdoutに送られます。 ランダムな結果を生成する関数を使用しないでください。 追加: 可能であれば説明してください スコアは最短のものの長さです(短いものから長いプログラムを生成できますか?)。すべてのプログラムの長さを書き、最小の数字を強調表示してください。末尾の改行はカウントされません。最も低いスコアが勝ちます。
10 code-golf  quine 

2
Java / C / C ++ / etcの再インデント。コード
コードを適切にフォーマットするために空白を追加または削除するプログラムを記述します。完了したときのコードの外観に関する規則: 行には、{およびの2つ以上を含めることはできません}。 A {は常に行の最後にある必要があります。 A }は常に行の唯一のものでなければなりません(その前にある空白以外)。 各行の前の空白の量は、現在のネスト数の固定倍数である必要があります。(変更しない限り、好きなだけインデントを使用できます。) これらのルールのいずれかを満たすことに寄与しない空白を挿入または削除しないでください。 最初の行のネストカウントは0です。他の行のネストカウントは、前の行のネストカウントに、前の行にが含まれている場合は1を加算し{、現在の行にが含まれている場合は1を減算し}ます。 {そして、}内部の文字列リテラルやコメントは、上記のルールではカウントされません。文字列リテラルは、一重引用符または二重引用符で囲まれたテキストです。単一引用符または二重引用符の直前に奇数個のバックスラッシュが含まれていると、文字列リテラルの終わりとして解釈されません。コメントは、/*および*/で囲まれたテキスト、または行//の終わりまで続くテキストです。複数行コメント開始マーカーでは、最初のマーカーのみがカウントされます。コメントは文字列リテラル内では解析されません。 例 main() {printf("Hello!"); // I don't care about the world... } becomes: main() { printf("Hello!"); // I don't care about the world... } int main(){ puts("a"); puts("b"); } becomes: int main(){ puts("a"); puts("b"); } main() { printf("{"); /* } } …

2
ゴルフ場に植樹を!
この課題は、このアプリに触発されています。 これは、この課題のはるかに簡単なバージョンです。この課題はコードゴルフですが、もう1つは最速コードです。 もし寸法、正方形入力グリッドを与えられるだろう6×6に分割され、6つの各領域の細胞はIから小文字を使用します(一意の識別子有する領域、AF、ここではテキストでのしかし、たとえば整数1-6のように、好きなように選択することができます。 入力は次のようになります(オプションの入力フォーマット): aabbbb aabbbb aaccbb acccdb ecccdb eeefff または、視覚化しやすくなります: チャレンジ: 次の規則に従って、この公園に6本の木を配置します。 正確がなければならない1列あたりの木、および1行あたりの木 すべての領域には、正確に1つのツリーが必要です。 垂直方向、水平方向、または斜め方向に他の木に隣接することはできません 上記のレイアウトの解決策は次のとおりです。 注:各パズルに対する解決策は1つだけです 追加のルール: 入力および出力フォーマットはオプションです 出力は、たとえば、インデックスのリスト、その位置にツリーがあるかどうかを示す1/0のグリッド、またはツリーが示されている入力の修正バージョンなどです。 実行時間は確定的でなければなりません プログラムは妥当な最新のラップトップで1分以内に終了する必要があります ブルートフォースしないとブラウニーポイント! テストケース: aabbbb aabbbb aaccbb acccdb ecccdb eeefff --- aAbbbb aabbbB aaCcbb acccDb Ecccdb eeeFff ---------- aabccc aacccc aaddce aeeeee aeeefe eeeeee --- aaBccc aacccC aadDce Aeeeee …
10 code-golf  grid  game 

14
12時間の時間変換
チャレンジ 12時間形式で時刻を変換して印刷します。 HH:MM AM/PM 例 入力: 'Fri Jun 30 2017 21:14:20 GMT-0700 (PDT)' 'Fri Jun 30 2017 00:10:23 GMT-0700 (PDT)' 'Fri Jun 30 2017 12:10:23 GMT-0700 (PDT)' 'Sat Jun 31 2018 8:06:20 GMT-0700 (PDT)' 'Fri Jul 01 2017 01:14:20 GMT-0700 (PDT)' 'Sat Apr 10 2020 09:06:20 GMT-0700 (PDT)' 出力: 9:14 …
10 code-golf 

1
転がしてすべての面を見てください!
あなたが20面のサイコロを持っているとしましょう。あなたはそのサイコロを転がし始め、最終的に20個すべての値を転がす前に数十回転がさなければなりません。20個すべての値が50%の確率で表示されるまでに、いくつのロールが必要ですか。そして、n私がすべてのn面を転がす前に、何面のサイコロを振る必要がありますか? いくつかの調査の結果、ロール後にすべての値をロールする可能性を計算するための式が存在することがわかりました。nr P(r, n) = n! * S(r, n) / n**r ここで、は第2種のスターリング数をS(a, b)示し、n個のオブジェクト(各ロール)のセットをk個の空でないサブセット(各サイド)に分割する方法の数を示します。 また、が50%以上の最小のに対応するOEISシーケンス(これをと呼びます)も見つかります。課題は、このシーケンスのth項をできるだけ速く計算することです。R(n)rP(r, n)n チャレンジ 与えられn、検索最小 r場所P(r, n)以上で0.550%。 コードは理論的には負でない整数nを入力として処理する必要がありますが、テストするのはの範囲でのみ1 <= n <= 1000000です。 スコアリングのために、我々は実行するために必要な合計時間かかりなりますR(n)入力に1スルー10000。 あなたのソリューションは、私たちのバージョンを実行して、正しいかどうかをチェックするR(n)かどうかを確認するために、あなたの出力にP(your_output, n) >= 0.5し、P(your_output - 1, n) < 0.5あなたの出力は、実際に最も小さいすなわちことを、r与えられたためn。 S(a, b)ソリューションでは任意の定義を使用できます。ウィキペディアには、ここで役立ついくつかの定義があります。 S(a, b)計算P(r, n)するものや直接計算するものを含め、ソリューションに組み込みを使用できます。 最大1000個の値R(n)と100万個のスターリング数をハードコードできますが、どちらもハードリミットではなく、値を上げたり下げたりする説得力のある引数を作成できる場合は変更できます。 と探しているのr間nで可能な限りすべてをチェックする必要はありませんが、どこかだけでなくr、最小のものを見つける必要があります。rrP(r, n) >= 0.5 プログラムでは、Windows 10で自由に実行できる言語を使用する必要があります。 ソリューションをテストするコンピュータの仕様は次のとおりi7 4790k, 8 GB …

2
OEIS A005434を計算する
タスクは、OEIS A005434をできるだけ迅速に計算することです。 S長さのバイナリ文字列を考えnます。からインデックスを作成すると1、からまでの順序ですべてに対して完全にS[1..i+1]一致するかどうかを判断できます。例えば、S[n-i..n]i0n-1 S = 01010 与える [Y, N, Y, N, Y]. これは、ある0試合0、01一致しない場合10、010一致は010、0101一致していない1010 し、最終的に01010自分自身にマッチします。 長さの考えられるすべての異なるビット文字列を繰り返し処理するときに取得するsとsのf(n)個別の配列の数になるように定義します。YN2^nSn 観察者は、この質問が私の最近の別の質問の簡単な変形であることに気付くでしょう。しかし、私は巧妙なトリックがこれをはるかに速く簡単にすることを期待しています。 仕事 でn開始を増やすに1は、コードで出力する必要がありますn, f(n)。 回答例 のn = 1..24正解は次のとおりです。 1, 2, 3, 4, 6, 8, 10, 13, 17, 21, 27, 30, 37, 47, 57, 62, 75, 87, 102, 116, 135, 155, 180, 194 得点 あなたのコードは順番n = …

4
ゲーム・オブ・ライフと疲労
StewieのGame of Life and Fatigueは、より有名なConwayのGame of Lifeによく似ています。 StewieのGame of Life and Fatigue(GoLF)の宇宙は、正方形のセルの無限の2次元直交グリッドであり、それぞれが生きている、死んでいる、または疲れている、3つの可能な状態の1つにあります。すべてのセルは、隣接する8つのセル(水平、垂直、または斜めに隣接するセル)と相互作用します。時間の各ステップで、次の遷移が発生します。 人口が少ないことが原因であるかのように、生存細胞が2つ未満の生存細胞は死にます。 2つまたは3つの生きている隣人を持つ生きている細胞は、次の世代まで生き続けます。 過密状態のように、3つ以上の隣接セルを持つ生存細胞は死にます。 ちょうど3つの生きている隣人がいる死んだ細胞は、まるで生殖のように生きている細胞になります。 2世代連続して生存していた細胞は、まるで疲労のように死にます。次世代になるまで、再び目覚めることはできません 入力グリッドの境界の外側にあるセルは、崖から落ちたように死んでいます。 チャレンジ: あなたの課題は、GoLFの初期状態を表すn行m列の次元のグリッドと整数pを取り、p世代後のゲームの状態を出力することです。 ルール: 入力形式と出力形式はオプションですが、入力/出力グリッドは同じ表現でなければなりません 印刷可能なシンボルを選択して、生細胞と死細胞を表すことができます(私は1生細胞と0死細胞に使用します)。 インデックスが0か1かを選択できます。例でp=1は、は1ステップ後の状態を意味します。 各言語で最短のコードが優先されます セルラーオートメーションの組み込み機能が許可されています テストケース: 例では、pではなく、入力に入力グリッドのみを含めています。さまざまなp値の出力を提供しました。与えられた入力pに対応するグリッドのみを出力します。 Input: 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 …

3
キーボードをキーボードにする
仕事 ボタンを押すと、キーごとに異なるサウンドを出力するプログラムを作成する必要があります。 使用するキーは次のとおりです。 1!2"34$5%6^78*9(0qQwWeErtTyYuiIoOpPasSdDfgGhHjJklLzZxcCvVbBnm ノートはで始まり、C上の各キーは1つの半音を追加します。 少し簡単にしましょう。2つの同様のタスクから選択できます。 1)別のキーが押されるまで続くキーが押されたときに別のノートを出力します。このプログラムは無期限に実行されます 2)上記の文字のみを含む文字列を入力として、各ノートを正確に1秒間出力します(0.05秒のバリエーションが許可されます) 入力 押されているキー 上記のシンボルのみを含む単一の文字列 出力 別のキーが押されるまで鳴る単一の音符 一連のメモ、それぞれ1秒長 ノート Letter | Note -------+------- 1 | C ! | C# 2 | D " | D# 3 | E 4 | F $ | F# 5 | G % | G# 6 | A ^ …
10 code-golf  audio 

1
放射線硬化環状キンポリグロット
チャレンジ 次の2つのプログラムを作成します。 2つの異なるプログラミング言語で実行します。 これらは、1つの言語の2つのバージョンではない場合があります。 1つのプログラムを実行すると、2番目のプログラムが出力され、その逆も同様です。 2つのプログラムは異なる必要があります(ポリグロットなし)。 しかし、ここにキャッチがあります: プログラムは放射線耐性を強化する必要があります。 つまり、んんn(以下で定義)の文字のセットが2つのプログラムのいずれかから削除されても、その機能には影響しません。 んんnは、プログラムの機能に影響を与えずに省略できる文字数として定義されます。 んんnは少なくとも111でなければなりません。 ルール 標準の抜け穴は許可されていません。 プログラムは適切な循環クインでなければなりません。彼らは彼ら自身のソースコードを読むことはできません。 スコアリングは次のように実行されます。 S1+ S2んS1+S2ん\frac{S_1+S_2}n S1S1S_1S2S2S_2 んんn これはコードチャレンジであり、最も低いスコアが勝ちます。 褒賞 このチャレンジは答えるのが難しいので、最初に答えた人に賞金を差し上げます。

4
私の好きなチームは今でもフットボールチャンピオンになれますか?
最大で中程度に成功するフットボールBEチームのファンとして、シーズンの終わりに向けて、私のお気に入りのチームがまだチャンピオンになる可能性があるかどうか疑問に思います。この課題におけるあなたの仕事は、私のためにその質問に答えることです。 入力 現在のテーブル、残りの対戦のリスト、関心のあるチームの現在のポジションの3つの入力を受け取ります。 入力1:現在のテーブル、数字のシーケンスがされた私番目の数は、チームによって得られるポイントです私はこれまで。たとえば、入力 [93, 86, 78, 76, 75]は次の表をエンコードします(最後の列のみが重要です)。 入力2:残りの一致。各タプル(i、j)がチームiとjの間の残りの一致を表すタプルのシーケンス。上記の例では、2番目の入力は[(1,2), (4,3), (2,3), (3,2), (1,2)]、残りの一致が次のとおりであることを意味します。 Chelsea vs Tottenham, Liverpool vs Man. City, Tottenham vs Man. City, Man. City vs Tottenham, Chelsea vs Tottenham 入力3:関心のあるチームの現在の位置。たとえば2、上記の例のの入力は、トッテナムがまだチャンピオンになることができるかどうかを知りたいことを意味します。 出力 フォームの残りの一致ごとに( i、j)のに、3つの結果が考えられます。 チームiが勝利:チームiが獲得 3ポイント、チームjが0ポイント チームjが勝利:チームiが獲得 0ポイント、チームjは3ポイントを獲得 抽選:チームiとjの両方が1ポイントを獲得 残りのすべてのゲームに結果があり、最後に3番目の入力で指定されたチームよりも多くのポイントが他のチームにない場合は、真の値を出力する必要があります。それ以外の場合は、偽の値を出力します。 例:上記のセクションからの例示的な入力を考えます。 入力1 = [93, 86, 78, 76, 75]、入力2 …

10
私のサフィックスはどのタイプですか?
はじめに そのため、サフィックスソーティングアルゴリズムの研究、手作業およびコードによる新しいアイデアの評価に再び時間を費やしてきました。しかし、私はいつも自分のサフィックスのタイプを覚えるのに苦労しています!私のサフィックスのタイプを教えていただけますか? 左端何? 多くのサフィックスソートアルゴリズム(SAIS、KA、私自身のdaware)は、サフィックスをさまざまなタイプにグループ化してソートします。SタイプとLタイプの2つの基本タイプがあります。Sタイプのサフィックスは、次のサフィックスよりも辞書順で小さい(S小さい)接尾辞であり、それが辞書順で大きい場合(Lアーガー)はLタイプです。左端のS型(LMS型)だけのことである:A S型が付け加えているサフィックスL型接尾辞。 これらのLMSタイプのサフィックスの特別な点は、一度ソートすると、他のすべてのサフィックスを線形時間でソートできることです。すごくないですか? チャレンジ 文字列が指定された場合、その文字列内の他のどの文字よりも小さい(たとえば、nullバイトよりも小さい)特殊文字で終了すると想定します。各サフィックスのタイプ対応する文字を出力します。 どのタイプにどのcharを使用するかは自由に選択できますが、すべて印刷可能である限り()は好きL, S and *です。L-, S- and LMS-type0x20 - 0x7E 例 文字列mmiissiissiippi出力がある場合(を使用する場合L, S and *): LL*SLL*SLL*SLLL たとえば、1つ目Lは、mmiissiissiippi$辞書式にmiissiissiippi$($追加された最小文字を表す)よりも大きいという事実によるものです。 L - mmiissiissiippi$ > miissiissiippi$ L - miissiissiippi$ > iissiissiippi$ * - iissiissiippi$ < issiissiippi and preceeded by L S - issiissiippi$ < ssiissiippi$ L - …

5
それはクインだけではなく、アナグラムクインです!
タスク この課題の課題は、入力を取らないプログラムを作成し、できるだけ多くのアナグラムを使ってアナグラムを作成することです。 スコアは、プログラムのソースコードの有効なクインであるアナグラムの数を可能なアナグラムの総数で割った値、つまり有効なクインであるアナグラムのパーセンテージになります。 標準抜け穴と標準クインの規則が適用されます。 注:プログラムには少なくとも3 文字(3バイトではない)が必要です。 入力 それ自体のクインであるプログラムの各アナグラム(または順列)(つまり、スコアに含めているアナグラム)は、何も入力してはなりません。言語で入力が必要な場合は、小文字のAで構成される文字列がプログラムに与えられると想定できます。ただし、入力をいかなる方法でも使用してはなりません。 出力 nプログラムのソースコードの異なるアナグラムの数は有効なクインでなければなりません。ここnで、スコアに含めているアナグラムの数を表します。 これらのquine-anagaramは、変数に出力を書き込む以外の方法で出力できます。ファイル、コンソール、画面などへの書き込みが許可されます。関数returnも許可されます。 採点例 プログラムのソースコードがであるとしますcode。そして、 code出力code。 coed出力coed。 cdoe出力cdoe。 cdeo出力cdeo。 cedo出力cedo。 ceod出力ceod。 ocde出力ocde。 oced出力oced。 odce出力odce。 odec出力しないodecか、エラーを生成します。 oedc出力しないoedcか、エラーを生成します。 oecd出力しないoecdか、エラーを生成します。 doce出力しないdoceか、エラーを生成します。 doec出力しないdoecか、エラーを生成します。 dcoe出力しないdcoeか、エラーを生成します。 dceo出力しないdecoか、エラーを生成します。 deco出力しないdecoか、エラーを生成します。 deoc出力しないdeocか、エラーを生成します。 eodc出力しないeodcか、エラーを生成します。 eocd出力しないeocdか、エラーを生成します。 edoc出力しないedocか、エラーを生成します。 edco出力しないedcoか、エラーを生成します。 ecdo出力しないecdoか、エラーを生成します。 ecod出力しないecodか、エラーを生成します。 このソリューションのスコアは 受賞基準 最も高いスコアのソリューションが勝ちます!引き分けの場合は、char-count(byte-countではない)が高い方が勝ちます(つまり、コードボウリング)。それでも同点が続く場合は、以前に投稿されたソリューションが優先されます。

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