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

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

13
数字を見つけて出力を計算する
目的 入力リスト所与6の別個の桁、3つの数字を見つけa、bそしてcその結果a × b = cと、a2桁の数字を有するb1桁を有し、c3桁を有します。より視覚的な方法では、プログラムはこれらの6桁をこの画像のボックスに配置する必要があります。 複数のソリューションが存在する場合、それらのいずれかを出力できます。 入力 6桁の数字。あなたはあなたの言語のために合理的な方法でそれらを取ることができます。 出力 3つの数字a、bそしてc。出力形式は、3つの数字が分離されていて、常に同じ順序で印刷されている限り(ただし必ずしも順序どおりに印刷されない限り)、比較的自由a, b, cです。 テストケース 1, 2, 3, 4, 5, 6 -> 54,3,162 2, 3, 4, 5, 6, 7 -> 57,6,342 or 52,7,364 得点 バイト単位の最短コードが優先されます。
22 code-golf  math 

4
グリッドをグリッドに分割する
前書き 少数の家と空の畑だけの小さな村があります。地元の官僚は、各ロットに正確に1つの家が含まれるように村をロットに分割し、ロットの境界がすてきな直線グリッドを形成することを望んでいます。あなたの仕事は、これが可能かどうかを判断することです。 タスク 入力は、ビットの長方形の2D配列です。1は家を表し、0は空のフィールドを表します。そのサイズは少なくとも1×1であり、少なくとも1つ1を含みます。任意の妥当な形式(ネストされた整数のリスト、文字列のリスト、複数行の文字列など)で入力を取得できます。 プログラムは、各グリッドセルに正確に1つが含まれるように、水平および垂直の直線を使用して配列をグリッドセルに分割できるかどうかを決定するものとします。ラインは、配列の一方の端から反対側の端まで実行する必要があります。 たとえば、次は配列の有効な分割です。 00|0010|01|1 01|0000|00|0 --+----+--+- 00|0000|00|1 01|0010|01|0 --+----+--+- 01|1000|10|1 一方、次の区分は有効ではありません。1を持たないグリッドセルまたは1を超えるグリッドセルがあるためです。 00|0010|01|1 --+----+--+- 01|0000|00|0 00|0000|00|1 01|0010|01|0 --+----+--+- 00|1000|10|1 有効な部門が存在する場合、真理値を出力し、それ以外の場合は偽値を出力します。 ルールとスコアリング 完全なプログラムまたは関数を作成できます。最も低いバイトカウントが優先されます。 テストケース [[1]] -> True [[0,1],[1,0]] -> True [[1,1],[1,0]] -> False [[1,0,1],[0,1,0]] -> True [[1,0],[0,1],[0,1]] -> True [[1,0,0],[0,0,1],[0,1,1]] -> True [[1,1,1],[1,1,1],[1,1,1]] -> True [[1,0,1],[0,1,0],[1,0,0]] -> True [[1,0,0],[1,0,0],[0,1,1]] …

10
2色の重なり合う円
次の入力を適切な形式で選択するプログラムまたは関数を作成します。 生成する画像の幅と高さを定義する2つの正の整数WとH。 画像の色付けに使用される2つのRGBカラーC1およびC2。 画像の平面内で(r, x, y)半径rと中心x, yを持つ円を定義するフォームの3タプルのリスト。rは正の整数であり、xおよびyは任意の整数です。画像の左上のピクセルは0, 0x軸が右に増加し、y軸が下に増加します。 重複するすべての円によって定義される2つの隣接領域が同じ色にならないように、 C1およびC2で色付けされた寸法W x Hの画像を出力します。 例:入力が W = 300 H = 200 C1 = (255, 200, 0) C2 = (128, 0, 255) Circles = (25, 50, 80), (40, 80, 120), (300, -100, 6), (17, 253, 162) 円の境界は次のようになります。 円によって作成された画像には、6つの異なる連続した領域があります。各領域は、隣接する2つの領域が同じ色にならないように、C1(黄色)またはC2(紫色)で色付けする必要があります。 これを行うには2つの方法がありますが、唯一の違いは色を交換することです。 したがって、これら2つの画像のいずれかは、入力例の有効な出力になります。 2つの黄色の領域が互いに隣接しているため、このようなものは無効な出力になります。 出力画像は次のガイドラインに従う必要があります。 C1とC2に加えて、黒または白などの3番目の中間色は、5ピクセル以下の厚さであれば円の境界に使用できます。(上記の例では、黒の1ピクセルの太い境界が存在します。) …

