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

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

16
ちょっとしたストレッチです․․․
入力: 次の2つの入力を使用します。 b2つの異なる値を持つ入力:LeftとRight。† そして正の整数n。 出力: 左/右の入力に基づいて、次の2つのシーケンスのいずれかを範囲内で出力します1-n(最初の125アイテムの下のシーケンスに表示されます)。 Left: 1, 6, 7, 56, 57, 62, 63, 960, 961, 966, 967, 1016, 1017, 1022, 1023, 31744, 31745, 31750, 31751, 31800, 31801, 31806, 31807, 32704, 32705, 32710, 32711, 32760, 32761, 32766, 32767, 2064384, 2064385, 2064390, 2064391, 2064440, 2064441, 2064446, 2064447, 2065344, 2065345, 2065350, 2065351, …

5
コードブレーカーとコードライター
テキストがあり、それを友人に送信したいが、他の人に読んでほしくないとしましょう。それはおそらくあなたとあなたの友人だけがそれを読むことができるようにあなたがそれを暗号化することを意味します。しかし、問題があります。あなたとあなたの友人は暗号化方法に同意するのを忘れていたので、あなたが彼らにメッセージを送ると、彼らはそれを解読することができません! しばらくこのことを考えた後、メッセージとともにメッセージを暗号化するコードを友人に送信することにします。あなたの友人はとても賢いので、おそらく暗号化方法を勉強することでメッセージを解読する方法を理解できるでしょう。 もちろん、他の人がメッセージを読んでいる可能性があるため、解読を可能な限り難しくする暗号化スキームを選択する必要があります(復号化スキームを図に示します)。 警官の仕事 この課題では、警官がライターの役割を果たします。つまり、文字列を文字列に変換する暗号化スキームを設計します。ただし、この暗号化スキームはbijectiveでなければなりません。つまり、2つの文字列を別の文字列にマッピングする必要はなく、すべての文字列は入力によってマッピングできます。入力は1つだけである必要があります。エンコードされる文字列です。 次に、暗号化を実行するコードと、コードで詳述されたスキームで暗号化された単一のメッセージを投稿します。 メッセージを送信するためにバイト単位で支払うため、スコアはコードの長さに暗号文の長さを加えたものになります。あなたの答えがひび割れている場合、あなたは無限のスコアを持っています。 1週間後、テキストを公開し、回答を安全としてマークできます。安全な答えは、解読できないものです。 強盗のタスク 強盗は、作家の友人または悪意のある中間者のいずれかとしてプレイします(実質的な違いはありませんが、そうすることがより楽しくなるかのようにロールプレイできます)。彼らは暗号化スキームと暗号文を取り、暗号化されたメッセージを見つけようとします。暗号化されたメッセージを見つけたら、コメントで投稿します。(この質問には、別の強盗のスレッドはありません。) 勝者は、最もひびの入った強盗になります。 ひびの入ったソリューションがどのように見えるかの例を次に示します。

23
簡単なバイナリ三角形
入力として正の整数を指定すると、次の三角形のn>=1最初のn行が出力されます。 1 1 0 1 0 0 1 0 0 1 1 1 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 …

21
平行四辺形の数
数値を適切に正方形と三角形にする方法がわかったので、1つを平行四辺形にする方法を学習します。数を平行四辺形にするために、まず、その数の上に積み重ねて平行四辺形として配置し、スペースを追加して平行四辺形にします。そのため、次のように123なります。 123 123 123 ここで、水平および垂直の各数値を取得し、それらを追加します。これは、の平行四辺形で123+123+123+1+12+123+23+3あるに等しくなります。 531123 あなたのタスク: 入力として数値を指定すると、その数値の平行四辺形を返すプログラムまたは関数を作成します。 入力: 非負の整数、または文字列で表される非負の整数。 出力: 整数の平行四辺形。 テストケース: 1234567 -> 10288049 123 -> 531 101 -> 417 12 -> 39 得点: これはcode-golfで、バイト単位の最低スコアが勝ちです!
18 code-golf  number 

