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

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

24
アイスクリームをすくってください
私をアイスクリームコーンにしてください ここニューイングランドにはたくさんの素晴らしいアイスクリーム店があります。それらのほとんどは今冬のために閉じられているので... .-@@-. (======) (--------) (==========) (__________) \/\/\/\/\/ \/\/\/\/ \/\/\/ \/\/ \/ 目標 上記のアイスクリームコーンを正確に出力します。(または関数から返す) これはコードゴルフなので、最短の回答が勝ちます

23
中間のオッズを伴う偶数桁の循環シーケンス
次のシーケンスを検討してください。 1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 0, 1, ... 偶数桁は0から始まり、長さが増加するランにグループ化されます。これらは循環的に配置されます。つまり、8に達するまで昇順でソートされ、その後0から循環します。1は偶数桁の実行を分離し、シーケンスも開始します。このシーケンスがどのように形成されるかを視覚化しましょう: 1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, …

14
ピラミッドスキームの否定
私の言語のPyramid Schemeには、少し面白い構成があります:空の三角形: ^ - 引数が与えられない場合、を返します0。1この構成を使用して生成するには、これを使用できます。 ^ /!\ ^--- - これは単純に0否定関数に渡されます。この結果を否定し続けることができます: ^ /!\ ---^ /!\ ^--- - 0を取得するには、もう1つの否定が得られます。 ^ /!\ ^--- /!\ ---^ /!\ ^--- - チャレンジ 整数所与N ≥1、出力ネゲートされる空のピラミッドNを記載の方法で回。 テストケース input output 1 ^ /!\ ^--- - 2 ^ /!\ ---^ /!\ ^--- - 3 ^ /!\ ^--- /!\ ---^ /!\ …

10
フィボナッチ軌道を数える
フィボナッチ数列をf k(n)=(f k(n-1)+ f k(n-2))%kとして定義する場合、整数k(%はモジュロ演算子)に対して、シーケンス(f k(n-1)、f k(n-2))にはk 2個の異なる値しかないため、必然的に周期的です。ただし、このサイクルには通常、可能なすべての値のペアが含まれているわけではないため、2つの開始値f k(0)およびf k(1)に応じて、異なるサイクルが得られる場合があります。たとえば、k = 2の場合、最初の2つの値に応じて、次の4つの可能性があります。 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0, 1, 1, 0, 1, 1, 0, 1, 1, ... 1, 0, 1, 1, 0, 1, 1, 0, 1, ... 1, 1, 0, 1, 1, 0, 1, 1, …


10
ASCIIデッキを扱う
決定的なASCIIカードチャレンジは、これまでに一度もありませんでした。したがって、次のASCIIカードのデッキを使用します。 .------..------..------..------..------..------..------..------..------..------..------..------..------. |2.--. ||3.--. ||4.--. ||5.--. ||6.--. ||7.--. ||8.--. ||9.--. ||T.--. ||J.--. ||Q.--. ||K.--. ||A.--. | | (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) | | :\/: || :\/: || :\/: || …

5
マトリックスを畳む!
行列が与えられたら、その値を上/下または左/右に合計してXを形成し、それを畳んでリストを返します。ここでアルゴリズムを説明します。 アルゴリズム 入力は、言語の適切な数値容量内の整数の奇数サイズの正方行列になります。 例として次のマトリックスを見てみましょう。 1 2 3 2 1 0 3 2 3 0 4 2 5 6 3 7 4 7 9 4 0 6 7 2 5 まず、メインの対角線または対角線上にある最も近い数字にすべての数字を追加します。つまり、マトリックスを対角線と対角線に沿って4つのセクションに分割し、各セクションのすべての数値を中央に向かって合計します。 1 2 3 2 1 ↓ ↓ ↓ 0 → 3 2 3 ← 0 ↓ 4 → 2 → …
13 code-golf  matrix 

16
最高の発生回数または最低の発生回数
チャレンジ: 入力: 印刷可能なASCIIを含む文字列(スペース、タブ、改行を除く) ブール値† 出力: 文字列の部分は4つのグループに分けられます。 小文字 大文字 桁 その他 ブール値に基づいて、これらの4つのグループの1つ(または複数)の最高オカレンスを出力するか、他のすべてをスペースで置き換えて最低オカレンスを出力します。 例えば: 入力:"Just_A_Test!" 含まれるもの: -大文字3文字:JAT -小文字6文字:ustest -0桁 -その他3 文字:__! これらは、trueまたはの出力になりますfalse。 true: " ust est " // digits have the lowest occurrence (none), so everything is replaced with a space false: " " (注:末尾のスペースを無視することが許可されているため、出力はそれぞれに" ust est"なり""ます。) チャレンジルール: 入力が空になっていないか、スペースを含む、および範囲のみで印刷可能なASCIIで構成されますん33-126や'!'て'~'。 必要に応じて、入力や出力を文字配列またはリストとして使用できます。 †ブール値には、2つの一貫した異なる値を使用できます:true/ false; …
13 code-golf  string 

