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

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

10
次の祝日
オーストラリア人は祝日や飲酒が大好きです。昨日、1月26日はオーストラリアの日で、祝日です。昨日は仕事をしていなかったのが嬉しかったです。また、次に祝日が来るのを知りたいと思いました!残念ながら、私は少し飲みすぎて、自分で解決することはできません。 入力としてオーストラリアの日付/時刻表記(dd / mm)で日付を取り、次の祝日までの日数を出力するプログラムを作成します。私はクイーンズランド(QLD)の居住者であるため、クイーンズランダーに影響を与える祝日のみに興味があります。 25/03 | グッドフライデー 26/03 | イースター土曜日 28/03 | イースター月曜日 25/04 | Anzac Day 02/05 | 労働者の日 03/10 | 女王の誕生日 25/12 | クリスマスデー 26/12 | ボクシングデー 27/12 | クリスマスの休日 サイトから次のことに注意してください。 クリスマスの休日 元旦、クリスマス、ボクシングデーが週末になると追加の祝日が追加されます。 クリスマスは日曜日なので、余分な祝日があります。クリスマスはまだ祝日です。 私は朝の人間なので、現在の日付を1日として含める必要があります(次の祝日のプログラムをチェックする可能性が最も高いため)。つまり、祝日の日付が入力された場合、出力は次のようになり0ます。祝日の前日が入力された場合、出力はになります1。 今から年末までの日付(27/01)にのみ興味があります。計算する必要がある最終日は、出力が行われる1(正月の)31/12 です。 標準的な抜け穴は禁止されています。 入力 入力は常に5文字です:ハイフン-またはスラッシュで区切られた4文字/ 入力は27/01〜31/12の日付のみです 出力 クイーンズランドオーストラリアの次の祝日までの日数(入力日を含む)は、0と153(最長のギャップ)の間の数である必要があります 新しい行やエラーはありません 例 01-05 = 1 …
18 code-golf  date 

