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

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

20
逆にして減算
チャレンジの説明 正の整数を取り、nその桁を逆にしてrev(n)、これら2つの数値の差の絶対値を取得および取得します:(|n - rev(n)|またはabs(n - rev(n)))。 例: n = 5067 rev(n) = 7605 |n - rev(n)| = |5067 - 7605| = |-2538| = 2538 この操作を何回も繰り返した後、ほとんどの数字は0(ループを終了する)になります... 5067 -> 2538 -> 5814 -> 1629 -> 7632 -> 5265 -> 360 -> 297 -> 495 -> 99 -> 0 ...ただし、一部の数値(など1584)は無限ループに陥ります: 1584 -> 3267 …

24
バンド名を並べ替える
チャレンジの説明 あなたのような、名前をそれぞれ有する多くのバンドによって記録された多くのトラック、との音楽ライブラリを持ってQueen、Aerosmith、Sunny Day Real Estate、The Strokes。オーディオプレーヤーがライブラリをバンド名のアルファベット順に表示する場合、The多くのバンド名がで始まるため、通常はその部分をスキップTheします。これにより、メディアコレクションを簡単にナビゲートできます。この課題では、文字列のリスト(配列)を指定して、そのようにソートする必要があります(つまりThe、名前の先頭の単語を省略します)。メソッドまたは完全な作業プログラムを作成できます。 サンプル入力/出力 [Queen, Aerosmith, Sunny Day Real Estate, The Strokes] -> [Aerosmith, Queen, The Strokes, Sunny Day Real Estate] [The Ramones, The Cure, The Pixies, The Roots, The Animals, Enrique Iglesias] -> [The Animals, The Cure, Enrique Iglesias, The Pixies, The Ramones, The Roots] [The …

26
緊密な言葉
前書き Puzzling SE のRand Al'Thorの投稿によると、緊密な単語とは、アルファベット順で3つの文字を(任意の順序で)含む単語です。 以下のような言葉の教育は、霧笛やキャバレーがすべてのような言葉に対して、緊密な言葉と考えられている学習、クラクションをし、実行していない緊密な言葉です。 チャレンジ 課題は、単一の単語を入力として使用できるプログラムをコードゴルフすることです(すべての意図と目的のために小文字と仮定)。は、結び目の単語であり、結び目の単語でない場合は空の出力です。 例 Input: education Output: cde Input: foghorn Output: fgh Input: cabaret Output: abc Input: hijacking Output: ghi, hij, ijk Input: pneumonia Output: mno, nop Input: klaxon Output: <<no output>> Input: perform Output: <<no output>> Input: learning Output: <<no output>> ルール 入力は単一の小文字の単語であり、出力は小文字でなければならないのに対して、出力の性質はコーディング言語の選択によって異なります。チャレンジの性質、STDOUT、ファイル出力、配列などに最適な出力形式を選択してください。 これはコードゴルフであるため、最も少ないバイト数が明確な勝者である場合になります。 …
22 code-golf  string 

15
Nのパーティションを計算します
あなたの挑戦は簡単です:整数Nを与えられ、合計がNになる正の整数のリストを出力します。たとえば、入力が5の場合、出力する必要があります [1, 1, 1, 1, 1] [1, 1, 1, 2] [1, 1, 3] [1, 2, 2] [1, 4] [2, 3] [5] これらのリストは特定の順序で出力する必要はなく、各リスト内の数字も出力する必要はありません。たとえば、これは「5」の受け入れ可能な出力にもなります。 [1, 1, 1, 2] [5] [3, 1, 1] [2, 1, 2] [4, 1] [1, 1, 1, 1, 1] [2, 3] 入力は正の整数であると安全に想定でき、この数値は任意の妥当な形式で取得できます。 これを行う組み込み関数は使用できません。 プログラムが失敗するか、大きなNに対して時間がかかりすぎる場合、これは問題ありませんが、少なくとも最初の15に対して正しい出力を生成する必要があります。 標準的な抜け穴が適用され、バイト単位の最短回答が勝ちます! テストIO 1: [[1]] 2: …

5
27個の関数の整流
前書き 3要素関数を、それ自体に設定された3要素からの関数として定義してみましょうS = {0,1,2}:のS別の要素の各要素に関連付けSます。三項関数の一例fは f(0) = 0; f(1) = 2; f(2) = 0 正確に27の異なる三項関数があり、それらを0から26の整数で表します:関数fはとしてエンコードされf(0) + 3*f(1) + 9*f(2)ます。上記のサンプル関数は、数値6としてエンコードされます。 2つの3項関数fをg順番に適用できます。f(g(k)) == g(f(k))すべてのkin が成立する場合S、関数は通勤します。あなたの仕事は、これが事実かどうかを確認することです。 入力 入力は、0〜26の範囲の2つの整数です。これらは2つの3項関数fおよびを表しgます。入力は、10進数、2進数、または単項(1sの文字列)形式で行う必要があります。 出力 あなたの出力はtruthy値の場合fとgそうでない場合は通勤、およびfalsey値。入力が順序付けられていると想定することはできません。 例 入力5と16を検討します。これらは3次関数をエンコードします f(0) = 2; f(1) = 1; f(2) = 0 g(0) = 1; g(1) = 2; g(2) = 1 我々は持っているf(g(1)) == f(2) == …

2
仮想キーボードのテキスト入力
現代のゲーム機や従来のキーボードのない他のデバイスでは、テキストを入力しようとするのは悪夢です。仮想キーボードでいくつかのボタンとジョイスティックを使って入力するのは面倒であり、できるだけ少ない動き/ボタンを押すようにします。 使用するキーボードは次のようになります。 +---+---+---+---+---+---+---+---+---+---+ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | +---+---+---+---+---+---+---+---+---+---+ | q | w | e | r | t | y | u | i | o | p | +---+---+---+---+---+---+---+---+---+---+ | a | …

6
古いスペイン語のアルファベット順
1994年以前は、スペイン語の辞書は特殊なアルファベット順を使用していました:ダイグラフでll、chまるで1文字であるかのように考えられていました。chすぐに続きc、llすぐに続いたl。スペイン語にñ続く文字を追加するnと、順序は次のようになりました。 a, b, c, ch, d, e, f, g, h, i, j, k, l, ll, m, n, ñ, o, p, q, r, s, t, u, v, w, x, y, z 1994年以来llとch(二文字のグループとみなされl、lそしてc、hそれぞれ)、そして従って、アルファベット順に文字を除いて、英語と同じですñ。 古い注文は間違いなくもっと面白かったです。 チャレンジ 0個以上の単語のリストを入力し、古いスペイン語のアルファベット順にソートされたリストを出力します。並べ替えは単語間です(単語内の文字間ではありません)。つまり、単語はアトミックであり、出力にはおそらく異なる順序で同じ単語が含まれます。 単純化するために、私たちは手紙を考慮しないであろうñ、またはアクセント付きの母音á、é、í、ó、ú、または文字の大文字。各単語は、ASCII 97(a)からASCII 122(z)までの包括的範囲から取得した1つ以上の文字のシーケンスになります。 l行に3文字以上ある場合は、左から右にグループ化する必要があります。つまり、lllis lland then l(not land then ll)です。 入力形式には、スペースで区切られた単語、改行、または任意の便利な文字を使用できます。単語は引用符で囲まれていてもいなくても、選択できます。単語のリストまたは配列も受け入れられます。合理的な形式はすべて有効です。あなたの答えにそれを述べてください。 同様に、出力は合理的な形式になります(入力と同じである必要はありません)。 コードゴルフ、最短の勝利。 テストケース 次の例では、単語はスペースで区切られています。1行目は入力、2行目は出力です。 llama …

2
2Dダンジョンで宝を見つける
あなたは1階のダンジョンにいます。ロックされたドアで保護されている宝物があります。ドアは、対応するキーを見つけることで開くことができます。あなたの目標は、宝物への最短経路を見つけることです。 入力 入力は、ダンジョンの初期レイアウトを表す2次元のグリッドになります。 ########### #$ # g# # # #### ###G## # # ####C# #c @ # ########### これはあなたです:@ これらは壁です:# これは宝です:$ ロックされたドアは大文字です:A... Z 各ドアには対応する小文字のキーがあります:a...z 常に1つ@あります$ます。 ダンジョンは常に長方形になります。 ダンジョンの外縁が壁であることは保証されません。これは有効なダンジョンです: $ A## @ a 宝が届くとは限りません。ダンジョンの中には、解けないものもあります。 キーのないドアがあるかもしれませんし、ドアを開かないキーがあるかもしれません。 ドアやキーが重複することはありません。 出力 プログラムは、配列を印刷する必要がありR、L、U、D(または4つの他の別個のシンボル)を表すために最短宝への可能なパス。ここで、RLUD右、左、上、下をそれぞれ表します。複数の最短パスがある場合、プログラムはそれらの1つを印刷するだけです。 壁に移動することはできません。 ダンジョンの境界の外側に移動することはできません。 鍵を拾わずにドアに移動することはできません。 キーに移動してそれを拾います。 すべてのドアを開く必要はありません。 有効な一連の移動で宝物に到達できない場合、プログラムは何も印刷せずに終了する必要があります。(末尾の改行が許可されます。) 得点 これはコードゴルフなので、バイト数が最小の答えが勝ちです。 テストケース 各テストケースには、最初の行にダンジョンの高さと幅があり、最後の行に最適な移動数で1つの可能なパスがあります。 1 2 @$ R …

12
多項式受容
f,g整数に対する任意の次数の2つの多項式が与えられた場合、プログラム/関数は2番目の多項式の最初の多項式を評価する必要があります。f(g(x))(別名組成物 (fog)(x) 2つの多項式の) 詳細 組み込みが許可されます。入出力として適切なフォーマットを想定できますが、入力と出力のフォーマットは一致する必要があります。例えば、文字列としてのフォーマット x^2+3x+5 または係数のリストとして: [1,3,5] or alternatively [5,3,1] さらに、入力多項式は完全に拡張されると想定でき、出力も完全に拡張されると予想されます。 例 A(x) = x^2 + 3x + 5, B(y) = y+1 A(B(y)) = (y+1)^2 + 3(y+1) + 5 = y^2 + 5y + 9 A(x) = x^6 + x^2 + 1, B(y) = y^2 - y A(B(y))= y^12 …

3
ドットをたどる
チャレンジ 文字の長方形グリッドを考える ABCDE FGHIJ クルムノ PQRST そして、ドットとスペースと同じ寸法のグリッド 。。。 。。。 。。 。。。 左上隅から始まるグリッドをドットでたどって生成される文字列を出力します。この例では次のようになりますABGLQRSNIJE ノート 入力グリッドは、複数行の文字列ではなく、2D配列または言語の最も近い代替物として使用できます。 スペースの代わりに、言語のNULL値を使用できます。ただし、パスをマークするにはドットを使用する必要があります。 同じ行にドットをスペースで区切る必要はありません。読みやすくするために追加しました。 最小のグリッドのサイズは1x1です。 開始点と終了点には、隣人が1人だけいます。それらの間のドットには、常に正確に2つの垂直または水平の隣人がいます。これにより、パスが明確になります。 パスは斜めになりません。 グリッド内の文字は、[a-z]最も便利な範囲内のすべて大文字または小文字のいずれかになります。 パスは常に左上隅から始まります。 ルール 機能または完全なプログラムが許可されます。 入出力のデフォルト規則。 標準の抜け穴が適用されます。 これはcode-golfなので、バイト数が最も少なくなります。Tiebreakerは以前の提出です。 テストケース グリッド#1 ABCABCW デフフク XLUSDQZ ASUKWXI ウコイム アイアイオープ 。。 。。。 。 。。。。 。 。 => ABEFGSKUSAWA 。。。。。。。 。 。。。。 。。。。 。。 。。。。。。。 => ABCABCWQZIMPUOIAIAWAXLUUK …
22 code-golf  string  grid 

30
リバースポジティブラン
入力 入力は、数字の文字列を含む、妥当な形式の1桁の数字のリストです。入力は空になりません。 出力 出力は入力リストになりますが、ゼロ以外の数字の最大実行ごとに反転されます。 例 入力を検討する 95883007414830 <---> <----> ゼロ以外の実行は矢印でマークされています。これらの実行をそれぞれ逆にして、出力を取得します 38859003841470 ルールとスコアリング 完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 この課題は関連していますが、追加の文字列処理が含まれるため、はるかに複雑です。 テストケース 4 -> 4 00 -> 00 123 -> 321 0010 -> 0010 12000345 -> 21000543 18161604 -> 61618104 95883007414830 -> 38859003841470 010230456078912 -> 010320654021987 357509902003550 -> 575309902005530 2492882377675046 -> 5767732882942064 03026302053000357099 -> 03036202035000753099 リーダーボード これは、リーダーボードと言語ごとの勝者のリストを生成するスタックスニペットです。回答が表示されることを確認するには、フォームのヘッダーで開始します …

30
2、3、および4で割り切れるNの後の最小の整数
誰にクレジットを支払うべきかをクレジットします。 客観整数を考えるとN > 0、最小の整数アウトA、BとCなるように: 、、およびのすべてはA、よりも厳密に大きい。BCN 2分割するA; 3分割するB; および4除算C。 これはコードゴルフであるため、バイト単位の最短回答が優先されます。このチャレンジ後に作成/更新された言語を使用できますが、厳密には競合していません。 テストケース N => A, B, C 1 => 2, 3, 4 4 => 6, 6, 8 43 => 44, 45, 44 123 => 124, 126, 124 420 => 422, 423, 424 31415 => 31416, 31416, 31416 1081177 => 1081178, 1081179, 1081180
22 code-golf  math  number 

3
ホリエ番号
The Holy Numbersから学んだように、5つの神聖な数字(0, 4, 6, 8, 9)があり、それらの数字だけで構成される正の整数は神聖です。さらに、数字の聖さは、数字の穴の合計です(+2すべて0または8、+1その他)。 現在、数値の神聖さを真に正確に表すために考慮すべき追加のプロパティがあります。数字の穴の数だけでなく、数字のどこで発生するかがわかります。 数を考慮してください88。私たちの古いルールでは、それは聖性を持っているでしょう4。しかし、それはほとんど公平ではありません!8左側は、他よりも多くの仕事をしている8- 10回仕事を!それはその仕事に対して報われるべきです。右側のすべての数字の総聖さ(このルールによって右側の数字に付与された追加の聖さポイントを含む)から1を引いたものに等しい追加の聖ポイントで報酬を与えます。 考慮すべきその他の例を次に示します。 Number: 8080 Digital holiness: (2 + 7 - 1) + (2 + 3 - 1) + (2 + 1 - 1) + (2 + 0 - 1) Total holiness: 15 Number: 68904 Digital holiness: (1 + 5 - 1) …

25
N番目の非回文数を印刷する
回文数(分からない場合)は、同じ前後を読み取る数です(例、11)。最初の15の非回文数字は次のとおり10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26です。これはA029742です。私はこれらの数字を常に必要としていますが、私のメモ帳は非常に小さいため、コードはできるだけ短くする必要があります。 ルール 各サブミッションは完全なプログラムまたは関数でなければなりません(たとえば、Cでは、ヘッダーなしで関数を定義することはできませんが、必要なヘッダーを使用して関数を定義できます)。 可能であれば、プログラムをテストできるサイトへのリンクを提供します。 プログラムはに何も書き込まないでくださいSTDERR。 入力を引数として、またはfrom STDIN(または言語の最も近い代替)として使用できます。 プログラムは、バイトに従ってスコア付けされます。通常の文字セットはUTF-8です。別の文字セットを使用している場合は指定してください。 標準的な抜け穴は禁止されています。 テストケース 1 ==> 10 ----- 5 ==> 15 ----- 12 ==> 23 得点 これはcode-golfであるため、最小バイト数が優先されます。 提出 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 # Language Name, N bytes N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: # Ruby, <s>104</s> <s>101</s> 96 …

9
スーパーコラッツの数字を印刷する
このCollat​​zシーケンスあなたが、任意の正の整数で始まるこの例では、我々は10を使用し、それへのステップのセットを適用する場所(も3X + 1問題と呼ばれる)があります。 if n is even: Divide it by 2 if n is odd: Multiply it by 3 and add 1 repeat until n = 1 10は偶数なので、2で割って5を取得します。5は奇数です。したがって、3を乗算して1を加算して16を取得します。16は偶数です。 4は2であり、2の半分は1です。これは6ステップを要したため、10の停止距離は6であると言います。 Super Collat​​z番号は、停止距離がそれよりも小さいすべての番号の停止距離よりも大きい番号です。図6は、8の停止距離を有するので、例えば、図6は、2 1を有しており、1は0(持つ、3 7を有し、4 2を有し、5は5の停止距離を有し、スーパーこのCollat​​z番号A006877 OEISで)あなたが必要と番号を取るn個の入力として、及びまでのすべてのスーパーこのCollat​​z番号アウト出力のn。 ルール 完全なプログラムまたは機能が許容されます。 Super Collat​​zシーケンスを事前計算またはハードコーディングすることはできません。 任意の妥当な形式で入力できます。 出力は、関数からリストとして返されるか、STDOUTまたはファイルに出力されます。最も便利な方。 無効な入力(非数字、小数、負数など)は、未定義の動作を引き起こします。 サンプルのpython def collatzDist(n): if n == 1: return …

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