2
ASCII Padovanスパイラルを生成する
これはこの挑戦の ASCIIバージョンです。最初の投稿は、Martin Enderによるリクエストごとに分離されました 前書き フィボナッチ数列と同様に、パドバン数列(OEIS A000931)は、数列の前の項を追加することによって生成される数の数列です。初期値は次のように定義されます。 P(0) = P(1) = P(2) = 1 0番目、1番目、および2番目の用語はすべて1です。繰り返しの関係は次のとおりです。 P(n) = P(n - 2) + P(n - 3) したがって、次のシーケンスが生成されます。 1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37, 49, 65, 86, 114, 151, 200, 265, 351, ... これらの数値を正三角形の辺の長さとして使用すると、フィボナッチスパイラルのように、それらをすべて一緒に配置すると素敵なスパイラルが得られます。 ウィキペディアの厚意による画像 …

3
まだですか?
私はタイムトラベラーであり、時間の経過に夢中です。時計の針が12を過ぎたとき、カレンダーの次のページに移動したとき、または「Happy New Year!」と大声で叫んだときが特に気に入っています。 プログレスバーの形で、そのような最後の瞬間から次の瞬間までの距離を示すプログラムを書いてください。たとえば、時間が09:12であると伝えると、次のように出力されます。 09:00 ####---------------- 10:00 月が1982年5月であると言うと、次のように印刷されます。 1982-01 #######------------- 1983-01 私はタイムトラベラーだと言いましたか?0 ADの最初のミリ秒から9999 ADの最後のミリ秒まで移動するため、プログラムはその範囲の日付と時刻を処理する必要があります。 入力 入力は次のいずれかの形式になります。 YYYY-MM-DDThh:mm:ss.sss YYYY-MM-DDThh:mm:ss YYYY-MM-DDThh:mm YYYY-MM-DDThh YYYY-MM-DD YYYY-MM これらは、処理が必要な唯一の形式です。各部分には正確に表示される桁数があります。つまり、小数秒には末尾のゼロが含まれる場合があります(例:.120never .12)。T時間から日付を区切るリテラル文字「T」です。時間は24時間制です。 月と日は1から始まります(これについては後で詳しく説明します)。 無効で範囲外の入力を処理する必要はありません。 プログラマーの裁量により、入力には単一の末尾改行が含まれる場合があります。 プログレスバーの数学 プログラムは、指定された入力の最下位および2番目に重要な単位に関係しています。たとえば、入力が日レベルの精度(例:)である2016-12-14場合、進行状況バーは、入力された月の残りの日に対する経過した日数の割合を示します。 プログレスバーは、20単位(文字)を有するであろうと表される割合が最も近い増分に丸められます1 / 20。例えば、所与2016-12-14T12:28、プログレスバーが表示されるラウンド(28 / 60 ×20)9 = 20の単位を"充填します"。 1から始まる月と日 (たとえば)12月1日は01に2016-12-01ありますが、切り捨てられた単位はその日の0時の0分の0ミリ秒を意味するため、計算の目的では月の0日になります。換言すれば、2016-12-01ある0 / 31 Decemberまでの道のと2016-12-02ある1 / 31、及びオンになります。 同様に、2016-01その計算にそれは、1月の0日目の0ミリ秒0 / 12その手段、2016-12である11 / 12。 はい、それは月と日が進行状況バーを完全に埋めることがないことを意味します。 …
22 code-golf  date 

