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

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

15
ローマ数字に一致
チャレンジ 何らかの入力文字列が与えられ、1(= I)から3999(=MMMCMXCIX)のそれ以外の場合は偽値を返します。 詳細 入力は、文字のみで構成される空でない文字列ですIVXLCDM。 ローマ数字(このチャレンジでここで使用する)は、次のように定義されます。 次の記号のみを使用します。 Symbol I V X L C D M Value 1 5 10 50 100 500 1000 文字列が実際に有効なローマ数字であるかを定義するには、それは会話のルールを提供するために、おそらく最も簡単である10進数を書き込むにはa3 a2 a1 a0(それぞれがどこai。一桁を表し例を表すためにそうするために792、我々は持っているa3=0, a2=7, a1=9, a0=2。)ローマ数字として、我々はそれを分解する十の力に。10のべき乗は、次のように記述できます。 1-9: I, II, III, IV, V, VI, VII, VIII, IX 10-90: X, XX, XXX, XL, L, LX, LXX, LXXX, XC …

5
テトリス!最終的な高さ(3日目)
大学のコードチャレンジコンテストからのチャレンジ これは実際には0日目ですが、昨日の挑戦はあまりにも簡単で、ここで別の質問をだましてしまう可能性があります。 テトリスは、80年代に人気を博したビデオゲームです。ボードに収まるさまざまな形状の一連のピースを配置して、可能な限りコンパクトに収まるようにします。 この問題では、それぞれが特定の位置にあり、変更できない特定の向きで落ちる一連のピースを想定します。ピースは落下するにつれて積み上げられ、完全な行は削除されません(元のゲームのように)。目的は、すべての破片が落ちた後、ボードの各列の最終的な高さを決定することです。 図に示すように、合計7つの異なる部分があります。 チャレンジ ピースのリストが与えられたら、すべてのピースが落ちた後、ボードからすべての列の高さを出力します ピースは、I、R、Pの3つの数字で構成されます。最初の数字Iは、ピースの識別子です(図と同じ順序で1〜7の数字)。2番目の数値Rは、ピースの回転です。0、90、180、または270の値を取ることができ、反時計回り方向のピースの回転角度を表します。3番目の数字Pは、ピースの位置を示します。ピースが占める左側の列を表します(これは1または0のインデックスになります。指定してください)。 例とテストケース(1インデックス) 与えられた [[1, 0, 1], [4, 0, 1], [5, 90, 4]] 出力 [3, 3, 1, 3, 2] 与えられた [[6, 270, 4], [1, 180, 5], [1, 90, 6], [7, 0, 4]] 出力 [0, 0, 0, 9, 9, 8, 3, 3] 与えられた[[3,0,1],[3,180,3]]出力[1,1,4,4,4] 与えられた[[2,180,1],[2,0,3]]出力[2,2,4,3,3] ノート …
19 code-golf  tetris 

8
二重文字のステガノグラフィ
ステガノグラフィは、特定のキャリア内の特定のメッセージを隠し、疑わしく見えないパッケージを作成します。このチャレンジでは、入力としてASCIIメッセージとASCIIキャリアを使用するプログラムを作成し、メッセージに対応する文字が2倍になることを除いて、キャリアと同じパッケージを返すか印刷します。メッセージ。 ルール: キャリアにすでに同じ文字のシーケンスが複数回含まれており、それらがメッセージの文字のエンコードに使用されていない場合、プログラムはそれらを単一の文字に減らします。 運送業者にメッセージ文字が正しい順序で含まれていない場合、プログラムは何も返さないか、運送業者自体、またはエラーを返します。 メッセージとキャリアが空ではないASCII文字列であると想定できます。 大文字と小文字の区別:Aはaと同等ではありません。 複数のパッケージが有効な場合、プログラムはそれらの一部またはすべてを出力できます。 スペースは、他の文字と同様の文字です。 テストケース: メッセージキャリアパッケージ 「こんにちは」「到着しましたか?」「やったー?」または「それは実現しましたか?」 「先生」「届いたの?」「どうした?」 「foo」「届いたの?」「」または「届きましたか?」またはエラー。 「車」「猫はかっこいい」「CCaats arre col。」 「車」「猫はかっこいい」「」または「猫はクールです。」またはエラー。 「ソファ」「ソファ」「CCoouucchh」 「oo」「oooooooooo」「oooo」 「おお」「おおおおおあ」「おおおお」 これはコードゴルフであるため、最も少ないバイトが勝ちます。

