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

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

17
デジタルルートでソートされた整数
正の整数のデジタルルート(繰り返しデジタル合計)は、前の繰り返しの結果を使用して数字の合計を計算する各繰り返しで、数字を合計する反復プロセスによって取得された(1桁の)値です。このプロセスは、1桁の数字に達するまで続きます。 たとえば、65536のデジタルルートは7です。これは、6 + 5 + 5 + 3 + 6 = 25および2 + 5 = 7であるためです。 すべてのデジタルルートを並べ替えるのはあまり意味がありません。無限に1で始まるためです。 代わりに、すべての1桁の整数とそのデジタルルートのリストを作成し、次にすべての2桁の数字とそのデジタルルート、次にトリプル、4倍などのリストを作成します。 次に、これらのリストのそれぞれについて、デジタルルートが1のすべての整数が最初に表示され、次にデジタルルートが2のすべての整数が表示されるようにソートします。ソートは安定しているため、特定のデジタルルートを持つ整数のリストは、ソート後に昇順になります。 最後に、これらのリストを1つのシーケンスに連結します。このシーケンスは、すべて1桁の数字で始まり、次にすべての2桁の数字(デジタルルートでソート)、すべての3桁の数字などになります。 チャレンジ: 入力として正の整数nを取り、上記のシーケンスのn番目の数を出力します。リストが0インデックス付きか1インデックス付きかを選択できます。 シーケンスは次のようになります。 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91, 11, 20, 29 ... 72, 81, 90, 99, …

12
文化の男性を生成する
この挑戦は文化のミームメンに触発されます。 ミームには、元のキャプションの一部を空白にすること、 ああ、私もあなたは文化の人だと思います。 キャラクターが他のことを言っているように見せるため。 あなたの挑戦は、入力を与えられて、入力文字列を達成するために元の文を空白にする方法を示すプログラムを書くことです。 ルール: -文字を使用して、空白文字を表します。 入力文字列を実現するために追加の文字を追加しないでください 文字列比較は大文字と小文字を区別しないものとして扱うことができます 文字列の比較では空白を無視できます 置換が不可能な場合は、偽の値を出力します。 -必須ではありませんが、冗長な空白も同様に使用できます。 複数のソリューションが可能な場合、それらのいずれかを出力できます。 テストケース: 基本: ミーム例1 Ah, I see you're a well. > Ah, I see you're a --- -- ------- -- well. ミーム例2 Ah, I see well. > Ah, I see ------ - --- -- ------- -- well. エッジケース1: …
24 code-golf  string 

30
連続した文字を数える
文字のみを含む文字列の場合、単語に含まれる連続したアルファベットの最長実行の長さを出力します。順序は関係ありません。アルゴリズムの例では、単語をソートし、重複を削除してから、最長実行の長さを出力します。 テストケース watch -> 1 stars -> 3 antidisestablishmentarianism -> 3 backdoor -> 4 a -> 1 tutorials -> 4 たとえばantidisestablishmentarianism、文字が含まれていますabdehilmnstrます。最長の実行はとlmnでrst、両方とも長さ3です。 ノート 入力としてすべて小文字、すべて大文字、または大文字と小文字を混在させることができますが、大文字と小文字の区別は単語に関する情報をエンコードできません(つまり、最初のn文字を大文字にすることはできませんn)。 これはcode-golfであるため、バイト単位の最短回答が優先されます。

30
サインスワップ和
正の整数空でないリストが与えられた場合、あなたの仕事はの一意の値の数を決定することです± x ± y ± z ± …(x,y,z,…)(x,y,z,…)(x, y, z, \dots)±x±y±z±…±x±y±z±…\pm x \pm y \pm z \pm \dots たとえば、リスト 1、2、2)を考えます。合計を作成するには8つの方法があります。(1,2,2)(1,2,2)(1, 2, 2) +1+2+2→+5+1+2+2→+5+ 1 + 2 + 2 \to +5 +1+2−2→+1+1+2−2→+1+ 1 + 2 − 2 \to +1 +1−2+2→+1+1−2+2→+1+ 1 − 2 + 2 \to +1 +1−2−2→−3+1−2−2→−3+ 1 − 2 …

17
アリスとボブは戦います
アリス(A)とボブ(B)は戦いをすることにしました。 各戦闘員の体力は10です。 彼らは、ダメージのために6面のサイコロを振って交代します。 そのダメージは相手のヘルスから取り除かれます。 最終的に、アリスまたはボブのいずれかが敵を打ち負かします。 戦いの様子を見せてください。実行されたアクションのこれらのコードを出力します。 攻撃 B a A ^ Combatant ^ Action (attack) ^ Target ロール B r 4 ^ Combatant ^ Action (roll) ^ Value 健康の変化 A h 6 ^ Combatant ^ Attribute (health) ^ Value 勝つ A w ^ Combatant ^ Action (win) 出力例: A a …
24 code-golf  game 