13
アスキーアートの成形
改行を含まない単一の印刷可能なASCII文字列と、スペース()およびハッシュ(#)を含む複数行の「型」が与えられます。 文字列内の文字ごとに移動し、左から右、上から下の順に文字列の文字を使用してハッシュを置き換える必要があります。文字列が短すぎて金型を満たすことができない場合は出力を停止し、文字列が長すぎる場合は文字列を切り捨てて金型を正確に埋めます。 文字列/型の例(文字列が長すぎる、切り捨てられた): Loremipsumdolorsitamet,consecteturadipiscingelit.Namsuscipitmagnanoneratgravidacondimentum.Vestibulumnecnisllorem.Fuscemolestieviverranibh,eueleifendnislplaceratnon.Namblanditturpislacus,vitaemolestielacusimperdietquis.Nullapulvinar,exquissollicitudinfacilisis,eratnullavolutpatlectus,etluctusenimvelitegetex.Inhachabitasseplateadictumst.Donecinterdumnullalacinia,sodalesloremin,eleifendturpis.Pellentesqueanisimi.Aeneannonlobortisdiam,quisaliquetquam.Aeneanaugueipsum,imperdietsedaliquetnon,volutpategetsapien.Nullampharetranullaquispretiumornare.Aliquamfermentumvestibulummassavitaevehicula. ########################################################### ##### ############## ###### ###### ###################### ##### ## ###### # ##### ###### ######## ###### ###### # # #### #### ##### ###### ####### ###### ##### ###### ### ### ##### ###### ####### ####### ##### ###### ##### ### ########### ###### ####### ### ###### ###### ###### ### ########## ###### ##### …

1
最大部分文字列の構築
この課題では、次の2つのことが渡されます。 文字列の長さ、 N 文字列のリストL、それぞれに割り当てられたポイント値があります。渡されない文字列のポイント値は0です Nすべてのサブストリングポイントの合計ができるだけ大きくなるような長さのストリングを作成する必要があります。 例えば: 5 [("ABC", 3), ("DEF", 4), ("CDG", 2)] 出力する必要があります ABCDG ポイント(ABCおよびCDG)を持つ2つの部分文字列は合計5ポイントであり、他の可能な構造では5ポイント以上を与えることができないためです。 部分文字列は、文字列内で複数回使用でき、重複する場合があります。ポイントは常に正であり、部分文字列の長さは1からN文字長の間であると仮定できN > 0ます。複数の構成が最大の場合、それらのいずれかを印刷します。 プログラムは妥当な時間内に実行する必要があります(各例で1分以内): 1 [("A", 7), ("B", 4), ("C", 100)] => C 2 [("A", 2), ("B", 3), ("AB", 2)] => AB 2 [("A", 1), ("B", 2), ("CD", 3)] => BB 2 [("AD", 1), …

2
三角形グリッド上の位置合わせ
六角形のグリッドは、最近2次元データに関する課題でかなり人気のあるひねりになりました。ただし、これまで同様に興味深い三角形のグリッドはほとんど無視されてきたようです。かなり単純な挑戦でそれを修正したいと思います。 まず、三角形のグリッドをどのように表現しますか?次の例を考えてみてください(今は正しい図を無視してください): セルはきちんと規則的なグリッドに落ちます(規則的なグリッドとの違いは、どのセルが隣接していると見なされるかだけです): 1234567 89abcde fghijkl mnopqrs さて、右の図が示すように、三角形のグリッドには3つの主軸があります。水平軸と2つの対角軸です。 ASCIIグリッドでこれらを強調表示します。 AVAVAVA VAabcAV fVAiAVl mnVAVrs チャレンジ 三角形のグリッド(左上隅が上向きの三角形)を表す長方形の文字列が与えられます。ほとんどのセルはbe .ですが、正確に2つのセルはになります#。例: ....# .#... ..... 2つ#がグリッドの3つの軸のいずれかに沿って配置されているかどうか(つまり、上で強調表示されている3つの方向のいずれかの単一行にあるかどうか)を決定します。この例では、答えは「いいえ」です。 プログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、STDOUT(または最も近い代替)、関数の戻り値または関数(out)パラメーターを介して結果を出力できます。 入力は、改行またはその他の便利な文字で区切られた単一の文字列、または文字列のリストです。.およびの代わりに、任意の2つの(一貫した)印刷可能なASCII文字を使用でき#ます。 ハイライトされたセルが整列している場合、出力は真実の値である必要があり、そうでない場合は偽の値である必要があります。 標準のコードゴルフ規則が適用されます。 テストケース 真のグリッド: .#..#. # # ........... ...#....... ........... ........... ........... .......#... ........... ........... .......#... ........... ........... ........... ...#....... ........... .#......... ........... ........... ........... ........... .......#... ........... …

4
成長するクインシーケンス
p1 p2 ... p10以下の特性を満たす10個のプログラムのシーケンスを作成します。 pK印刷pK+1のためのK1から9まで p10 プリント p10 最初のKプログラムが連結されると、結果のプログラムがp1...pK印刷されp1...pKます。 各プログラムpKは、前のプログラムよりもバイトサイズが大きくなければなりませんpK-1。 すべてのプログラムは同じ言語である必要があります。 組み込みのクイニング機能(Q多くの言語など)が許可されています。 スコアは、10個のプログラムのバイトカウントの合計です。プログラムは10個しかないため、コードはできるだけ短くする必要があります。幸運を。

2
Forgotten Realms日付計算機
日付ライブラリが組み込まれている言語と組み込まれていない言語の間で競争の場を平準化するために、架空のカレンダーを使用してみましょう。Forgotten Realmsは、Dungeons&Dragonsの(the?)キャンペーン設定です。もちろん、それぞれに独自のカレンダーがあります。 ハプトスのカレンダー 便利なことに、忘れられた領域の1年も365日です。さらに、カレンダーには12か月もあります。ただし、ここが興味深いところです。毎月の長さはちょうど30日です。残りの5日間は、その月の間にある休日です。順番に月と休日を示します(休日はインデントされています): 1 Deepwinter Midwinter 2 The Claw of Winter 3 The Claw of the Sunsets 4 The Claw of the Storms Greengrass 5 The Melting 6 The Time of Flowers 7 Summertide Midsummer [Shieldmeet] 8 Highsun 9 The Fading Highharvestide 10 Leaffall 11 The Rotting The Feast …

26
ジャグラーシーケンスを出力する
ジャグラー配列は、次のように記載されています。入力a 1で始まり、次の項は再帰関係によって定義されます その後のすべての項は1になるため、シーケンスは1に達すると終了します。 仕事 入力nが2以上の場合、プログラム/関数/ジェネレーターなどを記述します。それぞれのジャグラーシーケンスを出力/返します。出力は、合理的な形式で行うことができます。ジャグラーシーケンスを計算する組み込み関数、または結果を直接生成する組み込み関数を使用することはできません。シーケンスはで終了すると想定できます1。 テストケース Input: output 2: 2, 1 3: 3, 5, 11, 36, 6, 2, 1 4: 4, 2, 1 5: 5, 11, 36, 6, 2, 1 これはコードゴルフです。バイト単位の最短コードが優先されます。

4
シンプルなDNAシミュレーター
あなたのコードは、DNAの非常に単純なASCIIアート表現を永久に生成します。必要な形式の入力として2つの数字を受け取ります。リスト、関数の引数、標準入力などです。 I0.0〜1.0の秒単位の浮動小数点間隔 Z1から64までの整数としてのズームレベル コードはI、1 秒ごとにstdoutまたはそれに相当するものに1行を出力し、次のような無限出力を生成します(ズームレベル4の場合)。 A T-----a G-------c G-----c g t-----A a-------T c-----G T A-----t C-------g ... 具体的には、DNAの我々の表現は、ハイフンで接続された正弦波のペア、文字から成るものであるa、c、g、及びt、文字の他A、C、G、およびT。場合はx私たちが現在印刷している行の0から始まるインデックス番号で、小文字の波の中の文字の0ベースの位置は次式で与えられ(sin(πx / Z) + 1) * Z、そして大文字の波にで与えられ(-sin(πx / Z) + 1) * Z、両方の丸い最寄りに(床のではありません)整数。詳細: 2つの波が重なる場合は、大文字の波から始めて、どちらの波が前面にあるかを交互に切り替える必要があります。(小文字の波から始めると、存在しない二重らせんができます!) 大文字小文字を無視して、実際のDNAのように、Aは常にTとペアになり、Cは常にGとペアになります。ペア自体は、4つの可能性にわたって均一に分布するようにランダムに選択する必要があります。ペアの選択がコードの連続した実行で同じか異なるかは関係ありません。あなたのランダムな選択の統計的品質は長い出力が明らかなパターンと、少なくとも十億にピリオドがないほどの問題ではありません(のような欠陥のPRNG RANDUは罰金ですが。) 後続のスペースがないか、そのズームレベル(上記の例では9文字)ですべての行を波の最大位置までパディングする必要があります。 DNAは小さいため、コードはできるだけ短くする必要があります。 その他の例: ズームレベル8: T C-----g A-----------t C-------------g G---------------c T-------------a T-----------a T-----a c g-----C t-----------A g-------------C a---------------T …

2
ランレングスレーサー
2つの入力が与えられます:ランニングトラックを定義するランレングスエンコード形式の文字列と、開始するレーンを表す大文字。たとえば、文字列「3a4A6b5B」は「aaaAAAAbbbbbbBBBBB」に展開されます。次に、展開された文字列を使用して、次のようなトラックを作成します。 A) aaaAAAA B) bbbbbbBBBBB これは2車線のトラックです。小文字は空気を表します。オンエアはできません!大文字は、あなたが走れる道を表します。このチャレンジの目標は、大文字を与えられて、そのレーンでスタートするレーサーがどこまで走れるかを出力することです。レーサーは、直上または直下に道路がある場合、車線を切り替えることができます。また、逆方向への実行も許可されています!この特定のトラックでは、いずれのトラックも位置1の走行可能な道路がないため、文字入力の出力は0です。 例: 入力:「4A5B4c3C」、「A」 このコードは、次のようなトラックに展開されます。 A) AAAA B) BBBBB C) ccccCCC この例の出力は7です。これは、レーンAで始まるランナーがレーンBに移動し、次にレーンCに移動して、7番目の位置で終わる可能性があるためです。 入力:「4A2B3D」、「D」 追跡: A) AAAA B) BB C) D) DDD 出力は3です。これは、レーンDで始まるランナーがレーンBまたはAに到達する方法がないためです。 入力:「4A4a4A3b6B5C」、「A」 追跡: A) AAAAaaaaAAAA B) bbbBBBBBB C) CCCCC AのランナーはBに切り替えて、最後にAに戻ることができるため、出力は12です。「C」の最大距離も12です。「B」の場合、0です。 入力:「12M4n10N11O」、「M」 追跡: M) MMMMMMMMMMMM N) nnnnNNNNNNNNNN O) OOOOOOOOOOO 複数桁のランレングスを使用した簡単な例。出力は14です。 入力:「4A5B1b2B4c3C」、「A」 追跡: A) AAAA B) BBBBBbBB …

