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

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

9
スタガー、スタック、サム
このStack Overflowの質問に触発されました。 チャレンジ 入力 非負の整数を含む正方行列の配列。 出力 次のように入力行列から構築された正方行列。 ましょN× NN×NN \times N各入力行列のサイズ、であるPPP入力行列の数。 明確にするために、次の入力行列の例(N= 2N=2N=2、P= 3P=3P=3)を考慮してください。 3 5 4 10 6 8 12 11 2 0 9 1 最初の入力行列から始めます。 2番目の入力行列をN -1ステップ下にシフトし、N -1ステップ右にシフトして、左上エントリが前のエントリの右下エントリと一致するようにします。 2番目のシフトされたマトリックスが、最初のマトリックスの上に積み重ねられているように想像してください。一致するエントリで2つの値を合計します。他の値を書き込み、残りのエントリを埋めて(2 N − 1 )× (2 N − 1 )行列0を取得します。入力例では、これまでの結果は(2 N− 1 )× (2 N− 1 )(2N−1)×(2N−1)(2N-1)\times(2N-1) 3 5 0 …

16
最高値文字列
最高値文字列 入力文字列を指定すると、各Unicode文字の合計が最も高い単語を返します。 ルール 入力は空白で区切る必要があります 各単語の値は、単語のUTF-16コードの各文字の合計に基づいています 出力は、最大値を持つ最初の単語である必要があります(合計が重複している場合) 例 Input: "a b c d e" Output: "e" Input: "hello world" Output: "world" Input: "this is a test" Output: "test" Input: "àà as a test" Output: "àà" Input "α ää" Output: "α" Input: "🍬 隣隣隣" Output: "隣隣隣" Input: "💀 👻 🤡 🦇 🕷️ …