3
周期的に自己記述的なリストを数える
周期的に自己記述的なリスト 次の条件が当てはまる場合、正の整数のリストLLLは周期的に自己記述的です。 LLLは空ではありません。 LLLの最初と最後の要素は異なります。 LLLを等しい要素の実行に分割すると、各実行の要素は次の実行の長さに等しく、最後の実行の要素は最初の実行の長さに等しくなります。 例えば、検討L=[1,1,1,2,3,3,1,1,1,3]L=[1,1,1,2,3,3,1,1,1,3]L = [1,1,1,2,3,3,1,1,1,3]。空ではなく、最初と最後の要素が異なります。私たちが実行にそれを破るとき、私たちが得る[[1,1,1],[2],[3,3],[1,1,1],[3]][[1,1,1],[2],[3,3],[1,1,1],[3]][[1,1,1],[2],[3,3],[1,1,1],[3]]。 最初の実行は111秒の実行であり、次の実行の長さ[2][2][2]は111です。 第二のランは、実行される222 S、及び次のランの長さ、[3,3][3,3][3,3]、である222。 3回目は、実行される333 S、および次のランの長さは、[1,1,1][1,1,1][1,1,1]である333。 4番目の実行は111秒の実行で、次の実行の長さ[3][3][3]は111です。 最後に、最後の実行は、実行される333 S、および最初のランの長さは、[1,1,1][1,1,1][1,1,1]であり、333。 これは、LLLが周期的に自己記述リストであることを意味します。 非例えば、リスト[3,2,2,2,1,4,1,1,1][3,2,2,2,1,4,1,1,1][3,2,2,2,1,4,1,1,1]の実行以降、周期的自己記述型でない222 Sは長さのランが続いている111。リスト[2,2,4,4,3,3,3,3][2,2,4,4,3,3,3,3][2,2,4,4,3,3,3,3]最後の実行はの実行されるので、また、周期的自己記述ない333 Sが、最初のランの長さを有しています222。 タスク この課題では、あなたの入力は整数n≥1n≥1n \geq 1。出力は、合計がnnn等しい周期的自己記述リストの数になります。例えば、n=8n=8n = 8もたらすべき444、周期的にので、その合計である自己記述リスト888である[ 1 、1 、1 、1 、4 ][1,1,1,1,4][1,1,1,1,4]、[ 1 、1 、2 、1 、1 、2 ][1,1,2,1,1,2][1,1,2,1,1,2]、[ 2 、1 、1 、2 、1 、1 ][2,1,1,2,1,1][2,1,1,2,1,1]及び[4,1,1,1,1][4,1,1,1,1][4,1,1,1,1]。最小のバイト数が優先され、他の標準的なコードゴルフ規則が適用されます。 ここからの入力の正しい出力値である111へ505050: 1 -> 0 …