6
キンバリングシーケンス
前書き もちろん、シーケンスには多くの課題があるので、別の課題を示します。 キンバリングシーケンス(A007063)は次のとおりです。 1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28, 22, ... これは、通常の反復をシャッフルすることにより生成されます。 [1] 2 3 4 5 6 7 8 シーケンスの最初の項は1です。その後、左側のすべての用語が使用されるまでシーケンスをシャッフルします。シャッフルにはパターンがありますright - left - right - left - ...。の左側に用語がないため1、シャッフルはありません。次のものが得られます。 2 [3] 4 5 6 7 8 9 i 番目の反復で、i 番目のアイテムを破棄し、それをシーケンスに入れます。これは2回目の反復なので、2番目の項目は破棄します。シーケンスは次のようになります1, 3。次の反復では、上記のパターンで現在の反復をシャッフルします。i …

1
多角形の辺の数を数える
多角形の辺の数を数える ポリゴンサイドカウントロボットは、誰にも言わずに世界を旅することにしましたが、ポリゴンカウントのプロセスを長時間停止しないことが重要です。したがって、次のタスクがあります。ポリゴンの白黒画像を指定すると、プログラム/関数は辺の数を返す必要があります。 プログラムは古いパンチカードコンピューターに送られ、パンチカードは最近非常に高価なので、プログラムをできるだけ短くすることをお勧めします。 エッジの長さは少なくとも10ピクセルであり、2つの隣接するエッジによって形成される角度は少なくとも10°ですが、170°以下(または190°以上)です。ポリゴンは画像内に完全に含まれており、ポリゴンとその補数が接続されているため(孤立した島はありません)、この入力は無効になります。 得点 これはcodegolfです。つまり、バイト単位の最短のサブミッションが勝ち、サブミッションはすべてのテストケースのエッジの正しい数を見つける必要があります。(また、提出は他のケースでも機能するはずです。それらのテストケースだけの最適化は許可されていません。) 毎回正しい番号を見つけられないソリューションを提出したい場合、それも提出できますが、それはより良いパフォーマンスのすべての提出の後ろにランク付けされます。 提出タイトルに合計数を含めてください。(総誤差は、辺の実際の数と各出力の間の絶対差の合計です)。 テストケース n = 10 n = 36 n = 7 n = 5 これはテストケースではなく、単なる好奇心からです:この入力に対していくつのエッジを取得しますか?

