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

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

12
魔法のモジュロ正方形
私は数論の大ファンです。数論の大きなことはモジュラー算術です。m \ mid abの場合にのみ、定義はなります。楽しいことは、累乗することです。特に、モジュラスが素数の場合です。特に、aとmが比較的素数(1以外の共通因子を共有しない)の場合、a ^ e \ equiv 1 \ mod mのような数eが存在することが証明されています。≡ Bモッドma≡bmodma\equiv b\mod mm ∣ a − bm∣a−bm\mid a-bM 1 E A E ≡ 1aaammm111eeeae≡ 1モッドmae≡1modma^e\equiv 1\mod m 例題で演習を説明します。モジュラスm = 7m=7m=7取りましょう。プログラムまたは関数の可能な出力は次のとおりです。 3 2 6 4 5 1 2 4 1 2 4 1 6 1 6 1 6 1 …

6
文字列操作インタープリター
概要 文字のみを使用して、新しい文字列操作言語が作成されました$+#-!*|@>!あなたの仕事は、できる限り少ないバイトでインタプリタを実装することです。 入力 文字列。この言語の1行です。これは、合理的な方法(stdin、関数パラメーター、コマンドライン引数など)で、または事前定義された変数として使用できます。プログラムがユーザー入力を要求する場合は、stdinから要求するすべてのユーザー入力を受け入れます。以下を参照してください。あなたはそれが有効なプログラムであると仮定するかもしれません。 出力 言語が出力するものは何でも、以下の仕様。妥当な方法(stdout、関数出力など)で文字列、または変数値を出力する必要があります。言語が明示的に出力する場合、これは stdoutに移動する必要があります。標準的な抜け穴は禁止されています。 言語仕様 処理と構文 この言語は、文字列操作のみを行うため、処理の非常に単純な形式です。空の文字列("")で始まり、各用語で変更されます。用語は、1つまたは2つの部分で構成されます。関数(下)と、場合によってはその動作を編集するパラメーター(下)が続きます。用語はパイプ(|)で区切られます。あなたはそれが空のプログラムではなく、どの用語も空ではないと仮定するかもしれません。プログラムの最後に値を出力する必要があります。 関数 以下に示すように、この言語には6つの関数しかありません。各関数は、1つまたはゼロのパラメーターを受け入れます。 + 文字列を連結します(1つの文字列パラメーターを取り、それを現在の値に連結します) ! 現在の値の文字順を逆にします(パラメータなし) * 文字列を繰り返します(1つの整数パラメーターを取り、現在の値を何回も繰り返します) - 値のすべての出現を削除します(1つの文字列パラメーターを取り、現在の値からすべての出現を削除します) $ [pseudo-]現在の値をランダムにシャッフルします(パラメーターなし) <現在の値をstdout(パラメータなしで)出力します 値 これらは関数に渡される可能性のある値であり、それらに一致する正規表現で表されます。 @[^|]*パイプ以外の文字を含む文字列リテラル。空の場合があります。 #[0-9]+ 整数リテラル >の次の行stdin。で使用する場合*、整数に変換します。 テストケース ╔════════════════════════╤═════════════╤══════════════╗ ║code │input │output ║ ╟────────────────────────┼─────────────┼──────────────╢ ║+>|!|+@hello|*> │13 │31hello31hello║ ║ │2 │ ║ ╟────────────────────────┼─────────────┼──────────────╢ ║+>|+@abcdefg|$ │hello │hcloeebafdlg ║ ╟────────────────────────┼─────────────┼──────────────╢ ║+@how …