4
私は何をプレイしましたか?ギターの運指を和音に変換
関連:音楽:この和音には何が含まれていますか?、タブ譜の注意事項、ギターのタブを生成する?、数字のペアをギターの音に変換する ギターの運指が与えられたら、それが表すコードを出力します。標準の入出力を使用することも、文字列を返す関数を作成することもできます。 入力運指は、次のコードのいずれかに分類され、次のように表現されます(ルートノートがCの場合)。 メジャートライアド: C マイナートライアド: Cm (支配的)7番目: C7 マイナー7: Cm7 コードが反転している可能性があるため、ルートである最低音に依存することはできません。また、これが現実の世界で簡単または一般的な運指であることを信頼することもできません。より一般的には、プログラムの出力はピッチのオクターブを無視し、同じ音符(つまりA)に対応するすべてのピッチを等しいものとして扱う必要があります。 これはcode-golfであるため、バイト単位の最短コードが優先されます。 入力形式 入力は、標準チューニング(EADGBE)の6弦ギターの各弦について、その弦が演奏されるフレットを示す一連の6つの値です。また、文字列がまったく再生されないことを示す場合もあります。「ゼロ」フレットはオープンポジションとも呼ばれ、フレット番号はそこからカウントアップされます。ギターに21フレットのポジションがあり、最高のフレットポジションが20番であるとします。 たとえば、入力X 3 2 0 1 0とは、ギターの首の上の次の位置に1本の指を置くことを意味します。 (6th) |---|---|---|---|--- |-X-|---|---|---|--- |---|---|---|---|--- |---|-X-|---|---|--- |---|---|-X-|---|--- (1st) |---|---|---|---|--- 2番目から6番目の弦をかき鳴らします。このASCIIタブに対応します。 e |-0-| B |-1-| G |-0-| D |-2-| A |-3-| E |---| 希望する種類の入力を選択する柔軟性があります。各フレットの位置は、文字列または数値として表現できます。演奏されないギターの弦は、一般的にで示されXますが、それがあなたにとってより簡単になるなら(-1数字を使っている場合など)、別のセンチネル値を選択できます。一連の6フレットポジションは、任意のリスト、配列、またはシーケンスタイプ、単一のスペース区切り文字列、または標準入力として入力できます。 上記の4つのコードタイプのいずれかに対応する入力に依存できます。 投稿でソリューションにどのような入力が必要かを説明してください。 出力フォーマット 運指の対象となるコードを説明する文字列を標準出力に戻すか、印刷する必要があります。この文字列は、連結された2つの部分で構成されています。大文字は重要です。末尾の空白は許可されます。 最初の部分が示すルートノート、のいずれかをA、A#/ Bb、B、C、C#/ Db、D、D#/ …

7
最小と最大の間の最長部分列の最大積を見つける
入力: 長さが1より大きい、ゼロより大きい整数の空でないシーケンス。 出力: 自分自身を含むシーケンスの最小要素と最大要素の間の最長サブシーケンスのすべての要素の最大積。 注意: 最小要素と最大要素を繰り返すことができるため、可能な限り最長のサブシーケンスを見つけるために必要な明確な答えが得られます。最長のサブシーケンスが複数ある場合は、積が最大のサブシーケンスを選択します。 例: 最初の例: 入力: [5, 7, 3, 2, 1, 2, 2, 7, 5] 出力: 42 説明: min == 1、max == 7。両端に最小値と最大値を持つ2つのサブシーケンスがあります:[1, 2, 2, 7]と [7, 3, 2, 1]。それらの長さは等しいので、製品の比較:7*3*2*1 == 42と1*2*2*7 == 28。なぜなら42 >= 28、答え:42。 2番目の例: 入力: [1, 2, 2, 2, 4, 3, 3, 1] 出力: …