9
ヒルベルトプライムズゴルフ
ヒルベルト番号はフォームの正の整数として定義されている4n + 1ためn >= 0。最初のいくつかのヒルベルト数は次のとおりです。 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93, 97 ヒルベルト数列は、OEISシーケンスA016813によって与えられます。 関連数列、ヒルベルト素数は、ヒルベルト番号として定義されているH > 1任意のヒルベルト数で割り切れないkように1 < k < H。最初のいくつかのヒルベルト素数は次のとおりです。 5, 9, 13, 17, 21, 29, 33, 37, 41, 49, 53, 57, …

6
椅子を調整する
チャレンジ 新しい椅子を購入しました!問題は、それを制御する方法がわからないため、プログラムを作成してそれを実行する必要があることです。 調整されていない椅子に座っている時間は長くなります。したがって、コードはできるだけ短くする必要があります。 例 5,3,2,2,1 O | | | _ | | |_|_ | | O 3,5,2,3,5 O | _ | | |__|__ | | __|__ OOOOO 2,13,1,1,13 O | _ |______|______ ______|______ OOOOOOOOOOOOO これが飛行機のように見えると思うのは私だけですか? 椅子パーツ 椅子にはさまざまなコンポーネントがあります。 O | | <- Backrest | _ <- Armrest | | |__|__ <- …