11
ビット単位のサイクリックタグのシミュレーション
チャレンジ 既定のI / O形式の2つの文字列を指定して、次の操作を行います。 注:チャレンジでは、最初の文字列を「データ」、2番目の文字列を「プログラム」と呼びます。 プログラムを無限の文字列に変更します。無限の文字列は、プログラムが無限に繰り返されるだけです(例10--- 1010101010...)。チャレンジではこれを「無限プログラム」と呼びます データが空ではない間、無限プログラムをループしながら次の操作を実行します。 a。現在のコマンドが「0」の場合、データの左端のビットを削除します。データが空の場合、「0」は何もしません。 b。現在のコマンドが「1」の場合、データの左端のビットが1であれば、プログラムの次の文字をデータに追加します。 c。データが空でない場合、データを出力します。 テストケース データは入力の左側であり、プログラムは右側です。 100, 0 --> 00, 0 1111, 1 --> 11111, 111111, 1111111, ... 10, 011 --> 0, 0, 0 1110, 011 --> 110, 1101, 11010, 1010... ノート データとプログラムは0と1のみで構成されます 停止しないデータ/プログラムの場合、プログラムを停止する必要はありません。 データとプログラムは入力では空になりません。 複数の末尾および先頭の改行がある場合があります 標準的な抜け穴は禁止されています 任意の便利なI / O形式を使用できます code-golfと同様に、最短のコードが勝ちます!