22
バートランドの素数
ベルトランの仮説は、すべての整数のためと述べているN≥1少なくとも一つの素数が存在したpように、N <P≤2nのは。n <4000のこの定理を検証するために、4000のケースをチェックする必要はありません。Landauのトリックは、 2, 3, 5, 7, 13, 23, 43, 83, 163, 317, 631, 1259, 2503, 5003 すべてが素数です。これらの各数値はその前身の2倍未満であるため、各区間{y:n <y≤2n}にはこれらの素数の少なくとも1つが含まれます。 この一連の数字は、バートランド素数(OEIS A006992)であり、次のように定義されています。 a(1) = 2 a(n) = largest prime below 2a(n-1) チャレンジ このシーケンスを実装します。あなたは書くことができます nを指定した関数またはプログラムがa(n)(0または1のインデックス)を返します。 nを指定した関数またはプログラムは、このシーケンスの最初のn(またはn-1またはn + 1)エントリを返します。 無限のリスト、ストリーム、ジェネレーター、または同様の言語の同等物。

12
Nのべき乗の差として数字を書く
チャレンジ 2つの正方形の差、2つの立方体の差、またはさらに高いべき乗として表現できる数値が多数あります。正方形について言えば、2つの正方形の差として、たとえば75のような数を書くさまざまな方法があります。あなたは書ける: 75 = (10)^2 - (5)^2 = (14)^2 - (11)^2 = (38)^2 - (37)^2 それでは、挑戦について話しましょう。まず、ユーザーが数値を入力し、次にnの値を入力します。その数をaⁿ-bⁿの形式で書くことができるすべての方法を表示する必要があります。 入出力 入力は、nの数と値になります。出力には、上記の条件が満たされるように、「a」と「b」のすべてのペアが含まれます。ペアの最初の数値は、2番目の数値よりも大きくする必要があります。a、b、nおよび入力番号はすべて正の整数であり、n> 1であることに注意してください。 例 50, 2 -> (none) 32, 2 -> (9,7), (6, 2) 7, 3 -> (2,1) 665, 6 -> (3, 2) 81, 4 -> (none) 得点 これはcode-golfなので、最短のコードが優先されます!

26
順次分割可能
時々、眠りにつくために、できる限り多くカウントしますが、平方フリーでない数値はスキップします。連続していくつかの数字をスキップすると、少しスリル48,49,50があります-たとえば、すべてが平方フリーではありません(48は2 ^ 2、49 x 7 ^ 2、50 x 5 ^ 2で割り切れます)。 これにより、任意の除数のシーケンスで割り切れる隣接する数値の最も初期の例について疑問に思いました。 入力 入力は、a = [a_0, a_1, ...]少なくとも1つの要素を含む厳密に正の整数の順序付きリストです。 出力 出力は、除算、除算、より一般的に除算nするプロパティを持つ最小の正の整数です。そのようなものが存在しない場合、関数/プログラムの動作は定義されていません。a_0na_1n+1a_kn+kn テストケース [15] -> 15 [3,4,5] -> 3 [5,4,3] -> 55 [2,3,5,7] -> 158 [4,9,25,49] -> 29348 [11,7,5,3,2] -> 1518 得点 これはcode-golfです。最短の結果(言語ごと)が自慢できます。通常の抜け穴は除外されます。
24 code-golf 

30
ASCII Pylonsを構築する必要があります!
私のアナゴルフ投稿からクロス投稿(注:ネタバレが含まれている場合があります、死後)。 次のテキストを正確に出力します。 各行に後続の空白があり、後続の改行もあります。 バイト単位の最短コードが優先されます。 !"! "#$#" #$%&%$# $%&'('&%$ %&'()*)('&% &'()*+,+*)('& '()*+,-.-,+*)(' ()*+,-./0/.-,+*)( )*+,-./01210/.-,+*) *+,-./012343210/.-,+* +,-./0123456543210/.-,+ ,-./01234567876543210/.-, -./0123456789:9876543210/.- ./0123456789:;<;:9876543210/. /0123456789:;<=>=<;:9876543210/ 0123456789:;<=>?@?>=<;:9876543210 123456789:;<=>?@ABA@?>=<;:987654321 23456789:;<=>?@ABCDCBA@?>=<;:98765432 3456789:;<=>?@ABCDEFEDCBA@?>=<;:9876543 456789:;<=>?@ABCDEFGHGFEDCBA@?>=<;:987654 56789:;<=>?@ABCDEFGHIJIHGFEDCBA@?>=<;:98765 6789:;<=>?@ABCDEFGHIJKLKJIHGFEDCBA@?>=<;:9876 789:;<=>?@ABCDEFGHIJKLMNMLKJIHGFEDCBA@?>=<;:987 89:;<=>?@ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA@?>=<;:98 9:;<=>?@ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA@?>=<;:9 :;<=>?@ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA@?>=<;: ;<=>?@ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA@?>=<; <=>?@ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA@?>=< =>?@ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA@?>= >?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?> ?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCB CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDC DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFED EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGF GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHG HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIH IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJI JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJ KLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLK LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONML MNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONM NOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPON …

29
パスカルの三角形(並べ替え)
ここのほとんどの人はパスカルの三角形に精通しています。連続する行で形成されます。各要素は、左上と右上の2つの隣接要素の合計です。最初の5行は次のとおりです(Generate Pascalの三角形から借用)。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 . . . これらの行を左に折りたたむ 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 . . . 昇順に並べ替えます 1 1 1 1 1 2 1 1 3 3 …

3
簡易カーニングを実装する
前書き カーニングとは、テキストの文字間の間隔を調整することを意味します。例として、Top次の3つのグリフで書かれた単語を考えます。 ##### ..... ..... ..#.. ..... ..... ..#.. ..##. .###. ..#.. .#..# .#..# ..#.. .#..# .#..# ..#.. ..##. .###. ..... ..... .#... ..... ..... .#... グリフ間のギャップをドットで埋めて完了させることもできますが、ギャップはどうやら広すぎるように見えます。代わりに、グリフを左にスライドさせて、ほとんど触れないようにします。 #####........ ..#.......... ..#..##..###. ..#.#..#.#..# ..#.#..#.#..# ..#..##..###. .........#... .........#... これはずっと良く見える!のバーがTの左の境界線の上にあることに注意してくださいo。この課題では、このような長方形のグリフに簡単なカーニングプログラムを実装することがタスクです。 カーニングプロセス 二長方形の2次元文字配列考える.と#同じ形状を。単純なカーニングプロセスでは、最初に1列の.sを挟んで配列を並べて配置します。次に、#右と左の配列のいくつか#が直交または斜めに隣接するまで、右の配列のそれぞれを左に1ステップ移動します。カーニングの結果は、隣接するを導入する前のステップ#です。あなたの仕事は、このプロセスを実装することです。 例を見てみましょう: Inputs: ..### #.... #.... ..##. ...#. ...## ..### ....# Process: ..###....#. …
24 code-golf  grid  code-challenge  atomic-code-golf  code-golf  combinatorics  probability-theory  card-games  code-golf  number  geometry  code-golf  decision-problem  chess  code-golf  math  number  sequence  code-golf  string  regular-expression  code-golf  arithmetic  integer  code-golf  math  array-manipulation  code-golf  number  decision-problem  integer  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  decision-problem  graph-theory  binary-matrix  code-golf  string  parsing  code-golf  string  code-golf  morse  code-golf  code-golf  string  code-golf  ascii-art  cellular-automata  code-golf  binary  base-conversion  code-golf  arithmetic  decision-problem  integer  checksum  code-golf  matrix  linear-algebra  code-golf  code-golf  game  code-golf  sequence  binary  code-golf  combinatorics  optimization  code-golf  decision-problem  quine  code-golf  rational-numbers  bitwise  code-golf  string  permutations  code-golf  kolmogorov-complexity  unicode  code-golf  ascii-art  number  code-golf  number  integer  binary  base-conversion  code-golf  array-manipulation  code-golf  chemistry  code-golf  number  sequence  fibonacci  code-golf  matrix  optimization  code-golf  number  code-golf  math  number  sequence  code-golf  math  array-manipulation  matrix  linear-algebra  code-golf  kolmogorov-complexity  cops-and-robbers  cops-and-robbers  code-golf  tips  basic  code-golf  decision-problem  binary  tiling  game  king-of-the-hill  python  code-golf  c  code-golf  ascii-art  code-golf  string  kolmogorov-complexity  alphabet  code-golf  number  code-golf  string  code-golf  number  sequence  integer  code-golf  number  permutations  restricted-complexity  restricted-time 