11
スパース行列を圧縮する
圧縮されたスパース行(CSR、CRSまたはYale形式)を使用してスパース行列を圧縮します。 これらはすべて同じ圧縮形式です(新しいエールを無視します)。 入力は、任意の2Dデータ構造(リストのリストなど)である場合があります:例 [[0 0 0 0], [5 8 0 0], [0 0 3 0], [0 6 0 0]] 出力は出力を示し、3つの1Dデータ構造(リストなど)でなければならないA、IAそしてJA例えば、 [5, 8, 3, 6] [0, 0, 2, 3, 4] [0, 1, 2, 1,] プロセスはウィキペディアで説明されています: 配列Aの長さはNNZであり、Mのすべての非ゼロエントリを左から右、上から下(「行優先」)の順序で保持します。 配列IAの長さはm + 1です。これは、次の再帰的な定義によって定義されます。 IA [0] = 0 IA [i] = IA [i − 1] +(元の行列の(i …

11
母音を一掃!
注:タイトルのスペルが意図的に間違っています。 文字列sが与えられた場合、2単語ごとに最初の母音を入れ替えます。この課題では、yは母音と見なされます。 たとえば、「great day sir」と入力すると: 1. Input: "great day sir" 2. Identify pairs of words: "[great day] [sir]" (No word for sir to pair with) 3. Identify the first vowel runs in each word: "[gr[ea]t d[ay]] [s[i]r]" 4. Swap the vowel runs in each pair: "[gr[ay]t d[ea]] [s[i]r]" 5. Return/print: …

24
最も近い双二次数を見つける
双二次数は、別の整数の4乗の数です。次に例を示します。 3^4 = 3*3*3*3 = 81 入力として整数を与え、最も近い双二次数を出力します。 以下は、最初の15個の二重正方形です。 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 14641, 20736, 28561, 38416, 50625 これはコードゴルフなので、各言語で最少のバイトが勝ちます これはOEIS A000583です

12
有理数のLCM
数字の組の最小公倍数(LCM)は、A最小の整数であるbそのようなb/a全ての整数の整数でありaにおけるA。この定義は有理数に拡張できます! 仕事 最小の正の検索合理的な bようb/aである整数のすべてのための有理数 aの入力では。 ルール 標準的な抜け穴は禁止されています。 入力では分子と分母を別々に使用できますが、double、floatなどは使用できません。 入力が完全に削減されない場合があります。 整数入力を分母の有理数としてとることができます1。 有理数をLCM / GCDビルトインに送信する送信は許可されますが、競合しません。 テストケース In: 3 Out: 3 In: 1/17 Out: 1/17 In: 1/2, 3/4 Out: 3/2 In: 1/3, 2/8 Out: 1 In: 1/4, 3 Out: 3 In: 2/5, 3 Out: 6 In: 1/2, 3/4, 5/6, 7/8 Out: 105/2 これはcode-golfであるため、最小限のバイトを使用した送信が勝ちです!

29
数字のブロック
このテキストブロックを出力/印刷します。 1234567890 2468013579 3691470258 4815926037 5049382716 6172839405 7306295184 8520741963 9753108642 0987654321 許容される形式は次のとおりです。 末尾の改行/空白 文字列のリスト 文字のリストのリスト 整数のリストのリスト ただし、最後の行が整数ではないため、整数のリストは受け入れられません。 これはcode-golfです。バイト単位の最短回答が優先されます。標準の抜け穴が適用されます。

30
リストの平均を比較する
リストの平均値を取得する(例[2,6,7]) リストの長さを取得します。 [2,6,7] -> 3 リスト内の数字を合計します2 + 6 + 7 = 15。 合計をカウントで割ります:15 / 3 = 5。 あなたは、の二つのリストの平均値を比較すべきである正の整数NとMを場合は、値を返すことによって、Nがあればより高い平均、別の値を持つMが同数の場合にはより高い平均、および別のものを持っています。 I / Oルール すべての標準入出力メソッドが許可されています。 入力 入力は、2つの個別のリスト、ネストされたリスト、またはタスクに適していると考えられるその他のものとして受け取ることができます。形式を指定してください。 出力 指定する値は明確である必要があり、少なくとも1つの非空白文字で構成する必要があります。また、実行間で一貫している必要があります(Nの単一値、Mの単一値、Tieの単一値)。回答でそれらを指定してください。値には、空でない文字列、ブール値、整数、または適切と思われるものを指定できます。 スペック リストは必ずしも同じ長さではありません。 リストが空でないことが保証されます。 テストケース 値N wins、M winsおよびを選択しましたTieが、これらはほとんど自明です。 N、M->出力(平均) [7]、[6]-> N勝(Nは7、Mは6) [4,5]、[4,4]-> N勝(Nは4.5、Mは4) [2,3,4]、[4,5,6]-> M勝(Nは3、Mは5) [4,1,3]、[7,3,2,1,1,2]->ネクタイ(両方とも2.666 ...) [100,390,1]、[89,82,89]-> N勝(Nは163.666 ...、Mは86.666 ...) [92,892]、[892,92]->ネクタイ(リストは基本的に同じです) [10,182]、[12,78,203,91]->ネクタイ(両方とも96) デフォルトの抜け穴が適用されます。説明が奨励されています!これはcode-golfなので、バイト単位の最短コードが勝ちです!

18
「Hello、World!」(他のすべてのキャラクター、パート2)
Hello、World!のパート2として (他のすべての文字が)、というようなプログラムを書く3つのすべてのこれらのプログラムの印刷「こんにちは、世界!」:プログラム全体、第一、第三、第五、などあなたのプログラムの文字及び第二、第四、第六、等 プログラムが次の場合: abc def 「Hello、World!」と出力されるはずですが、そうであるべきです acdf そして b e 「Hello、World!」が組み込まれたソリューションはありません。

14
完全パリンドローム三角形
文字列を考えてください160615051。次のように「三角化」できます。 1 606 15051 そして、各行は回文です。また、境界線上の各側面も回文であることに注意してください。 1 | 1 | 6 | 6 | 1 | 1 | 15051 したがって、この文字列は完全な回文三角形とみなすことができます。100この場合、高度については心配しないでください。回文型である必要はありません。 入力: 0x20〜0x7Eの印刷可能なASCII文字列。これは、文字配列、単一の文字列、またはASCIIコードポイントの配列です。入力は常に三角測量できます(つまり、その長さは常に完全な正方形になります)。 出力:文字列が完全な回文三角形の場合は真理値、それ以外の場合は偽値。 テストケース input => output 1 => true A => true AAAA => true nope => false {{}} => false 1101 => true 1011 => false 1202 => false …

7
2D言語でのゴルフのヒント
2次元プログラミング言語でゴルフをするための一般的なヒントは何ですか?コードゴルフの問題に適用でき、2Dプログラミング言語に固有のヒントを探していますが、特定の言語に固有のヒントはありません(「コメントの削除」や「M操作の使用」などの回答は答えではありません)。 回答ごとに1つのヒントを投稿してください。
18 code-golf  tips 

2
魔法は可能ですか?
魔方陣は、あるn行N範囲の異なる正の整数で満たされ、正方格子、1,2 ... N ^ 2、各セルは異なる整数であり、各行の整数の和を含むように、列と対角線は等しい。 あなたの仕事は、正の数字で構成されるn行n列の行列と、空のセルのプレースホルダー文字(0を使用しますが、任意の非数値文字またはデータ型を使用できます)を取得し、それが不足している数字を入力して魔方陣を作ることが可能 行列は少なくとも2行2列、最大10行10列になります。最小の非自明な魔方陣は3行3列です。入力行列の数値はn ^ 2よりも大きい場合があり、すべてのセルが塗りつぶされる可能性があります。 テストケース: 2 2 2 0 False 8 0 6 0 5 0 0 9 2 True 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 True 10 0 1 0 5 9 3 7 …

7
ギルブレスの予想
無限数の素数のリストから始めると仮定します。 [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, ... 次に、数値の各ペア間の絶対差を繰り返し取得します。 [1, 2, 2, 4, 2, 4, 2, 4, 6, 2, 6, 4, 2, 4, 6, 6, 2, 6, 4, ... [1, 0, 2, 2, 2, 2, 2, …

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