7
丘の中腹の小さな箱
もともとマルヴィーナ・レイノルズによるリトル・ボックスという風刺的な歌があり、次のような歌詞があります。 丘の中腹にある 小さな箱、カチカチの粘着性のある 小さな箱、丘の中腹にある 小さな箱、小さな箱はすべて同じ。 緑のものとピンクのもの、 そして青のものと黄色のものがあり、 それらはすべて、ベトベトした粘着性で作られており 、すべて同じように見えます。 ここでの仕事は、n>1家のサイズを表す整数入力が与えられ、次の色を使用して4つの「小さな箱」を出力することです(0xRRGGBB表記)。 Green -- 0x00FF00 Pink --- 0xFF00FF (technically magenta) Blue --- 0x0000FF Yellow - 0xFFFF00 特定のコンソールにこれらの正確な色がない場合は、最も近いものを使用できます(たとえば、ANSIエスケープコード)。 家はn _、床と屋根を表すように構築されています。それらは、壁を表すn/2(端数切り上げ)|文字で囲まれています。屋根は常に2高く/、左端に2つ\、右端に2つありn-2 -、屋根の頂点を表しています。家が大きくなると、屋根の比較サイズは小さくなります。これは意図されたものです。 これがサイズの家です2: /\ /__\ |__| サイズは3次のとおりです。 /-\ /___\ | | |___| サイズは7次のとおりです。 /-----\ /_______\ | | | | | | |_______| したがって、入力が与えられると、上記7のサイズの4つの家を出力します。7最初の家は緑、2番目はピンク(マゼンタ)、3番目は青、4番目は黄色です。その順序で色を出力することが重要です。 サイズの写真例3: …

4
配列を伸ばす
先ほど、配列を粉砕するプロセスを定義しました クラッシュでは、配列を左から右に読み取ります。ある時点で2つの同じ要素が連続して出現した場合、最初の要素を削除し、2番目の要素を2倍にします。 例は、次の配列を粉砕するプロセスです [5,2,2,4] ^ [5,2,2,4] ^ [5,2,2,4] ^ [5,4,4] ^ [5,4,4] ^ [5,8] ^ 同じ要素を複数回折りたたむことができることに注意してください。この例で2,2,4は8、1回のパスで折りたたまれました。 配列の粉砕は簡単になりましたが、難しいのは配列を粉砕することです。あなたの仕事は、正の整数の配列を入力として受け取り、繰り返し押しつぶされたときに入力を形成できる最大の配列を出力することです。たとえば、配列[4]は粉砕によって形成され、粉砕[2,2]は粉砕によって形成され[1,1,1,1]ます。非整数値を持つ[1,1,1,1]ことはできないため、これ以上クラッシュさせることはできず、それが答えです。 この0ような配列は無期限に拡張できるため、入力配列でa を受け取ることはありません。また、同じ奇数の番号が2つ並んでいるケースを受け取ることはありません。そのようなケースは、粉砕の結果ではありません。 これはコードゴルフであるため、回答はバイト単位で測定されたソースのサイズでスコアリングされ、バイト数は少ない方が良いです。 答えを始める前に、この挑戦​​は見かけよりもはるかに難しいと言いたいだけです。進むにつれて直観を確認し、答えがすべてのテストケースに合格することを確認します。 テストケース [] -> [] [5] -> [5] [6] -> [3,3] [8] -> [1,1,1,1,1,1,1,1] [4,8] -> [1,1,1,1,1,1,1,1,1,1,2] [2,8] -> [1, 1, 1, 1, 2, 1, 1, 1, 1] [4,4] -> …