22
同一の要素間の最大実行
これは、ar kangによって削除されたこの質問のオーバーホールです。その質問のOPがこの質問を取り戻したい場合、またはこれを投稿することで問題がある場合は、喜んで対応します 入力として整数のリストを指定すると、同じ値で開始および終了する連続サブリストの最大可能合計を見つけます。サブリストの長さは少なくとも2でなければなりません。たとえば、リストの場合 [1, 2, -2, 4, 1, 4] 同じ値で開始および終了する2つの異なる連続サブリストがあります [1,2,-2,4,1] -> 6 [4,1,4] -> 9 大きい方の合計は9なので、9を出力します。 すべての入力に少なくとも1つの重複が含まれると想定できます。 これはコードゴルフであるため、回答はバイト単位でスコアリングされ、バイト数は少ない方が良いでしょう。 テストケース [1,2,-2,4,1,4] -> 9 [1,2,1,2] -> 5 [-1,-2,-1,-2] -> -4 [1,1,1,8,-1,8] -> 15 [1,1,1,-1,6,-1] -> 4 [2,8,2,-3,2] -> 12 [1,1,80] -> 2 [2,8,2,3,2] -> 17

27
配列を列挙し、重複をグループ化します
この課題の目的は、正の整数の配列を取得し、そのインデックスを列挙して、要素のようにグループ化することです。 重複のない列挙は(value, index)、たとえば[3, 4, 13, 9, 2]=>のようなペアの配列を出力するだけで行われ[[3,1],[4,2],[13,3],[9,4],[2,5]]ます。 ただし、特定の要素が2回目に出現した場合、その要素には独自のペアが与えられるのではなく、最初に出現するグループに追加されます。私たちの上の例では、我々は3と9を交換した場合、出力には、我々は削除します[9,4]と交換してください[3,1]と[3,1,4]。 出力では、グループは最初に出現する順に並べる必要があり、インデックスは昇順である必要があります。要素は、インデックスの前にグループの最初になければなりません。出力には、0または1のインデックスが付けられます。配列に少なくとも1つの要素があると仮定できます。 テストケース: Input | Output (One-indexed) [3, 2, 2, 3] | [[3, 1, 4], [2, 2, 3]] [17] | [[17, 1]] [1, 1] | [[1, 1, 2]] [1, 1, 2] | [[1, 1, 2], [2, 3]] [1, 2, 3, 4] | [[1, …

7
誰がロック、ペーパー、はさみ、トカゲ、スポックのゲームに勝ちますか?
このゲームに関しては、いくつかの質問があります。ここでは、キングオブザヒルコンテストもあります。しかし、これらの課題とコンテストにはすべて、ゲームの勝者を自動的に決定する方法が必要だと思います。そう: チャレンジ ["rock", "paper", "scissors", "lizard", "spock"]プレーヤー1とプレーヤー2の選択を表す範囲内の2つの入力が与えられた場合、試合の勝者を決定します。 ルール [Winner] [action] [loser] ----------------------------- scissors cut paper paper covers rock rock crushes lizard lizard poisons spock spock smashes scissors scissors decapitates lizard lizard eats paper paper disproves spock spock vaporizes rock rock crushes scissors 制限事項 入力は、指定された範囲内の文字列のペアになります(他の文字列は使用できません)。言及された値のいずれかを表す限り、必要に応じてcharの配列を使用できます。 選択した大文字小文字がすべての入力で同じである限り、入力文字列に小文字、大文字("ROCK")またはキャメルケース("Rock")を使用するかどうかを選択できます。 出力は、勝者を決定する3つの値になります。これは、答えが一貫している限り、任意の値にすることができます。例:1最初の入力が勝った2場合、2番目の入力が勝った0場合、同点の場合。またはA、最初の入力が勝ったB場合、2番目の入力が勝った<empty string>場合、同点の場合。 ゴール これはcode-golfなので、各言語の最短のプログラム/メソッド/関数/ラムダが勝つかもしれません! テスト …
24 code-golf  game 

22
ミックスダイスロールの頻度分布
この課題のフォローアップ 混合サイコロのセットが与えられた場合、それらすべてをローリングし、各サイコロでローリングした数字を合計する頻度分布を出力します。 たとえば、1d12 + 1d8(1面の12面ダイスと1面の8面ダイスをローリングする)を検討してください。最大と最小のロールがある20と2圧延と同様であり、それぞれ、2d10(2 10両面ダイスを)。しかし、1d12 + 1d8より平坦分布の結果2d10:[1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 8, 8, 7, 6, 5, 4, 3, 2, 1]対[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]。 ルール 周波数は、周波数が対応する合計の昇順でリストする必要があります。 対応する合計で頻度にラベルを付けることは許可されていますが、必須ではありません(合計は必要な順序から推測できるため)。 出力が言語の表現可能な整数の範囲を超える入力を処理する必要はありません。 先頭または末尾のゼロは許可されません。出力には正の周波数のみが表示されます。 任意の妥当な形式(サイコロのリスト([6, …

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