9
<(“ <)バードダンサー(>”)>
あなたの鳥は何らかの運動のためにかゆみを覚えており、常に静的な位置で立ち往生するのにうんざりしています。ランダムに踊るアスキー鳥を表示するプログラムを作成し、ダンスの動きに応じて100ms * nまたは200ms * nごとに更新します。鳥は常にダンスの動きから始まります&lt;(")&gt;。 プログラムは、スリープ間隔に(n &gt;= 0 &amp;&amp; n &lt;= 50)を掛ける数値である1つの入力を受け入れる必要があります。 100ms移動 ^(")v v(")^ ^(")^ v(")v 200ms移動 (&gt;")&gt; &lt;(")&gt; &lt;("&lt;) 追加の詳細 ランダム性は均一である必要はありませんが、各ダンスの動きは発生する合理的なチャンスを持っている必要があります(少なくとも60分の1は公平に思えます。同じ動きが連続して2回発生しても問題ありません) 複数の鳥ではなく、一度に1羽の鳥のみを表示する必要があります 末尾の空白は許可されます(ただし、他の末尾の文字は許可されません) 眠る前に鳥を表示する必要があります Python 3の例 import random, time, sys birds = """(&gt;")&gt; &lt;(")&gt; &lt;("&lt;) ^(")v v(")^ ^(")^ v(")v""" birds = birds.split() interval = int(input("Sleep for 100ms*")) selection …

6
粘着性のある軽い装飾をアニメーション化する
この挑戦は、私の家の法廷での粘着性のあるクリスマスライトに敬意を表します。 課題は、「リアルタイム」で装飾を示すグラフィカルな出力を作成することです。 ビデオ(gifまたはその他の形式)には、n行m列の垂直および水平の「ライト」があります。5 &lt;= m、n &lt;= 40。フレームのサイズと解像度はn とmによって異なる場合がありますが、n、m = 5の場合は少なくとも50x50ピクセルである必要があります(ベクトルグラフィックは問題ありません)。絵とは次のようになります。n=6m=5 装飾: 色: すべてのライトは以下の6 RGB-色のいずれかを持っています{255,0,0}、{0,255,0}、{0,0,255}、{255,255,0}、{0,255,255}と{255,0,255}。 アニメーション: nそしてm任意の合理的な形式にし、あなたが好きな順に入力とさせていただきます 画像は毎回変更されdt = 25 msます。インタープリターの制限、コンピューターの速度低下などの「外部要因」が原因である場合、偏差は問題ありません。 タイムステップを手動で設定できない場合は、デフォルトのタイムステップが受け入れられます。 すべてのライトはで赤({255,0,0})になりt=0ます。 最初のライト(左上)の色が変わる可能性は常に5%です。すべての色(現在持っている色を除く)は同じように見えるはずです。 各ライト(最初のライトを除く)は、その左側のライトの色を取得します。ライトが左端にある場合、上の行の右端にあるライトの色を取得します。ライトには、下図のように番号が付けられています。ライト番号kは、ライト番号の色を取得しk-1ます。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 理論的には、出力は永遠に実行されるはずです(ただし、言語/インタープリターにこれを妨げる制限がある場合を除く)。 少なくとも5秒、できればそれ以上の回答のサンプルを提供してください(これは推奨事項であり、要件ではありません)。(TIOまたは同様のものへのリンクももちろんOKです:D) フレーム、軸、グリッド線などが受け入れられます。 6行5列 15行30列