17
10行の棒グラフ
これは、APL CodeGolfのThe Autumn Tournamentの Hole-1 です。私はそこで問題の原作者であるため、ここに再投稿することができます。 数字のリストが与えられたら、#10個の同じサイズのグループのそれぞれに適合する数字の数を示す横棒グラフを作成します。たとえば、データの範囲が0〜100の場合、範囲は0〜9.9、10〜19.9、…、90〜100です。(正式には、[0,10)、[10,20)、…、[90,100]。)。少なくとも2つの数字があり、すべての数字が同じであるとは限りません。 例: [1,0,0,0,0,0,0,0,0,0] 与える: ######### # [0,1,2,3,4,5,6,7,8,9] 与える: # # # # # # # # # # [0,1,2,3,4,5,6,7,8,9,10] 与える: # # # # # # # # # ## [0,1,2,3,4,5,6,7,8,9,10,11] 与える: ## # # # # # # # # ## [0,-0.5,-1,-1.5,-2,-2.5,-3,-3.5,-4,-4.5,0.5,0,-0.5,-1,-1.5,-2,-2.5,-3,-3.5,-4,1,0.5,0,-0.5,-1,-1.5,-2,-2.5,-3,-3.5,1.5,1,0.5,0,-0.5,-1,-1.5,-2,-2.5,-3,2,1.5,1,0.5,0,-0.5,-1,-1.5,-2,-2.5,2.5,2,1.5,1,0.5,0,-0.5,-1,-1.5,-2,3,2.5,2,1.5,1,0.5,0,-0.5,-1,-1.5,3.5,3,2.5,2,1.5,1,0.5,0,-0.5,-1,4,3.5,3,2.5,2,1.5,1,0.5,0,-0.5,4.5,4,3.5,3,2.5,2,1.5,1,0.5,0] 与える: …

16
べき乗シーケンス
ボフニア * にあるポーランド最古の塩鉱山は 1248年に開始されました。これは魔法の数字と考えることができます。べき乗のシーケンスから4桁に等しいことがわかります。 日付は実際にはシーケンスから4桁なので、もっと長くすることができます。無限に達するまでこのプロセスを繰り返すことができます。数に制限すると、シーケンスは次のようになります2048 124816326412825651210242048 見た目を少し良くするために、数字を分けることができます。 1|2|4|8|16|32|64|128|256|512|1024|2048 日付よりも長いカスタムのシーケンスを試してみましょう。たとえば、5桁にする必要があります。複数の可能性があります。 24816 81632 64128 または3桁のもの: 124 248 816 これに3桁の数字を追加することもできますが、シーケンスには少なくとも2つの数字が必要であるとしましょう。 *英語版ウィキペディアにはこれに関する情報はありません。ポーランド語版を入力すると-があります。あなたが鉱山を訪れると、労働者はあなたに、それが1248年に始まったと伝えます。 チャレンジ 上記の例のように、2を基数とする累乗シーケンスを作成します。 2〜27の範囲の数値を指定して、入力と等しい桁数でシーケンスのすべての可能な部分(必要に応じて1つ以上の2048)を出力します。48116は半分にカットされるため、数値を切り取ることができないため、次のような出力は無効です。 ルール: 標準的な抜け穴は禁止されています。 入力は範囲内の数値であると想定できます。 プログラムは、範囲(28+)よりも大きい入力を受け入れることができますが、スコアは増減しません。 出力のスペースは無視されます。like 124またはlike を出力できます4 8 16。 異なる可能性は、リストの任意の文字,./|または改行で区切る必要があります。 配列として出力できます。 すべての可能性は少なくとも2つの異なる数字を含むべきです。 シーケンスの一部を出力する必要があります14。次のように、隣り合っていない数字を混在させることはできません。 ハードコーディングされた出力は許可されませんが、完全なシーケンスを含む文字列/数値/配列をハードコーディングできます。 入力27は、2048シーケンス全体を返す必要があります。 既に述べたように、数字をカットしないでください。例 16滞在する16必要があります481- 使用できません-を使用する必要があります4816。 編集:私はそこに間違ったことを言ったかもしれません。2048はプログラムがサポートする最後の番号です。より大きな整数のサポートを追加できます。 テストケース 入力: 2 12, 24, 48 入力: 3 124, 248, …

2
トーナメントブラケットを構築する
空でない文字列の入力リストが与えられた場合、次の描画ルールに基づいて、トーナメントのASCIIアート表現を出力します。 文字列の数は、量が保証されています 2,4,8,16,etc. 最初の2つのストリングは互いに演奏し、次の2つのストリングは互いに演奏します。これは最初のラウンドです。 ゲームごとに、同じ確率で勝者をランダムに選択します。 次のラウンドでは、最初のゲームの勝者が2番目のゲームの勝者、3番目のゲームの勝者が4番目のゲームの勝者、というように続きます。後続のラウンドはパターンに従います。 最終的には全体で1つの勝者がいます。 きれいに出力するには(必須)、すべての文字列の前にアンダースコアを付加する必要があります_。 ブラケットを適切に整列させるために、各エントリは_そのラウンドですべて同じ長さになるようにパディングする必要があります。 一貫性がある限り、パディングを追加するか追加するかを選択できます。 代わりに、ラウンドごとではなく、すべての文字列を同じ長さになるように事前に追加することを選択できます。どちらがあなたのコードにとってゴルファーです。 さらなるルール 文字自体が正しく並んでいる限り、先頭または末尾の改行または空白はすべてオプションです。 完全なプログラムまたは機能のいずれかが受け入れられます。関数の場合、出力する代わりに出力を返すことができます。 可能であれば、他の人があなたのコードを試すことができるように、オンラインテスト環境へのリンクを含めてください! 標準的な抜け穴は禁止されています。 これはコードゴルフなので、通常のゴルフルールがすべて適用され、最短のコード(バイト単位)が勝ちます。 例 都市の例['Boston', 'New York', 'Charlotte', 'Atlanta', 'St. Paul', 'Chicago', 'Los Angeles', 'Phoenix']: _Boston______ \_New York____ _New York____/ \ \_New York_ _Charlotte___ / \ \_Charlotte___/ \ _Atlanta_____/ \ \_St. Paul_ _St. Paul____ / \_St. …