22
2D配列の行と列のブロックソート
整数の2D配列が与えられた場合、その行と列をブロックで並べ替えましょう。つまり、特定の行または列を並べ替えるだけで、並べ替えに必要な変換を2D配列の他のすべての行または列に適用できます。 ルール 入力は、整数の2D配列と1インデックス付き整数になります。この整数は、数値が正の場合にソートされる行を表し、数値が負の場合にソートされる列を表します(または、必要に応じて逆になります)。例:(4x3行x列)配列を指定すると、2番目の列を-2引数で、または3番目の行を引数でソートでき3ます。この2番目の引数はゼロになることはなく、その絶対値は配列の対応する次元より大きくなることはありません。 出力は、指定された行または列をソートするために必要な変換が適用された整数の2D配列にもなります。または、STDOUTに配列を書き込むこともできます。 出力配列には、指定された行または列が昇順でソートされます。行の2つの数字を交換する必要がある場合、数字が配置されている列全体が交換されることに注意してください。また、列内の2つの数字を交換する必要がある場合、数字が配置されている行全体が交換されます。 並べ替えられる行/列に同じ番号が複数回現れる場合、値を交換する方法に応じていくつかの解決策があり、交換される残りの行/列に応じてそれを行うだけです。 例 Positive indices for rows and negative indices for columns [5 8 7 6 [1 3 2 4 1 3 2 4 order by -3 (3rd column) --> 9 6 3 0 9 6 3 0] 5 8 7 6] [5 8 7 6 …

11
NFAをシミュレートする
非決定性有限オートマトンは、タプル有限状態機械である複数の状態にマッピングされます。すなわち。DFAの通常のδ :Q × Σ → Q遷移関数を別の関数Δ :Q × Σ → P(Q )に置き換えます。(state,symbol)(state,symbol)(state,symbol)δ:Q×Σ→Q δ:Q×Σ→Q \delta : Q \times \Sigma \to Q\ Δ:Q×Σ→P(Q)Δ:Q×Σ→P(Q)\Delta : Q \times \Sigma \to \mathcal{P}(Q) NFAが何であるかがわかっている場合は、次のセクションをスキップできます。 正式な定義 NFAは、 状態の有限集合QQQ 記号の有限集合ΣΣ\Sigma 遷移関数Δ:Q×Σ→P(Q)Δ:Q×Σ→P(Q)\Delta : Q \times \Sigma \to \mathcal{P}(Q) は初期状態q0∈Qq0∈Qq_0 \in Q 最終状態の集合F⊆QF⊆QF \subseteq Q マシンは中から始まりと記号の有限列読み込みのw ∈ Σ *を、各シンボルのために、それは同時に、現在の状態を遷移関数機能を適用すると、現在の状態の集合に状態のそれぞれの新しいセットを追加します。q0q0q_0w∈Σ∗w∈Σ∗w \in …

14
韻を繰り返し、母音でループする
母音韻:リンゴとバナナ すべての母音がランダムな母音に置き換えられるたびに同じテキストを何度も繰り返す伝統的な子供の歌がありますが、現在のスタンザ全体で一定です。 チャレンジ 目的は、入力テキストに対してこのような変換を実行する最短のコードを提案することです。 ルール 韻は、はっきりした母音が存在するのと同じ回数だけ印刷する必要があります。 各印刷は改行で区切る必要があります(プラットフォーム固有のコンボ\nとコンボ\rは受け入れられます)。 繰り返しのi場合、各母音をi元のテキストのth番目の別個の母音に置き換えます。 入力テキストは、印刷可能なASCII文字(範囲[32, 126]。 入力には埋め込み改行が含まれません。 母音文字のみが影響を受ける必要があり、その他は入力として正確に出力される必要があります。 母音文字のみがカウントされます。鼻の母音は、母音のように聞こえますが(フランス語の"Tintin"のように)、単一の母音として処理してはなりません。 出力では大文字と小文字が区別されますが、位置は異なります(大文字の母音の置換は大文字の置換母音で行われます) 大文字の母音は、小文字の母音と区別されません(つまり、a<=> A) 連続した母音は常に別々に考慮されます(つまりBoat、Bootとの両方を生成しますBaat) 文字yは母音または子音(英語を話しているように)を表すため、母音または子音として扱うことは許可されますが、答えはy母音として扱うかどうかを明示的に指定する必要があります。 例: こんにちは世界 Hello world! 与える: Helle werld! Hollo world! y母音として処理された元のフランス語のテキスト(翻訳済み)からの抜粋: An elephant that was rambling all gently in the woods... 与える: An alaphant that was ramblang all gantla an tha waads... En …
15 code-golf  string 

7
7セグメントスクロール
サンドボックスポスト イントロ 情報パネルはどこにでもあります。技術がより安価になると、紙のポスターは、図のように、一方の側に現れて他方の側に出てくる単語を示す明るい標識に変換されました。 これらの兆候の1つが起動すると、通常は空になり、テキストは右側から左側に向かって消え、消えるまで移動します。 その機能は、小さな電球(LED)を点滅させて、動きの感覚を与えることです。 テキストの代わりに数字のみを表示する必要がある場合は、次のようないわゆる7セグメントマーカーを使用して、ポスターの洗練度を大幅に下げることができます。 この場合、各数値は、すべての数値を表すことができる7つのライトセグメントのみのオン/オフの組み合わせで表されます。 私たちが自問する質問は、これらのポスターの1つを特定の数だけ通過させるために、ライトの変更(オンとオフの回数)を何回行う必要があるかということです。 たとえば、すべてのLEDが消灯した状態で始まる3桁の記号で123を表示するには、次のようにします。 これにより、合計42回のライトの変更が行われます。 チャレンジ 非負の数と正の符号の長さが与えられたら、ライトの変化の数を計算します。 ルール 入力が負でない数(N> = 0)と正の符号長(M> 0)で構成されていると仮定します 符号長> =数字の長さ(M> =桁数(N))を想定 テストケース 123, 3 => 42 45, 5 => 60 111, 3 => 12 98765, 10 => 220 0, 3 => 36
15 code-golf 

16
数が連続する素数の合計であるウェイの数
1より大きい整数を指定すると、1つ以上の連続する素数の合計として表現できるウェイの数を出力します。 被加数の順序は関係ありません。合計は単一の数値で構成できます(したがって、素数の出力は少なくとも1になります)。 これはcode-golfです。標準ルールが適用されます。 シーケンス自体OEIS A054845を含む関連情報およびシーケンスについては、このOEIS wikiを参照してください。 テストケース 2 => 1 3 => 1 4 => 0 5 => 2 6 => 0 7 => 1 8 => 1 10 => 1 36 => 2 41 => 3 42 => 1 43 => 1 44 => 0 311 => 5 1151 …

16
バスの負荷は合法ですか?
私は今日バスに乗っていて、このサインに気づきました: seated standing wheelchairs max1 37 30 00 max2 36 26 01 max3 34 32 00 座っている乗客、立ち客、車椅子の数はすべて、テーブルのある列より多くてはいけません。(詳細についてはチャットを参照してください。) この課題のために、この考え方を一般化します:厳密に正の長さN(乗客の種類の数)の非負の整数リストと、厳密に正の次元の非負の整数行列(N列と構成ごとに1行)を与えます、またはこれの転置)、どの構成の制限が満たされているかを示すインデックス/真偽値/ 2つの一意の値のリストを返します。 たとえば、上記のマトリックスの場合: 30,25,1→ [1](0-indexed)[2](1-indexed)or [false,true,false](Boolean)or ["Abe","Bob","Abe"](two unique values)etc. 次のテストケースは、真/偽のために上記の行列と0/1を使用します。 [30,30,0]→ [1,0,1] [30,31,0]→ [0,0,1] [35,30,0]→ [1,0,0] [0,0,1]→ [0,1,0] [0,0,0]→ [1,1,1] [1,2,3]→[0,0,0] 次のテストケースでは、次のマトリックスを使用します。 1 2 0 4 2 3 0 2 [1,2,1,2]→ [0,0] [1,3,0,1]→ …

21
重複する範囲まで埋める
してみましょう不特定の順序での正の整数のリストであり、重複を含有することができます。正の整数のリストを出力するプログラムや関数書き込みマージすること(順序は重要ではない)は、そのような及び完全整数の同じ範囲に分割することができる最小のリストに結果を[1..i] 、iはあるがLの最大要素M L M [ 1 .. i ] i LLLLMMMLLLMMM[ 1 .. i][1..i][1..i]私私iLLL 例 させてくださいL = [5,3,3,2,7]。の最大要素はLです7。特定の整数が発生するほとんどの回数は2(32回表示されます)。したがって、我々は出力にリスト必要Mに完了することができますL私たちが構築することができるよう2に整数の範囲1にします7。 そのため、を出力する必要がありますM = [1,1,2,4,4,5,6,6,7]。これにより、から1までの各整数が7出現します2。 入力と出力 リストに似た言語で何かを使用します。入力と出力に使用されるデータ構造は同じでなければなりません。 入力リストには正の整数のみが含まれます。 入力リストは空になりません。 入力リストがソートされていると想定することはできません。 出力リストの順序は重要ではありません。 テストケース Input Output [1] [] [7] [1, 2, 3, 4, 5, 6] [1, 1, 1] [] [1, 8] [2, 3, 4, 5, 6, …

30
最初のn個の素数の合計を計算する
とても明白なので、この挑戦​​がまだここにないことに驚いています。(または、私はそれを見つけることができなかったと誰もがそれを複製としてマークすることに驚いています。) 仕事 非負の整数与えられた場合、最初のn個の素数の合計を計算して出力します。nnnnnn 例1 以下のために、最初の5つの素数です。n=5n=5n = 5 2 3 5 7 11 これらの数値の合計はであるため、プログラムは28を出力する必要があります。2+3+5+7+11=282+3+5+7+11=282 + 3 + 5 + 7 + 11 = 28282828 例2 以下のために、「最初のゼロ」素数はどれもありません。そして、無数の合計は-もちろん-0です。n=0n=0n = 0000 ルール たとえば、数値が素数かどうかをチェックするために、組み込みを使用できます。 これはcode-golfなので、各言語の最小バイト数が勝ちです!
15 code-golf  primes 

25
混合分数の平等
小学校では、子どもたちは分子が分母より小さく、したがって分数の値が1より小さい適切な分数について学びます。後で、分数の値が1より大きい分数と、これらの分数を表す2つの異なる方法:混合分数と不適切な分数について教えます。 混合分数が与えられた場合、整数値と分子が連結された不適切な分数に等しいかどうかを判断します。たとえば、入力の1 3/4場合、不適切な分数は13/4です。 テストケース 1 3/4 -> falsey 1 3/10 -> truthy 6 6/7 -> falsey 55 55/100 -> truthy 4 9/100 -> falsey 40 9/100 -> falsey 7 49/1000 -> falsey 9 1/2 -> falsey 999 999/1000 -> truthy 1 21/200 -> falsey 1 21/101 -> falsey 入力については、整数部分と小数部分を別々の入力として使用できますが、小数を2つの部分として入力として使用することはできず、小数として使用することもできません。使用する必要がない場合は、整数部分を削除することができます(入力として使用しないでください)。

22
文字列が括弧で調整されているかどうかをテストします
私たちは、呼び出し括弧のグループをオープン括弧(のマッチングの近くの括弧、)およびその中のすべて。 括弧グループまたは文字列は、括弧付きバランスと呼ばれます何も含まないか、2つだけ含​​む場合、。 例えば: The string "(()())()" is parenthesly balanced ( )() Because it contains exactly 2 parenthesly balanced parens groups ()() The left one is parenthesly balanced because it contains 2 parenthesly balanced parens groups (balanced because they are empty). The right one is parenthesly balanced because it contains nothing. …

13
Superb Shuffle™を実行する
この質問のために、カードのデッキは次のようにフォーマットされています。 [ "AS", "2S", "3S", "4S", "5S", "6S", "7S", "8S", "9S", "10S", "JS", "QS", "KS", "AD", "2D", "3D", "4D", "5D", "6D", "7D", "8D", "9D", "10D", "JD", "QD", "KD", "AH", "2H", "3H", "4H", "5H", "6H", "7H", "8H", "9H", "10H", "JH", "QH", "KH", "AC", "2C", "3C", "4C", "5C", "6C", "7C", "8C", "9C", …
15 code-golf  cards 

16
調和級数の正確な部分和
チャレンジ 正の整数を指定するNと、最初のN逆数の合計を正確な分数として出力します。これは、分子と分母を表す一貫した順序の整数のペアとして表されます。 ルール 出力は正確でなければなりません。 出力は、分子と分母を表す一貫した順序の整数のペアである必要があります。 非整数の数値型(組み込みまたはライブラリ)の使用は禁止されています。 明確化/例外:使用、計算、および返される値がすべて整数である場合にのみ、非整数の数値型は問題ありません(つまり、言語はデフォルトで有理数を使用しますが、答えには整数演算のみを使用します) 出力はできるだけ減らす必要があります。(3/2大丈夫です、そうで6/4はありません) 標準的な抜け穴は禁止されています。 提出は、少なくとも20までの入力、またはこのメタのいずれか高い方で機能する必要があります。 テストケース 1: 1/1 2: 3/2 (1/1 + 1/2) 3: 11/6 (1/1 + 1/2 + 1/3) 4: 25/12 etc. 5: 137/60 6: 49/20 20: 55835135/15519504 56: 252476961434436524654789/54749786241679275146400 226: 31741146384418617995319820836410246588253008380307063166243468230254437801429301078323028997161/5290225078451893176693594241665890914638817631063334447389979640757204083936351078274058192000 テストケースの生成(Python 3) import fractions def f(x): return sum(fractions.Fraction(1,i) for i in range(1,x+1)) …

14
資本暗号
あなたの仕事は、範囲[32..126]の印刷可能なASCII文字で構成される空でない文字列を解読することです。 文字ごとの文字列の読み取り: 小文字の文字に出会うたびに、「A」で始まる大文字の次の文字に関連付けます 大文字の文字に出会うたびに、関連付けられている小文字の文字に置き換えます 他の文字は特別な処理を必要とせず、そのまま変更されません 例 入力文字列の場合"endlAsEBAEE": アソシエイトeへA、nへB、dへCとlへD 交換するAとe アソシエイトsへE 交換するEBAEEとsness 最終的な出力は"endlessness"です。 明確化と規則 入力文字列には、各小文字が1回しか含まれないことが保証されています。それ以降のすべてのインスタンスは、対応する大文字に置き換えられます。 入力文字列は有効であることが保証されています。(まだ小文字に関連付けられていない大文字は表示されません。) 大文字が小文字に関連付けられると、後で文字列で使用される場合とされない場合があります。例えば、CおよびD上記の例では使用されません。 これはcode-golfなので、バイト単位の最短回答が勝ちです! テストケース 入力: abcd honk! ABCD! abrAcAdABCA endlAsEBAEE helCo wDrCd! dermatoglyphics progBamFinD AuzJles & cCdL DCKf sphinx of black quKrtz, jOdge my vGw. K NODLM IPGZE HGF SOWBA GYVP QCV JKRX TGU. petBr AiABD …

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