7
ポリグロット片の印刷
通常、ポリグロットは、各言語が他の言語に存在するコードの一部を無視できるように、文字列リテラルでラップしたり、コメント構文などのトリックを使用して構築されます。 あなたの目標は、各言語の出力がその出力を生成するポリグロットからのコードであるポリグロットを書くことです。具体的には、出力は削除のみのポリグロットコードから構築する必要があり、指定された言語のクインでなければなりません。 ルール 適切なクインだけが許可されます(ソースコードの読み取り、入力の取得、STDOUTへの出力、またはSTDOUTがオプションでない場合は最も近い代替が必要であり、プログラムは暗黙的に印刷されるリテラル以外のもので構成する必要があります)。 言語ごとに異なるエンコーディングを使用できるため、ここで重要なのは未加工バイトです。たとえば、言語AがUTF-8を使用し、言語BがCP437を使用する場合、(16進数)コードC3 88 46 47はÈFG言語Aと├êFG言語Bになります。 すべての出力は個別でなければなりません(やはり、生のバイトを比較します)。これにより、マイナー言語バージョンを制限しようとする複雑さを回避できます。2つの言語がコードの同じ部分を使用して同じことを行う場合、両方を要求することはできません。 XY両方で有効な出力でYZあるがBでも有効な2つの言語AとB がある場合XY、A YZの出力とBの出力として選択できるため、スコアでそれらの両方を要求できます(XY上記の規則のため、両方の言語を請求することはできません)。 すべての出力はできるだけ短くする必要があります。たとえばprint('foo')#something、Python 3のコードが(出力が正しくないという事実を無視して)の場合、出力する必要があるコードはになりprint('foo')、print('foo')#許可されません。正しい出力を生成する長さが等しい(最小の)文字列が複数ある場合は、いずれかを選択できます。 提出物は、少なくとも2言語の多言語でなければなりません。 あなたのスコアはによって与えられ(number of programming languages with distinct outputs)**3/(total byte size of polyglot)ます。最高のスコアが勝ちます。2つの提出が同じスコアを達成した場合、最初にそのスコアに達した提出が勝ちます。

17
データを無効化
データを無効にするには、すべての数字(数字ではない!)をゼロで、すべての文字(文字列ではない!)をスペースで再帰的に置き換えます。 言語が処理できる単一の数字、文字、または文字列、または混合した数値/文字データの再帰配列*を受け入れる必要があります。たとえば、言語がそのような文字列を処理できる場合は、実際の文字列を受け入れる必要があります(入力を単一文字のリストに制限しないでください)。 言語にこのタスクのすべてまたはほとんどを実行するビルトインが含まれている場合、追加の代替バージョンを用意していただければ幸いです。 各言語での最短の提出が勝者であり、私から賛成票を受け取ります。 サンプルケース "" → "" 7 → 0 123.456 → 0 "X" → " " " " → " " "Yo!" → " " [] → [] [-1.2E3] → [0] ["Hey"] → [" "] ["H","e","y"] → [" "," "," "] ["R",2,"D",2] → [" ",0," ",0] ["C","3","P",0] → …

6
マジックミラーの狂気
前書き 魔法の鏡でいっぱいの部屋があります。それらは、別の魔法の鏡を除いて、あらゆるアイテムを複製できる神秘的なアーティファクトです。より明確には、アイテムの複製バージョンが同じ距離でミラーの反対側に表示されます。ただし、複製ミラーとアイテム(オリジナルまたは複製)の間に、両側に別のマジックミラーがある場合、複製は形成されません。元のアイテムはミラーの左または右に配置でき、複製は反対側に表示されます。また、複製したアイテム自体を別のミラーで複製できます。アイテムが他のアイテムの複製をブロックすることはありません(複製される予定の位置に直接いることを除く)。 入力 入力は、.#|空のスペース、アイテム、マジックミラーを表す文字で構成される文字列です。入力には常に少なくとも1つのマジックミラーがあります。 出力 出力は、上記のルールに従って、各マジックミラーが可能なすべてのアイテムを複製した別の文字列になります。重複するアイテムが表示される場所には常に空きスペースがあると想定できます(したがって、アイテムが範囲外に出ることはありません)。 例 入力文字列を考えます .#.|.....|......# A B C D ここでは明確にするためにいくつかの位置をマークしています。ミラーBはitemを複製Aし、最終的に右になります。 .#.|.#...|......# A B C D ミラーCは新しいアイテムを複製します: .#.|.#...|...#..# A B C D ミラーCが邪魔になっているAため、ミラーBはアイテムを複製できません。DミラーBが反対側にあるため、itemを複製することもできません。同様に、ミラーBが邪魔になるため、DミラーCはアイテムまたはその隣のアイテムを複製できません。したがって、これは正しい出力です。 別の例として、入力を考えます .##..#...|#..##...|..##....#. AB C DE FG H IJ K ミラーは、D複製することができますAし、B右へ、そしてEそしてG左へ。 既に互いに重複CしFています。文字列は .##.##..#|#..##.##|..##....#. AB C DE FG H IJ K ミラーはH複製することができE、Fとの重複AとB右へ、そしてI左へ。 GとJは既に互いに重複しており、ミラーDはの邪魔になりKます。今、私たちは持っています .##.##..#|#..#####|#####..##. AB C …
22 code-golf  string 