11
立方体のキューブの面を合計する
Cubicallyキューブの面を手動で合計するのは退屈で時間がかかり、Cubically自体でコードを書くようなものです。 で最も効率的なcubifier、私は、立体的ソースにASCIIを変換することができ尋ねました。そこでの回答の1つは、キューブの初期化シーケンスを使用し、事前に初期化されたキューブの合計に基づいて結果のキューブを変更します。それ以来、このメソッドは多くのキュービック関連プログラムで使用されています。新しい初期化シーケンスをテストするとき、すべての面のすべての値を加算する必要があります。これには通常2〜3分かかります。 あなたの仕事は、このプロセスを自動化することです! 整数nと文字列の2つの入力を受け取りますc。これらは、コマンドライン引数、関数引数、標準入力、ファイル、またはそれらの任意の組み合わせから読み取ることができます。cなり立体的メモリキューブサイズのnインタプリタによってかなりプリントとして。 Cubicallyインタープリターは、プログラムの終了時にキューブをSTDERRにダンプし、見やすいように適切にフォーマットします。Cubicallyインタープリターで空のプログラムを実行し、デバッグセクションを開いて、初期化されたキューブのキューブダンプを確認します。引数4を追加して、4x4x4 5を表示したり、5x5x5などを表示したりします。 n3の場合、cこの形式に従います(整数は可変です)。 000 000 000 111222333444 111222333444 111222333444 555 555 555 スペース、改行、すべて。nが4の場合、次のcようになります(変数整数も使用): 0000 0000 0000 0000 1111222233334444 1111222233334444 1111222233334444 1111222233334444 5555 5555 5555 5555 など。 プログラムは6つの整数を出力します。最初の整数は、上面のすべての数値の合計になります。 000 000 top face 000 111222333444 left, front, right, and back faces, respectively 111222333444 111222333444 555 555 bottom face …

4
ヒドラスレイヤーの帰還
あなたがそのヒドラを殺してからしばらく経ちましたが、あなたは長年栄光を浴びていましたが、今では人々はあなたを洗い流していると呼んでいます。さて、あなたは彼らが間違っていることを証明する時、あなたは別のヒドラの行方を聞いたことがあります。単にそれを殺すと、あなたはあなたが値するすべての栄光を授与されます。 あなたは剣を受け取るために武器庫に到着しますが、それらはすべて通常の剣ではなく、残っているのはセクターだけです。nセクターはHydraの頭の数をnで除算しますが、頭の数がnで割り切れる場合にのみ使用できます。 もう一度、あなたはヒドラを殺すのを助けるためにいくつかのコードを書くつもりです。コードは、ヒドラの頭の数を入力として受け取り、戦いを開始し、ヒドラが毎ターン成長する頭の数、および使用できるnセクターのリストを入力します。あなたのコードは、可能な限り迅速にヒドラを殺すための動きの最適なパターンを出力します 戦いの各ターンでは、1つのスライスを選択して、スライスの後にヒドラの頭が1つだけの場合は勝ち、そうでない場合は頭を成長させます。あなたは決して動きをすることはできませんし、可能な動きがなければ損失します。 解決策が不可能な場合は、解決策以外の何か、たとえば空のリスト、何もない、数字のゼロなどを出力できます。 これはコードゴルフであるため、回答はバイト数として記録され、少ない方が良い結果が得られます。 テストケース ここにいくつかの超基本的なテストケースがありますが、リクエストに応じてさらにテストケースが追加されます。 24 heads, 1 heads per turn, [2,3] -> [3,3,2,3] 25 heads, 2 heads per turn, [2,3] -> No solutions 4 heads, 2 heads per turn, [2] -> No solutions 4 heads, 3 heads per turn, [2,5] -> [2,5] 10 heads, 17 heads …
13 code-golf  math  number  game 

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