13
ディリクレ畳み込み
ディリクレ畳み込みは、特別な種類のあるコンボリューション数論において非常に有用なツールとして表示されます。算術関数のセットで動作します。 チャレンジ 2つの算術関数f,gf,gf,g(関数f,g:N→Rf,g:N→Rf,g: \mathbb N \to \mathbb R)が与えられた場合、ディリクレ畳み込み (f ∗ g )を計算します:N → R(f∗g):N→R(f∗g):N→R(f * g): \mathbb N \to \mathbb R以下に定義します。 詳細 我々は、規則を使用0∉N={1,2,3,…}0∉N={1,2,3,…} 0 \notin \mathbb N = \{1,2,3,\ldots \}。 ディリクレ畳み込みf∗gf∗gf*g 2つの算術関数のf,gf,gf,g再び演算機能であり、それは以下のように定義される(f∗g)(n)=∑d|nf(nd)⋅g(d)=∑i⋅j=nf(i)⋅g(j).(f∗g)(n)=∑d|nf(nd)⋅g(d)=∑i⋅j=nf(i)⋅g(j).(f * g)(n) = \sum_\limits{d|n} f\left(\frac{n}{d}\right)\cdot g(d) = \sum_{i\cdot j = n} f(i)\cdot g(j).(両方和は表現と等価であるd|nd|nd|n手段は、d∈Nd∈Nd \in \mathbb N分割nnn従って総和は自然の上にある、除数の nnn同様に、我々はsubsituteすることができる。i=nd∈N,j=d∈Ni=nd∈N,j=d∈N i …

25
最高のサイコロ
チャレンジ: ここには、シーケンスの最初の100項目があります。 6,5,4,3,2,1,66,65,64,63,62,61,56,55,54,53,52,51,46,45,44,43,42,41,36,35,34,33,32,31,26,25,24,23,22,21,16,15,14,13,12,11,666,665,664,663,662,661,656,655,654,653,652,651,646,645,644,643,642,641,636,635,634,633,632,631,626,625,624,623,622,621,616,615,614,613,612,611,566,565,564,563,562,561,556,555,554,553,552,551,546,545,544,543,542,541,536,535,534,533,... このシーケンスはどのように形成されますか?最初に範囲内の[6, 1]数値を取得します(単一のダイで可能な最高値から最低値までのすべての値)。次に、数字[66..61, 56..51, 46..41, 36..31, 26..21, 16..11](最高から最低までの2つのサイコロのすべての可能な連結値)があります。その他 これはOEISシーケンスA057436に関連しています。1〜6の数字のみが含まれますが、同じ量の数字を持つすべての数字がシーケンスの後方にソートされます。 課題は、上記のシーケンスを使用して、機能/プログラムにこれらの3つのオプションのいずれかを選択することです。 入力を取得し、このシーケンスの番目の値を出力します。0インデックスまたは1インデックスのいずれかです。nnnnnn 入力を受け取り、このシーケンスの最初のまたは値を出力します。nnnnnnn + 1n+1n+1 シーケンスから値を無期限に出力します。 もちろん、合理的な出力形式を使用できます。文字列/整数/小数/などとして可能性があります。(無限の)リスト/配列/ストリーム/などとして。space / comma / newline / other区切り文字を使用してSTDOUTに出力できます。などなど。答えには、使用しているI / Oとオプションを明記してください。 一般的なルール: これはcode-golfであるため、バイト単位の最短回答が優先されます。 コードゴルフ言語では、コードゴルフ以外の言語で回答を投稿しないようにしてください。「任意の」プログラミング言語の可能な限り短い答えを考えてみてください。 デフォルトのI / Oルールを使用した回答には標準ルールが適用されるため、STDIN / STDOUT、関数/メソッド、適切なパラメーター、戻り値型、完全なプログラムを使用できます。あなたの電話。 デフォルトの抜け穴は禁止されています。 可能であれば、コードのテストへのリンク(TIOなど)を追加してください。 また、回答の説明を追加することを強くお勧めします。 オプション1を選択した場合の大きなテストケース: n 0-indexed output 1-indexed output 500 5624 5625 750 4526 4531 1000 …

13
Trifid Cipher(キーワードなし)
前書き: 私は子供の頃にコンパイルしたドキュメントにさまざまな暗号を保存しており、チャレンジに最も適していると考えたものをいくつか選んで(些細ではなく、難しくもありません)チャレンジに変換しました。それらのほとんどはまだサンドボックス内にあり、それらすべてを投稿するのか、それともほんの少数を投稿するのかはまだわかりません。これが2番目の(コンピューター暗号は、私が最初に投稿したものです)。 以下のための三裂星雲暗号アルファベット(キーワードを使用せずに)、(および追加のワイルドカード)は、3つの3×3テーブルに分割されます。 table 1: table 2: table 3: |1 2 3 |1 2 3 |1 2 3 -+----- -+----- -+----- 1|a b c 1|j k l 1|s t u 2|d e f 2|m n o 2|v w x 3|g h i 3|p q r 3|y z 暗号化するテキストは、テーブル行列番号にエンコードされた文字ごとの最初の文字です。たとえば、テキストthis is a …

10
このGCD操作を繰り返します
2008年のパトナム大会の問題A3 は次のように述べています。 正の整数の有限シーケンスから始めます。可能であれば、が分割しないように2つのインデックス選択し、とをそれぞれとでます。このプロセスが繰り返される場合、最終的に停止する必要があり、最終的なシーケンスは行われた選択に依存しないことを証明します。a1,a2,…,ana1、a2、…、ana_1, a_2, \dots, a_nj&lt;kj&lt;kj < kajaja_jakaka_kajaja_jakaka_kgcd(aj,ak)gcd(aj,ak)\gcd(a_j, a_k)lcm(aj,ak)lcm(aj,ak)\text{lcm}(a_j, a_k) このチャレンジでの目標は、入力として正の整数の有限シーケンスを取得し、それ以上の進行が不可能になるまでこのプロセスを繰り返した結果を出力することです。(つまり、結果のシーケンスのすべての数値が、その後に続くすべての数値を分割するまでです。)パトナムの問題を解決する必要はありません。 これはコードゴルフです。すべてのプログラミング言語で最短のソリューションが勝ちます。 テストケース [1, 2, 4, 8, 16, 32] =&gt; [1, 2, 4, 8, 16, 32] [120, 24, 6, 2, 1, 1] =&gt; [1, 1, 2, 6, 24, 120] [97, 41, 48, 12, 98, 68] =&gt; [1, 1, 2, 4, …

4
Pentomino 6x10ソリューションノーマライザー
おそらく今おわかりのように、6x10グリッドのペントミノパズルには2339のソリューションがあります。12個のペントミノにはさまざまなラベル付けスキームがあり、そのうちの2つが下の画像に示されています。 画像クレジット:ウィキペディア 現在のタスクの目的上、正規化されたペントミノソリューションは、2番目のラベル付けスキーム(Conwayの)を使用するソリューションであると言います。 例: O O O O O S S S Z Z P P R R S S W W Z V P P P R R W W Z Z V U U X R T W Y V V V U X X X T Y …

7
ベラルーシ・ラシュニク
すでにいくつかの国旗チャレンジがあります: AU CH FI FR GB GB IS KR NP US ...ここに、もう少し高度なものがあります: ベラルーシの国旗の装飾パターンを、赤と白の2つの異なる値のマトリックスとして返すか、印刷します。 ご使用の言語が行列をサポートしていない場合は、リストのリストまたは最も近いものを使用してください。余分な空白はすべての側面で許可されます。行列は転置できます。要素には一貫した区切り文字を含めることができます。また、行、たとえば出力はJSONにすることができます。1951または1995バージョンではなく、2012バージョンのオーナメントパターンを使用する必要があります。これはcode-golfなので、言語ごとの最短回答が勝ちます。 サンプル出力: ....###....#....###.... #..#####...#...#####..# ..###.###.....###.###.. .###...###...###...###. ###..#..###.###..#..### .###...###...###...###. ..###.###.....###.###.. #..#####...#...#####..# ....###....#....###.... ..#..#..#.....#..#..#.. .###...###...###...###. ##.##.##.##.##.##.##.## .###...###...###...###. ..#..#..#.....#..#..#.. ....###....#....###.... #..#####...#...#####..# ..#######.....#######.. .#########...#########. ####################### ####...#########...#### .#####..#######..#####. ..###....#####....###.. #..#....#######....#..# .......####.####....... #.....####...####.....# ##...####..#..####...## ###.####.......####.### .######..#...#..######. ..####...##.##...####.. ...###....###....###... ....##.#...#...#.##.... ...###....###....###... ..####...##.##...####.. .######..#...#..######. ###.####.......####.### …

3
フィンランド語でのSpooneriseの言葉
この課題は、私がアールト大学で受講したプログラミングコースに基づいており、そこからのテストケースが含まれています。素材は許可を得て使用されています。 2年半前に、英語でのスプーネリズムについての挑戦がありました。ただし、フィンランドでは、スポーネリズムははるかに複雑です。 フィンランドのスプーネリズム フィンランド語では、母音がaeiouyäöあり、子音がありbcdfghjklmnpqrstvwxzます。(å技術的にはフィンランド語の一部ですが、ここでは考慮しません。) 最も基本的なspoonerismsは、各単語の最初の母音、およびそれらに先行する子音のみを取り、部分を交換します: henri kontinen -&gt; konri hentinen tarja halonen -&gt; harja talonen frakki kontti -&gt; kokki frantti ovi kello -&gt; kevi ollo 長母音 一部の単語には、同じ連続した母音が2つ含まれています。これらの場合、長さを同じに保つために、母音ペアを他の単語の最初の母音、短縮または延長母音と交換する必要があります。 haamu kontti -&gt; koomu hantti kisko kaappi -&gt; kasko kiippi 2つの異なる連続した母音の場合、これは適用されません。 hauva kontti -&gt; kouva hantti puoskari kontti -&gt; kooskari puntti 3つ以上の同じ連続文字が入力に表示されません。 母音の調和 …
19 code-golf  string 

12
行列は正定値ですか?
前書き 今日は、1年目の線形代数の学生の悩みの種である、行列の確定性を考慮します!どうやらこれにはまだ挑戦がありませんので、ここに行きます: 入力 任意の便利な形式のA n×nn×nn\times n 対称マトリックスAAA(もちろん、マトリックスの上部または下部のみを取ることもできます) オプション:行列nのサイズnnn 何をすべきか? 課題は簡単です。実数値の行列n×nn×nn\times n与えられると、Matrixは、もしそうなら真理値を出力し、そうでなければ偽値を出力することにより、正定かどうかを決定します。 ビルトインが実際に正確に機能するため、戦略/コードが「確かに」正しい結果をもたらす場合、間違った動作を引き起こす可能性のある数値的な問題を考慮する必要はありません。 誰が勝ちますか? これはcode-golfなので、バイト単位の最短コード(言語ごと)が勝ちます! とにかく正定行列とは何ですか? 対称行列が正定値の場合、明らかに6つの等価な定式化があります。3つの簡単なものを再現し、より複雑なものについてはWikipediaを参照してください。 もし∀v∈Rn∖{0}:vTAv&gt;0∀v∈Rn∖{0}:vTAv&gt;0\forall v\in\mathbb R^n\setminus \{0\}: v^T Av>0、次いでAAA正定値です。これは、次のように再定式化できます。すべての非ゼロベクトルについて、との(標準)内積が正の場合、は正定です。vvvvvvAvAvAvAAA ましょうである固有値の、今ならすべてです(固有値が正の場合)、は正定値です。説明(および必要な計算戦略)が長すぎてこの記事に含まれないため、固有値が何かわからない場合は、お気に入りの検索エンジンを使用して調べることをお勧めします。λii∈{1,…,n}λii∈{1,…,n}\lambda_i\quad i\in\{1,\ldots,n\}AAA∀ I ∈{1,…,n}:λi&gt;0∀i∈{1,…,n}:λ私&gt;0\forall i\in\{1,\ldots,n\}:\lambda_i>0AAA 場合コレスキー分解の存在する、すなわち、下三角行列が存在するよう、その後正定値です。負の引数のためにアルゴリズム中のルートの計算が失敗した場合、これは早期に返される「false」と同等であることに注意してください。AAALLLL LT= ALLT=ALL^T=AAAA 例 真実の出力 ⎛⎝⎜100010001⎞⎠⎟(100010001)\begin{pmatrix}1&0&0\\0&1&0\\0&0&1\end{pmatrix} ⎛⎝⎜⎜⎜1000020000300004⎞⎠⎟⎟⎟(1000020000300004)\begin{pmatrix}1&0&0&0\\0&2&0&0\\0&0&3&0\\0&0&0&4\end{pmatrix} ⎛⎝⎜52−121−1−1−13⎞⎠⎟(52−121−1−1−13)\begin{pmatrix}5&2&-1\\2&1&-1\\-1&-1&3\end{pmatrix} ⎛⎝⎜1−22−2502030⎞⎠⎟(1−22−2502030)\begin{pmatrix}1&-2&2\\-2&5&0\\2&0&30\end{pmatrix} (7.152.452.459.37)(7.152.452.459.37)\begin{pmatrix}7.15&2.45\\2.45&9.37\end{pmatrix} 偽の出力用 (少なくとも1つの固有値が0 /半正の正数) ⎛⎝⎜3−22−240202⎞⎠⎟(3−22−240202)\begin{pmatrix}3&-2&2\\-2&4&0\\2&0&2\end{pmatrix} (固有値は異なる符号/不定) ⎛⎝⎜1000−10001⎞⎠⎟(1000−10001)\begin{pmatrix}1&0&0\\0&-1&0\\0&0&1\end{pmatrix} (0より小さいすべての固有値/負定) ⎛⎝⎜−1000−1000−1⎞⎠⎟(−1000−1000−1)\begin{pmatrix}-1&0&0\\0&-1&0\\0&0&-1\end{pmatrix} (0より小さいすべての固有値/負定値) ⎛⎝⎜−2303−5000−1⎞⎠⎟(−2303−5000−1)\begin{pmatrix}-2&3&0\\3&-5&0\\0&0&-1\end{pmatrix} (0より小さいすべての固有値/負定値) (−7.15−2.45−2.45−9.37)(−7.15−2.45−2.45−9.37)\begin{pmatrix}-7.15&-2.45\\-2.45&-9.37\end{pmatrix} (3つの正の固有値、1つの負の固有値/不定) …

8
らせん状の周辺
自然数を取り、それらを反時計回りにらせんに丸めると、次の無限らせんになります。 ....--57--56 | 36--35--34--33--32--31--30 55 | | | 37 16--15--14--13--12 29 54 | | | | | 38 17 4---3---2 11 28 53 | | | | | | | 39 18 5 0---1 10 27 52 | | | | | | 40 19 6---7---8---9 26 51 | | …

27
奇妙な追加
チャレンジ 2つの自然数の奇妙な合計を計算します(月の加算とも呼ばれます)。 10進数で記述された2つの自然数が与えられるA=... a2 a1 a0と、最大演算に基づいて、次のように奇妙な合計が定義されます。 B=... b2 b1 b0A+B=... max(a2,b2) max(a1,b1) max(a0,b0) ... a2 a1 a0 + ... b2 b1 b0 ---------------------------------------- ... max(a2,b2) max(a1,b1) max(a0,b0) 入力 2つの自然数 次のすべてが許可されます。 ゼロが埋め込まれた文字列(同じ長さ) 左スペースが埋め込まれた文字列 右スペースが埋め込まれた文字列 2つの埋め込み文字列の配列 2Dスペースが埋め込まれたchar配列 出力 自然数 例 1999+2018--&gt;2999 17210+701--&gt;17711 32+17--&gt;37 308+250--&gt;358 308+25--&gt;328 ルール 入力と出力は、任意の便利な形式で指定できます(言語/ソリューションに最適な形式を選択してください)。 負の値や無効な入力を処理する必要はありません 完全なプログラムまたは機能のいずれかが受け入れられます。関数の場合、出力する代わりに出力を返すことができます。 可能であれば、他の人があなたのコードを試せるように、オンラインテスト環境へのリンクを含めてください! 標準的な抜け穴は禁止されています。 これはコードゴルフなので、通常のゴルフルールがすべて適用され、最短のコード(バイト単位)が勝ちます。

30
vroooomingの速度はどれくらいですか?
前書き 車の速度計がハッキングされました!運転速度を示す代わりに、「Vroooom!」と表示されます。どれだけ早く行くかを教えてください。 チャレンジ 入力として文字列を取得し、正規表現に一致するかどうかを確認し/^[Vv]ro*m!$/mます。英語では、文字列のすべての行は大文字または小文字vで始まり、次に小文字r、次に任意の量(ゼロを含む)の小文字o、そして正確な文字列でなければなりませんm!。他の行があるかもしれませんが、Vroom文字列はそれ自身の行になければなりません。 一致するものが見つかった場合o、Vroom文字列内のの数をカウントして出力する必要があります。ただし、一致するものが見つからない場合は、他の方法では出力できないデフォルト値(-1または空の文字列など)を出力する必要があります。 リマインダー I / Oは合理的な形式である 標準的な抜け穴は禁止されています 提出は完全なプログラムまたは機能である場合があります 入力には1つのVroomストリングのみが保証されます 得点 これはcode-golfであるため、バイト単位の最短コードが優先されます。ただし、回答に承認済みのマークを付けません。 テストケース 入力 Vrom! 出力 1 入力 vrooooooom! 出力 7 入力 Hello, Vroom! 出力 (none) 入力 Foo bar boo baz Vrooom! hi 出力 3 入力 Vrm!ooo 出力 (none) 入力 PPCG puzzlers pie 出力 (none) 入力 hallo vROOOm! …

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