21
OEISポリグロット
これは、OEISに関連する回答連鎖の課題です。 ああ、これの正当化は、企業がOEISシーケンスを非常に悪く印刷するために1つのプログラムを必要とし、すべての言語を持っているからです。 回答連鎖形式は次のように機能します。 誰かが最初の回答を投稿し、そこからさらにすべてのソリューションが生まれます。この答えは、番号Nを指定すると、選択した任意のインデックス(シーケンス1と呼びます)のOEISシーケンスのN番目の番号を、選択した言語(言語1)で入力するプログラムです。 他の誰かがやって来て、独自のシーケンスを選択します(以前のシーケンスと以前のすべてのシーケンスとは異なる必要があります)。これらは、言語1の数Nが与えられた場合、シーケンス1のN番目の数を出力し、言語2の数が与えられた場合、N番目の数のシーケンスを出力する、別の言語(以前のすべての言語2。 このプロセスは無限に続きます。 シーケンスのn番目の用語は、最初の項目から機能し、最初の項目のn回後に来る項目です。ここでは、0と1のインデックスを使用して、コーダーを簡単にします! 言語やシーケンスの再利用はありません。 入力は整数または整数の文字列表現でなければならず、出力はシーケンスの正しい値でなければなりません。エラー処理(非整数入力)は必要ありません。 連続して2回投稿しないでください。 もう一度投稿する前に1時間以上待つ必要があります。 コンテストが無期限に続く場合もありますが、1週間も答えがなかった後、最後から2番目に投稿した人(チェーンを中断しなかった人)が勝ちます。あなたが最後で、もう1つの言語を追加できることを示すことができる場合、次の勝者まで挑戦を続けます。 入力または出力が言語の数値範囲外にないことを前提とすることができます(たとえば、IEEEの制限をシーケンスで超えないことを前提としています)。 1だけの言語。 以前に使用したことがない限り、任意のシーケンスを選択できます。 使用しているシーケンスの入力を範囲外にすることはできません。 2つの異なる言語バージョンは異なる言語です(Python 2とPython 3は独自の異なる言語と見なされます)。これは厳密ではありませんが、経験則として、TIOで同じ言語の別のバージョンから分離されている場合は異なります。 これは禁止されていませんが、OEISが提供する式を使用しないようにしてください。 結果のコードが65536文字を超える場合は、アクセスするためのリンク(Pastebinなど)を提供します。 これで終わりです。準備はいい?セットする?楽しい! はい、これは「次々にOEIS」ですが、マルチプレイヤーになります。かっこいいと思いました。

1
MENACEを実装する
バックグラウンド MENACE(M achine E ducable Nは oughts A ND C rosses E ngine)1960年代に英国のコンピュータ科学者ドナルド・ミッチーが作成したゲームNoughtsと十字のための初歩的な浅いの機械学習アルゴリズムです。元々は304個のマッチボックスで実装され、各マッチボックスにはボードの位置がラベル付けされており、色付きのビーズが含まれています(9色のいずれかで、可能な動きを表します)。Michieは、ボード上の動きのあらゆる組み合わせに対して、これらの304個のマッチボックスで十分であると計算しました。 あなたの中のより数学的な人は、実際にはN&Cボード上​​にNoughts、Cross、Blanksの19,683の可能な組み合わせがあることに気付くかもしれません。しかし、彼はこの数を減らす方法を計算しました(アルゴリズムを高速化し、マッチボックスを減らす可能性が高い!)。最初に、彼は次のような可能性のない動きをすべて削除しました。 ------- |X|0|X| | |0| | |X|X| | ------- (2つのoughtと4つの十字架) 次に、彼は回転を補正しました。たとえば、マッチ箱にある場合: ------- | |0|0| |X| |X| | |0| | ------- 同じ箱を使って ------- | |X| | |0| |0| | |X|0| ------- したがって、前述の色付きビーズは絶対的な位置ではなく、相対的な位置を表しています。たとえば、赤いビーズが左上を意味すると言った場合、ボックスの上部の画像を見て、次のように表示します。 ------- | |0|0| |X| |X| | …

11
野球ピッチ文字列を生成する
ゴール 正の整数を取り、nlengthの正当な一連のピッチ(以下、ピッチストリングと呼ぶ)をランダムに生成するプログラムまたは関数を作成しnます。 入力 ゼロ以外の正の整数n<= 100 出力 長さの可能な有効なピッチ文字列を表すランダム文字列または文字のリストを返しnます。使用される文字は次のとおりです。 B-ボール。これらの4つを蓄積する場合、打者は歩き、打撃を終えた。 S-ストライク。これらのうち3つを蓄積すると、打者は出てバッティングを終了します。 F-ファウル。また、ストライク数を増やしますが、打者を出すことはできません。つまり、有効な文字列の最後のピッチをファウルにすることはできません。2回のストライク/ファウルを過ぎたファウルは、ストライクカウントを増加させません(打者はその時点ですでに2回のストライクをしており、3回目は彼を追い出します)。 H-ヒット。バッターはボールをインプレーに打ち込み、バッティングを終了しました。 (これは少し簡略化されていますが、心配する必要はありません) 有効なピッチ文字列は、ストライクアウト、ウォーク、またはヒットで終わるものです。 つまり、無効なピッチ文字列には次のいずれかがあります 4番目のボール、3番目のストライク、またはヒット後の追加のピッチ 4番目のボール、3番目のストライク、またはヒットを生成する前に終了しました。 ルール プログラムは、指定された入力に対してすべての可能な結果を​​生成できる必要があります。 プログラムは一様にランダムである必要はありませんが、前の規則に従う必要があります。 これはcode-golfです。 例 Input => Possible Outputs 1 => [H] #Can only end with a hit 2 => [S,H], [B,H], [F,H] #Can only end with a hit 3 => [S,S,S], [F,F,S], [B,B,H], …


9
クインの大ピラミッド
このタスクは、ひねりを加えたかなり単純な挑戦です。ソースコードをピラミッドの形で出力する必要があります。ピラミッドの形状は次のように定義されます。 1 234 56789 ABCDEFG HIJKLMNOP QRSTUVWXYZa bcdefghijklmn ......etc...... この課題の主な制限は、ピラミッドのパターンを妨げないように、クインに正確に十分なバイトを含める必要があることです。たとえば、次のプログラムの長さが機能します。 1-byter: 1st layer of the pyramid (not allowed by definition of a quine). 4-byter: 1st and 2nd layers of the pyramid. 9-byter: 1st, 2nd and 3rd layers of the pyramid. etc... したがって、プログラムが次の場合: QWERTY 次のように配置されるため、有効ではありません。 Q WER TY ただし、プログラムがQWERTYUIOであれば、それで問題ありません。 Q WER …

3
グリッド上のあいまいな場所
4つの距離センサーを備えた小さなロボットがあります。部屋のレイアウトは知っていますが、グリッドの方向に固定できること以外の方向感覚はありません。読み取り値に基づいてロボットがどこにあるかを見つけたいが、センサーが限られているためあいまいになる可能性があります。 チャレンジの説明 部屋のレイアウトと時計回りの4つの距離測定値が表示され、あなたと壁の間のセル数が示されます。部屋の中央に壁があり、グリッドの端も壁です。ロボットを壁の上に置くことはできません。 あなたの目的は、ロボットがそこにいる可能性のある部屋内のすべての場所をリストし、与えられた読み取り値を与えることです。ロボットには向きの感覚がないため(グリッド上の90度の角度にロックされていることを除きます。つまり、ロボットが斜めになったり、他のスキュー角度になることはありません)、[1、2、3、 4]は、たとえば、[3、4、1、2]と同じです。 例 これらの例では、セル座標は、左上のセルから0のインデックス(x、y)のペアとして与えられます。読み取り値は、角括弧で囲まれたリストで時計回りに表示されます。レイアウトでは、空のセルを表すために、壁やその他の文字(通常はドット)にポンド記号を使用します。 事例1 . . . . . . . . . . # . . . . . [1、0、2、3] ==>(1、0)、(3、1) [0、0、3、3] ==>(0、0)、(3、0)、(0、3)、(3、3) [2、1、1、0] ==>(0、2)、(2、1) [1、1、2、2] ==>(1、1) 事例2 # a . # a . a # . . # a . . # . . …
11 code-golf  grid 

2
ゴルフパターソンワームズ
パターソンのワームは、無限の三角形のグリッド上に存在するセルオートマトンの一種であり、すべてのステップで、ある方向に回転し、1つのユニットを移動します。彼らが定義している特性は、同じ場所を2回通過することは決してできないということです。同じ環境に出会うと、同じ決定を下します。ワームは、尾を3に配置し、頭をこの六角形の中心に配置して、常に独自の視点から「認識」します。 たとえば、次のルールを持つワームを考えます。 0、1、2、4、および5がすべて空白の場合、方向2に移動します 0、1、4、および5が空白で、2が満たされている場合、方向0に移動します 0、1、および5が空白で、2および4が満たされている場合、方向0に移動します これにより、次のパスが得られます(Wikipediaから)。 ワームは、周囲がすべて満たされている状況で自分自身を見つけると、終了します。 入力 数字のリスト。n番目の数字は、ワームが遭遇するn番目の新しい状況で、判断を下さなければならない場合にどのような判断を下すべきかを示しています。周囲の1つを除くすべてが満たされている場合、空の方向にのみ移動する必要があることに注意してください。これは「決定」としてカウントされず、数値を消費しません。上記のワームの例を生成するには、入力はになります[2, 0, 0]。入力はワームを生成することが保証されており、ワームは終了し、パスをリトレースしません。また、入力が短すぎることはありません。 出力 から始まるワームの頭の位置を示す座標のリストを出力し(1, 0)ます。上に移動して右に移動するとy値のみが減少し、上に移動して左に移動するとx値が減少してy値が減少することを考慮します。たとえば、入力例のパスの出力は次のとおりです。 (1, 0), (1, 1), (0, 0), (-1, -1), (0, -1), (0, 0), (0, 1), (-1, 0), (0, 0) テストケース javascriptスニペットを使用して、テストを実行することもできます。 [2,0,0]: (1,0),(1,1),(0,0),(-1,-1),(0,-1),(0,0),(0,1),(-1,0),(0,0) [1,0,4,0,1,5]: (1,0),(2,1),(2,2),(1,2),(0,1),(0,0),(0,-1),(1,-1),(2,0),(2,1),(3,1),(4,2),(4,3),(3,3),(2,2),(1,1),(1,0),(2,0),(3,1),(3,0),(4,0),(5,1),(5,2),(4,2),(3,2),(2,1),(1,1),(0,0),(-1,0),(-2,-1),(-2,-2),(-1,-2),(0,-1),(1,0),(1,-1),(2,-1),(3,0),(4,1),(4,2),(5,3),(5,4),(4,4),(3,3),(3,4),(2,4),(1,3),(1,2),(1,1),(0,1),(-1,0),(-1,1),(-2,1),(-3,0),(-3,-1),(-2,-1),(-1,-1),(0,0) [1,0,5,1]: (1,0),(2,1),(2,2),(1,2),(0,1),(0,0),(0,-1),(1,-1),(2,0),(2,1),(3,2),(3,3),(2,3),(1,2),(0,2),(-1,1),(-1,0),(0,0),(1,1),(1,2),(1,3),(0,3),(-1,2),(-1,1),(-2,0),(-2,-1),(-1,-1),(0,0) [2,0,1,0]: (1,0),(1,1),(0,0),(-1,-1),(0,-1),(0,0),(-1,0),(-1,-1),(-1,-2),(0,-1),(1,0),(2,1),(1,1),(0,1),(0,0) 次の急いで組み立てられた(おそらくバグのある)プログラムは、ワームを表示します。 コードスニペットを表示 var canvas = document.querySelector("canvas"); var ctx …

7
整数と隣接因子の割合を近似する
1が要因としてカウントされない場合、 40には2つの隣接する要素(4と5)があります 1092には2つの隣接因子(13および14)があります 350には2つの隣接する因子がありません(その因子2、5、7、10、14、25、35、50、70、および175のうち、2つは連続していません) このプロパティを持つ正の整数の割合は、6(2×3)、12(3×4)、20(4×5)、30、56、…のいずれかで割り切れる割合です。これらの最初のnで割り切れる割合のみを計算すると、nが増加するにつれてより正確になる近似が得られます。 たとえば、n = 1の場合、2×3 = 6で割り切れる整数の割合、つまり1/6を求めます。以下のために、N = 2の近似がまだ1/6になるように、3×4 = 12で割り切れるすべての整数は、6でも割り切れます。以下のためのN = 3、6又は20で割り切れる整数の割合が1/5であり、等々 。 最初のいくつかの値は次のとおりです。 1 1/6 0.16666666666666666 3 1/5 0.20000000000000000 6 22/105 0.20952380952380953 9 491/2310 0.21255411255411255 12 2153/10010 0.21508491508491510 15 36887/170170 0.21676558735382265 21 65563/301070 0.21776663234463747 24 853883/3913910 0.21816623274423785 27 24796879/113503390 0.21846817967287144 指定された値の間のnの値の場合、出力は上記の値の出力と同じである必要があります(例:n = 5 →1/5)。 プログラムはnを取り、小数または小数の回答を出力する必要があります。あなたはかかりますnは(代わりに1-インデックスの、このシーケンスに例えば0-インデックスまたは2-インデックス)の任意のオフセットで。 …
11 code-golf  number 

3
算術幾何学的なシーケンスですか?
arithmetico-幾何学的配列は、算術配列及び幾何学的配列の要素単位の積です。たとえば、1 -4 12 -32は、算術シーケンス1 2 3 4と幾何学的シーケンスの積です1 -2 4 -8。整数算術幾何学的シーケンスのn番目の項は、次のように表現できます。 an=rn⋅(a0+nd)an=rn⋅(a0+nd)a_n = r^n \cdot (a_0 + nd) 一部の実数、非ゼロの実数、および整数。とは必ずしも整数ではないことに注意してください。dddrrra0a0a_0rrrddd たとえば、シーケンスに2 11 36 100 256 624 1472 3392は、、およびます。a0=2a0=2a_0 = 2r=2r=2r = 2d=3.5d=3.5d = 3.5 入力 合理的な形式の入力としての整数の順序付きリスト。幾何学的シーケンスの一部の定義では許可され、定義されるため、入力が算術幾何学的シーケンスであるかどうかは、が0 であるかどうかに依存しません。たとえば、入力として発生しませんn≥2n≥2n \ge 2r=0r=0r=000=100=10^0 = 1rrr123 0 0 0 0 出力 算術幾何学的なシーケンスであるかどうか。真実/偽の値、または2つの異なる一貫した値を出力します。 テストケース 正しい: 1 -4 12 …

3
一意のセットを構成する配列をカウントする
この質問には、目標がまったく異なりますが、合計のセットに適合する配列を見つけるための同様の設定があります。 A長さの配列を考えnます。配列には正の整数のみが含まれます。たとえばA = (1,1,2,2)。f(A)のすべての空でない連続したサブ配列の合計のセットとして定義しましょうA。この場合f(A) = {1,2,3,4,5,6}。作成する手順f(A) は次のとおりです。 の部分配列はAです(1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2)。それぞれの合計は1,1,2,2,2,3,4,4,5,6です。したがって、このリストから取得するセットはです{1,2,3,4,5,6}。 逆の配列を除き、などの同じ長さの他の配列がない場合、A 一意の配列を呼び出します。例として、同じ合計セットを生成する長さの他の配列はありません。Bf(A) = f(B)Af((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}3 要素が指定された整数sまたはである配列のみを考慮しますs+1。例えばもしs=1配列のみを含んでいるでしょう1と2。 仕事 所与のためのタスク、nおよびsその長さのユニークな配列の数をカウントすることです。それsはとの間にある1と仮定でき9ます。 配列の逆だけでなく、配列自体もカウントするべきではありません。 例 s = 1、答えは常にn+1です。 s = 2、上から数えて答えn = 1は次のとおりです。 2,3,6,10,20,32,52,86 s = 8、上から数えて答えn = 1は次のとおりです。 2,3,6,10,20,36,68,130 スコア 与えられたためにn、あなたのコードが出力のすべての値に対して答える必要がありますsから1にします9。スコアは、nこれが1分間で完了する最大値です。 テスト中 私のubuntuマシンでコードを実行する必要があるので、コードをコンパイルして実行する方法について、できるだけ詳細な指示を含めてください。 リーダーボード …

12
それを分割します。すべてではありません!
このStackOverflowの質問に触発されました。 入力: 3つの入力を使用します。 D分割する区切り文字 文字I両者の間には、その我々は(その音は漠然と、私は知っているが、私は以下のことを説明します)区切り文字を無視します 文字列 S 出力: 分割後の部分文字列を含むリスト/配列。 例: Input: D = ',' I = '"' S = '11020199,"Abc ",aduz,,444,bieb,dc,2 ,2222.00,whatever 5dc,222.22,22.00,"98,00","12,000,000",21-09-2018, 06:00,",-,"' Output: ['11020199', 'Abc ', 'aduz', '', '444', 'bieb', 'dc', '2 ', '2222.00', 'whatever 5dc', '222.22', '22.00', '98,00', '12,000,000', '21-09-2018', ' 06:00', ',-,'] どうして?カンマで分割も通常分割う98,00、12,000,000と,-,2/3枚インチ しかし、それらはI入力文字内にあるため、ここでの分割は無視します。 チャレンジルール: Iinput-string …
11 code-golf  string 

5
ASCIIカレンダープランナー
アクティビティのリストとその開始時刻/日付を指定して、適切な日のアクティビティを示すASCIIアートカレンダーを出力します。すべてのアクティビティは同じ月に行われることが保証され、同じ日に2つのアクティビティが行われることはありません。また、すべてのアクティビティはカレンダーボックスに収まることが保証されます。 カレンダーの日付は各ボックスの左上隅にあり、ボックスは幅9スペース、高さ5スペースで、で囲まれ-てい|ます。曜日の2文字の略語は最初の行の上に中央揃えされ、週は日曜日から始まります。 たとえば、次のアクティビティがあるとします。 10/5/2018 - 9:00am - Sandbox calendar challenge 10/9/2018 - 9:00am - Post challenge to main 10/10/2018 - 10:00am - Profit 10/31/2018 - 7:30pm - Halloween party この対応するカレンダーを出力します。 Su Mo Tu We Th Fr Sa ----------------------------------------------------------------------- | |1 |2 |3 |4 |5 |6 | | | | | …

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