12
ハートのハンドを獲得する
ハーツは、4人のプレーヤーのためのトリックを取るカードゲームです。各トリックは、リーディングスーツの最高のカードをプレイしたプレーヤーによって行われます。各ハンドの終わりに、プレーヤーは自分が取ったペナルティカードに応じてペナルティスコアを負います。タスクは、Microsoft Heartsルールの下でスコアを決定することです。 入力 入力は、4人のプレーヤーのそれぞれが取ったペナルティカードを示す4つのリスト(または区切り文字列、配列など)です。ペナルティカードは 2♥, 3♥, 4♥, 5♥, 6♥, 7♥, 8♥, 9♥, 10♥, J♥, Q♥, K♥, A♥, Q♠ 私たちは 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 0 それぞれ。 出力 出力は、4人のプレーヤー(リスト、文字列、配列など)が被った4つのペナルティポイントです。スコアリングは次のとおりです。 各ハート(♥、両端1を13含む整数で表される)には1ポイントが発生します スペードの女王(Q♠、で表される0)には13ポイントがかかります 例外:プレーヤーがすべてのペナルティカードを獲得した場合(月の射撃と呼ばれる)、彼は0ポイントを被り、他のすべてのプレーヤーは26ポイントを被ります。 テストケース [2, 8, 7, 1], [3, 4], [], [9, 5, 6, …

10
配列を単純化する
入力 配列または正の連続した昇順整数を含むことができる配列。配列には、その中に任意の数の配列を含めることができます。空の配列はありません。 出力 簡素化されたこの配列 配列を単純化する方法 [1, [2, 3], [[4]], [[[5, 6], 7, [[[8]]]], 9]]例として配列を使用します。 最初に、値のネストの深さを確認します。深度とそれらの深度での数値は次のとおりです。 0 1 1 2 3 9 2 4 7 3 5 6 5 8 出力配列は、元の配列の数値を取得し、ネストの深さでグループ化してから、要素の元の深さの深さでグループをネストすることで構築します。数字を昇順と深さで並べます。 したがって、出力は [1, [2, 3, 9], [[4, 7]], [[[5, 6]]], [[[[[8]]]]]] 例 [1, [2, 3], [[4]], [[[5, 6], 7, [[[8]]]], 9]] …

15
オペレーターASCIIアート
チャレンジ 以下のリストのASCII演算子と数値nが与えられた場合、長さnの演算子の線分を持つ文字としてその演算子を使用して、演算子のASCII表現を描画します。 入力 リストからASCII文字= + - x /と整数。(の代わりにおよびの代わりに使用していますが、どちらか簡単な方を使用できます)。以下のためにと、あなただけのアライメントの問題を回避するために、奇数を処理する必要があります。nn &gt;= 1x*/÷+x 出力 長さnのセグメントを持つ文字で構成される演算子のASCII図面。水平方向の部分は、垂直/水平距離の違いを相殺するために文字間にスペースが必要です。 ルール これはcode-golfなので、バイト単位の最短コードが優先されます。標準的な抜け穴は禁止されています。 例 入力: + 3 + + + + + 入力: = 4 = = = = = = = = 入力: = 10 = = = = = = = = = = = = = …

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