2
数学ステートメントの縮小
チャレンジ あなたはCoyote Betaと呼ばれる素晴らしいサービスの所有者です。これは、ユーザーがインターネット経由で送信する数学の質問に魔法のように答えます。 しかし、結局のところ、帯域幅は高価です。「コヨーテベータプロ」を作成するか、これを解決する方法を見つけるかの2つの選択肢があります。つい最近、誰かが質問した(x + 2)。クライアントはを送信できませんでしたがx+2、ユーザーには違いはありませんか? タスク あなたの仕事は、数式を「縮小」することです。入力式が与えられた場合、同じ入力の最小表現が得られるまで、空白と括弧を削除する必要があります。連想操作を囲む括弧は保持する必要はありません。 ここに与えられた唯一の演算子は+、-、*、/、および^標準的な数学結合性と優先順位で、(累乗)。入力で指定される唯一の空白は、実際のスペース文字です。 サンプル入出力 Input | Output ------------|-------------- (2+x) + 3 | 2+x+3 ((4+5))*x | (4+5)*x z^(x+42) | z^(x+42) x - ((y)+2) | x-(y+2) (z - y) - x | z-y-x x^(y^2) | x^y^2 x^2 / z | x^2/z - (x + 5)+3 | …

4
コードのシンボリックネガを印刷する
(これは、コードのネガを印刷のバリエーションです。これはとても楽しかったです。MartinBüttner♦に感謝します-このテキストのほとんどは彼のものです。) シンボルを次の印刷可能なASCII文字と考えてみましょう(スペースが含まれていることに注意してください)。 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ そして、これらの英数字: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 次のように、辺の長さNの印刷可能なASCII文字の正方形を考えます。 ONE, {two} &3,+= !four f|ve. また、各行と各列には、少なくとも1つの記号と1つの英数字を含める必要があります。(上記の例はこれを満たします。) そのような正方形のシンボリックネガは、各シンボルが英数字に、またはその逆に置き換えられる同じサイズの正方形であると定義します。たとえば、次は上記の例の有効なシンボリックネガになります。 [&]OK a...b 1/100 i@#$% (R) z 特定の文字の選択は、上記のカテゴリに含まれている限り、無関係です。 チャレンジ あなたの仕事は、辺の長さがN> 1の正方形のソースコードでプログラムを書くことです。これは、そのソースコードのシンボリックネガをSTDOUTに出力します。末尾のスペースは印刷する必要があります。単一の末尾の改行を印刷する場合としない場合があります。 通常のクインルールも適用されるため、直接または間接に独自のソースコードを読み取ってはなりません。同様に、入力された各式の値を自動的に出力するREPL環境を想定してはなりません。 勝者は、最小の辺の長さNのプログラムです。同点の場合、ソースコードのシンボルが最も少ない提出が勝ちます。同点の場合は、最も早い回答が優先されます。

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