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

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

30
4人のスタンドオフ
4人のスタンドオフ 説明 どういうわけか、4方向のスタンドオフに陥りました。装填された銃が手にあり、手some弾がベルトに引っかかっています。 目的は、スタンドオフの終わりに最も健康になることです。せいぜい1人の人がプラスの健康状態にあるとき、スタンドオフは終了します。 各プレイヤーは5体力を持ち、体力が/を下回ると死亡します0。プレイヤーが死亡するターンは、そのプレイヤーがダメージを受けることができる最後のターンです。 スタンドオフの最後にライブプレイヤーがいる場合、そのプレイヤーが勝ちます。そうでない場合、負のヘルスが最も少ないプレイヤーが勝ちます。 行動 撃つ:誰かを撃つ。 2 生きている敵を撃った場合のダメージ 0 死んだ敵を撃った場合のダメージ health_at_start_of_turn+2自分を撃った場合のダメージ。(これにより、MOSTの-2健康状態が維持されることに注意してください。) 自分が撃った同じターンに敵が1人撃った場合、-4の体力でスタンドオフを終了します(自殺したターンに他のプレイヤーからダメージを受けます)。 次のターンのあなたの行動は無視されます(そしてそうであると仮定されますNothing)。 ダッジ:ダッジシングル相手のショットを試してみてください。 準備:手g弾を外し、投げる準備をします。 あなたはそれをスローするために3ターンしか持っていません、あなたが爆破される前に(6あなた自身への3ダメージ、すべての生きている敵へのダメージ) 投げられていない手ren弾で死ぬことは、手turns弾を3ターン投げないことと同じです。 投げる:誰かに手g弾を投げつけて、最高のものを願ってください。 8生きている場合、ターゲットはダメージを受けます 3生きている場合、他のすべての人(自分を含む)がダメージを受ける 何もない:ターンの間、じっと立って、全員が死ぬのを見てください。 入力 プログラムには次の情報が渡されます。 各プレイヤーの健康 スタンドオフの開始以降にそのプレーヤーが行ったアクションのリストは、プレーヤーごとに渡される情報の形式です。 [Health],[Action 1],[Action 2],[Action 3],... アクションは、出力セクションで指定された形式で提供されます。 スペースで区切られた単一の引数として渡された4つの文字列を受け取ります。これらの文字列の順序は次のとおりです。 [Player Info] [Opponent 1 Info] [Opponent 2 Info] [Opponent 3 Info] 文字列は2番目の引数として渡されます。最初の引数には、成立するスタンドオフを一意に識別する整数が含まれます。同じプレーヤーのセット間のスタンドオフは、同時でないことが保証されています。ただし、複数のスタンドオフが同時に発生します。 例えば: $./Player.bash 5 "3,S2,N 5,P,N …

30
フォーク爆弾なしでメモリリークを作成する[終了]
あなたの仕事は、メモリリークを作成することです。これは、コンピューターがなくなるまでメモリの負荷を使用するプログラムであり、コンピューターがなくなるのを防ぐためにスワッピングを行う必要があります。メモリを解放できる唯一の方法は、タスクマネージャーでプログラムを強制終了するか、taskkill /im yourprogram /f(Windowsの場合)などのコマンドライン強制終了を使用するか、コンピューターを再起動することです。単にアプリを閉じても、メモリを独占し続けることは妨げられません。 ルール: あらゆる種類のフォーク爆弾は禁止されています。つまり、悪名高いBashライン:(){ :|:&};:は禁止されています! アプリケーションはシングルスレッドのみである必要があります。これは、フォークボムルールを意味します。 プログラムは他のプログラムを実行してはなりません。これはあなたがただのようなことができないことを意味しますrun(memoryfiller.exe)。これの唯一の例外は、OSまたは言語にバンドルされているプログラムであり、主にメモリを消費するように設計されていない(つまり、別の目的がある)プログラムです。これは、catおよびなどln -sが許可されていることを意味します。 好きなだけメモリを使用できます。より良い。 コードは完全に説明する必要があります。 幸運を。これは人気コンテストなので、質問日から10日後に最も投票数の多いコードが勝ちます!

30
スコアを出力してください!
チャレンジ: コンセプトは非常に単純です:独自のコードゴルフスコアを出力する完全なプログラムを作成してください! 出力は、プログラムのバイトカウントと末尾の bytes。 しかし、待機 ..... 1つの制限があります。 ソースコードにバイトカウントの数字を含めることはできません あなたのスコアがあるのであれば186 bytes、あなたのプログラムは、文字を含めることはできません1、6または8 出力例: 315 bytes 27 Bytes 49 BYTES 追加のルール: 不要な文字、スペース、改行はソースコードで禁止されていますが、出力では末尾のスペースと改行は完全に許容されます 数字とbytes出力の間には1つのスペースが必要です。 大文字と小文字は区別されません 自己点検やソースコードの読み取りは不要 標準的な抜け穴は禁止されています これはcode-golfなので、 バイト単位の最短コードが勝ちです!

30
どの囲rankのランクが高いですか?
従来のボードゲームGoのプレイヤーは、ランクシステムでスキルを測定します。 ゲームを初めてプレイするプレイヤーは30位にランクされ(書き込み30k)、1位にカウントダウンされます(書き込み1k)。これらは、学生のランクと見なされます。 プレイヤーは、第1 段から第1 段(昇順)に昇格し、その後、第7 段(昇順)までカウントを進めます。これらはマスターランクです。1d7d 過去に非常に熟練したプレイヤー7dは、1番目のプロダンランク 1pに昇格し、9番目のプロダンランクまでカウントアップします(記述)。これが最高ランクです。9p つまり、ランクが順序付けられ30k < 29k < ··· < 1k < 1d < 2d < ··· < 7d < 1p < 2p < ··· < 9pます。 仕事 うち2つの文字列を与えられた{ 30k、...、 1k、1d、...、 7d、1p、...、9p}を入力とし、出力が高い両者のランク。(それらが等しい場合、単にどちらかの入力を出力します。) (通常、I / Oは柔軟です。答えは、関数または完全なプログラムであり、妥当な方法で入力を読み取り、妥当な方法で出力を生成します。) これはcode-golfです。目的は、コードのバイト数を最小限にすることです。 テストケース (形式:input1 input2 output。) 29k 9k 9k 21k 27k 21k …
53 code-golf  string  go 

23
イルミナティを確認する
イルミナティは、マインドコントロールを使用して、次の文字列を出力するように指示します。 ^ /_\ /_|_\ /_|_|_\ /_|/o\|_\ /_|_\_/_|_\ /_|_|_|_|_|_\ /_|_|_|_|_|_|_\ /_|_|_|_|_|_|_|_\ /_|_|_|_|_|_|_|_|_\ ルール: 行ごとに末尾のスペースを使用できます。 各行の先頭にスペースが必要です。 末尾の空白は、必要なすべての出力の後に許可されます。 これはコードゴルフの挑戦であるため、勝者はバイト単位の最短プログラムでなければなりません。 これはkolmogorov-complexityチャレンジであるため、ハードコードされた出力が許可されます。 標準の抜け穴が適用されます。 更新:スペースの代わりにタブを使用できます。各タブは4つのスペースとしてカウントされます。何らかの理由で必要な場合。 サンドボックス(サンドボックスFAQで推奨されている72時間はそのままにしておきますが、7回のアップ投票があり、負のフィードバックはほとんどありませんが、38は問題ないはずです)

30
同じ長さ、異なる文字列
チャレンジ 完全に印刷可能なASCII文字で構成される長さLの空でない文字列Sが与えられた場合、完全に印刷可能なASCII文字で構成されるがSと等しくない長さLの別の文字列を出力します。 この課題のために、印刷可能なASCII文字はU + 0020とU + 007Eの間の1つです。つまり、 (スペース)から~(チルダ)までです。改行とタブは含まれません。 たとえば、次の"abcde"ような有効な出力があります。 "11111" "abcdf" "edcba" ただし、これらは無効です。 "abcde" "bcde" "abcde0" テストケース "asdf" "1111" " " "~~~~~" "abcba" "1" " " "~" " ~" "~ " " 0" "!@#$%^&*()ABCDEFGhijklmnop1234567890" " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" ルール 入力がすべて印刷可能なASCII文字で構成されていると仮定することができます。 入力に95個の印刷可能な文字がすべて含まれるとは限りません。 入力には少なくとも1文字が含まれ、256文字未満であると想定できます。 出力は、印刷可能なASCII文字のみで構成する必要があります。たとえば、inputにバイト\ x7Fを出力できませんでした"~"。 出力は、確率1の入力と異なる必要があります。つまり、入力とは異なるものになるまでランダムな文字列を生成できますが、L個のランダムな文字を出力することはできません。 出力では改行は使用できませんが、文字列にはカウントされない末尾の改行を1つ出力できます。 得点 これはcode-golfであるため、各言語のバイト単位の最短コードが優先されます。
53 code-golf  string 

30
任意の長さのカレー
機能、書くf正の整数に取り、関数を返します、。 返される新しい関数はと同一である必要がありますf。ただし、「終了呼び出し」が発生した場合、f代わりに渡されたすべての整数の合計を返す必要があります。 たとえば、g=f(4)(f最初の関数の場合)g別の関数に設定する必要があります。h=g(3)同じことをします。ただし、h引数なしで呼び出した場合(詳細については以下を参照)、7を出力する必要があります。これは前の関数引数の合計であるためです。別の言い方をすればf(3)(4)() == 7。 これはと同じではないことに注意してくださいf(3,4)()。 「終了コール」は、次のオプションのいずれかです(選択)。 引数なしで呼び出す 引数としてnull 非正の値 任意の量の関数呼び出しをサポートする必要があります。事前に定義された制限はありません。 合計が1'000を超えないことが保証されています。 「終了呼び出し」の前に少なくとも1つの呼び出しが行われていると想定できます。 コードでは静的なプログラムごとの変数を使用しないでください。そのため、同じランタイムで実験を複数回実行し、まったく同じ動作を観察できるようにする必要があります。 例: f(1)() == 1 f(4)(2)(7)() == 13 f(4)(2)(7)(5)(2)() == 20

26
大文字と小文字を区別する(非常に)敏感な文字列を解読する
ゴール これは簡単な挑戦です。あなたの目標は、各文字を同じケースの次の文字と交換し、文字以外の文字を変更せずに文字列を解読することです。 ステップごとの説明 最初の文字はEです。大文字の次の文字を探します:a Cです。これらの文字を交換すると、につながりCdoE!ます。 次の文字に進みdます。これはです。次の文字を小文字で探します:それはoです。これらの文字を交換すると、につながりCodE!ます。 次のキャラクターに進みます。これはdここで移動したものです。既に処理されているため、無視します。 次のキャラクターに進みます。これは、Eステップ1でここに移動したものです。既に処理されているため、無視します。 次の文字に進み!ます。これはです。手紙ではないので無視します。 ルール 入力文字列は、32〜126の範囲の印刷可能なASCII文字のみで構成されていると想定できます。 完全なプログラムまたは関数を作成して、結果を出力または返すことができます。 入力文字列に奇数個の文字が含まれている場合、最後の残りの文字を別の文字と交換することはできません。文字列に含まれる文字数が偶数で、大文字と小文字が奇数である場合、同じロジックが適用されます。 これはコードゴルフなので、バイト単位の最短回答が勝ちです。標準的な抜け穴は禁止されています。 テストケース Input : lLEhW OroLd! Output: hELlO WorLd! Input : rpGOZmaimgn uplRzse naC DEoO LdGf Output: prOGRamming puzZles anD COdE GoLf Input : eIt uqHKC RBWOO xNf ujPMO SzRE HTL EOvd yAg Output: tHe quICK BROWN …
53 code-golf  string 

4
ネザーポータルの検出
ビデオゲームMinecraftは、仮想世界を構成する3D 整数ラティスにさまざまな種類のブロックを配置および削除することをすべて目的としています。各格子点には、ブロックを1つだけ含めるか、空にすることができます(公式には「空気」ブロック)。この課題では、3Dワールドの1つの垂直2Dプレーンと、1つのタイプのブロック(黒曜石)のみを考慮します。 黒曜石が垂直面で空の長方形の輪郭を形成するとき、ネザーポータルを作成できます。空の長方形は、幅2単位×高さ3単位から幅22単位×高さ22単位までの任意のサイズです。長方形の角は黒曜石で縁取られる必要はなく、側面のみである必要があります。 たとえば、X黒曜石で.空であると仮定します(数字は単に識別のためであり、空でもあります)。 ................................... ..XXXX....XXXX....XXXXXXXXX........ ..X..X...X....X..X.........X..XXXX. ..X.1X...X.2..X..X...3...X.X..X.... ..X..X...X....XXXX.........X..X.6X. ..XXXX....XXXX...XXXXXXXXXXX..X..X. .............X.4.X....X.5.X...XXXX. .............X...X....X...X........ ..............XXX......XXX......... ................................... このグリッドには、3つの有効なポータルが含まれています。 ポータル1は2 x 3ユニットで、完全に空で、黒曜石で囲まれています。したがって、それは有効です。 ポータル2は4 x 3で、完全に空で、黒曜石で囲まれています。したがって、それは有効です。 ポータル3は完全に空ではありません。したがって、それは無効です。 ポータル4は3 x 3で、完全に空で、黒曜石で囲まれています。したがって、それは有効です。 ポータル5は3 x 2ユニットで、小さすぎます。したがって、それは無効です。 ポータル6には境界線の一部がありません。したがって、それは無効です。 チャレンジ 黒曜石と空のグリッドのこれらの文字列表現を取り込んで、存在する有効なネザーポータルの数を出力するプログラムまたは関数を作成します。 入力は、stdin、ファイル、または関数の引数から取得できます。 、テキストのすなわち完全な矩形グリッドを少なくとも1ワイド文字と背の高い、のみ含む-あなたは、入力が常にうまく形成されていると仮定するXと.。オプションで、最後の行の後に末尾の改行があると仮定できます。 必要であれば、あなたは、任意の2つの異なる使用することができ、印刷可能なASCII文字の代わりに文字をXして.。 黒曜石はグリッドの境界上にある可能性があります。境界を超えるものはすべて空と見なされます。 入力例-出力は次のようになります4。 ................................................................ ...................................XXXXXXXXXXXXXXXXXXXXXXXXX.... ..XXXX....XXXX....XXXXXXXXX........X.......................X.... ..X..X...X....X..X.........X..XXXX.X.......................X.... ..X..X...X....X..X.......X.X..X....X.......................X.... ..X..X...X....XXXX.........X..X..X..XXXXXXXXXXXXXXXXXXXXXXXX.... ..XXXX....XXXX...XXXXXXXXXXX..X..X.X......................X..XXX .............X...X....X...X...XXXX.X......................X..X.. .............X...X....X...X........X......................X..X.. ..............XXX......XXX........XXXXXXXXXXXXXXXXXXXXXXXX...X.. ..................................XX.........................XXX 得点 最少バイトの送信が勝ちです。
53 code-golf 

30
ユーザー感謝の課題#1:デニス♦
私は、PPCGコミュニティがすべての人にとって、あるいは多分私だけのために楽しい場所になるのを助け、これからも助けてくれるユーザーの一連の挑戦をするという自発的なアイデアを得ました。:P Dennisの名前を1sと0sの配列に変換すると、各子音がで1あり、各母音がである0場合、配列は[1, 0, 1, 1, 0, 1]であり、対称です。したがって、あなたの課題は、このような他の名前が何かを判断することです。 チャレンジ ASCII文字列を指定して、文字以外のすべての文字を削除し、母音と子音の構成が対称かどうかを判断します。y母音ではありません。 プログラムはこのタイプの文字列である必要はありません。 テストケース Dennis -> truthy Martin -> truthy Martin Ender -> truthy Alex -> falsy Alex A. -> truthy Doorknob -> falsy Mego -> falsy 参照実装 このPython 3コードは、テストケースが与えられると正しい出力を提供します。それはばかげていることなくそれを作ることができたのと同じくらい無制限です。 Python 3 s = input() l = [] for c in s: if …

30
六角形にしてください。
今日は、ASCII六角形を作成します。正の整数nを取り、アスタリスクで構成されるサイズnの六角形グリッドを出力するプログラムまたは関数を作成する必要があります。たとえば、サイズ2の六角形は次のようになります。 * * * * * * * サイズ3の六角形は次のようになります。 * * * * * * * * * * * * * * * * * * * あなたは、任意の使用することができ、デフォルトの入力および出力のメソッドをファイルの書き込み/、たとえばSTDIO / STDOUTのために、関数の引数と戻り値や読書を。 入力は常に有効であると仮定することができます。そのため、正の整数でない場合、プログラムは必要な処理を実行できます。ただし、サイズ1の六角形の特殊なケースを処理する必要があります。これはたまたま単一のアスタリスクです。 * 出力が視覚的に同じである限り、先頭と末尾の空白は許可されます。 例: 1: * 2: * * * * * * * 3: * * * * …

30
寒すぎる、温度を上げる
これは私の最初のゴルフコンテストです。 するべきこと 可能な限り短いバイトで、ACリモートコントロールシステムを構築してください。私の部屋は今あまりにも寒く、リモコンがありません。 今、私はあなたが文字通りそれまたは何かを構築することを望まない、ただこれをゴルフする: 温度の緩やかな増分。40度から始まり、正確に72度で終わります。増分時間は、増分ごとに常に500ミリ秒でなければなりません。最後にさらに500ms待つことができます。ただし、停止することをお勧めします。私のリモコンのように、増分自体は毎回2ずつ増加する必要があります。 画面をクリアしないでください。改行が必要です。 何が起こるか 出力例(括弧内のすべてを出力すべきではありません)。 40 (wait 500 millis) 42 (wait 500 millis) 44 (..repeat until 72..) 72 (stop or wait 500ms) 覚えておいてください これは私の最初のゴルフですので、これがゴルフに難しすぎるなら、私は謝罪します。:( 幸運を祈ります、ゴルファー!

19
ハードウェア乱数ジェネレーターの即興
あなたの仕事は、周りにあるハードウェアでハードウェア乱数ジェネレーターを即興することです。 チャレンジ 次のプロパティを持つプログラムを作成します。 0または1(他には何も)を出力しません。 出力は、コンピューターの内部状態だけでなく、物理プロセスに依存します。 後続の実行の出力間に関係はありません(1分間隔)。 出力は現実的な努力では予測できません。 出力される確率は00.2〜0.8です。 かなり高い確率で1分以内に実行されます。 明らかでない場合は、プログラムにこれらのプロパティがある理由を説明する必要があります。 明確化と制限 以下は、人気コンテストの非常に多くの制限のように思えるかもしれませんが、最終的には、プログラムが質問の精神の範囲内にとどまることを保証し、ある程度機能し、完全に過剰であるために人気があるソリューションを回避することがすべてですむしろ退屈。 システム時間は物理プロセスとしてカウントされません。 8インチfloopy-diskドライブからUSBロケットランチャー、ヘッドフォンまで、消費者グレードのハードウェアを使用できます(乱数生成を目的としない場合)。ハードウェアは大量生産され、価格が1000ドル未満の場合、消費者グレードであるため、電波望遠鏡、CERN、MRI、または自作の粒子検出器は使用できません。 電源を入れる(電源スイッチがある場合)、適切にインストールして機能するなど、ハードウェアの状態とアライメントに関して最も基本的な仮定のみを行うことができます。たとえば、CDドライブは一般にディスクを読み取ることができ、詰まることはないと想定できますが、CDドライブが開いている、閉じている、またはディスクが入っているとは想定できません。別の例では、特別な相互作用を可能にするために2つのハードウェアを揃えることはできませんが、同じ部屋にあると想定できます。 ハードウェアは、破損しない限り、どのような状態のままでもかまいません。 ハードウェアが自然環境にあることを前提とする必要がありますが、それ以上ではありません。たとえば、ハードウェアが液体ヘリウムのタンク内、非常に防音および耐光性の部屋内、または空間内に配置されていないと仮定できます。ただし、根本的な努力によってのみ回避できるものを除き、サウンドおよび光源が存在すると想定することはできません。 プログラムは、選択した非難解なオペレーティングシステムを備えた標準的なデスクトップコンピューターで実行する必要があります。乱数生成用に特別に設計されていないソフトウェアを使用できます。 インターネットアクセスを想定することはできません。 人間が存在することも存在しないことも想定できませんが、例えば、ファンを手動で停止したり、マイクをできるだけ頻繁にオフにする以外のプログラムを実行するなどして、プログラムに意図的に干渉する人はいないと想定できます。 ソフトウェア設定に関して最も基本的な仮定のみを行うことができます。たとえば、ドライバーをインストールしてアクティブ化することを想定できますが、サウンドをミュートするための準備が必要です。 ソフトウェア設定は任意の状態のままにしておくことができます。 ボーナス 特に短い解決策に対して特別な賞金が授与されました。これは、指示の数によるものであり、文字によるものではありませんでした。勝者は(私の基準に従って結ばれました): フランキーによるこの答え。 Tejas Kaleによるこの答え。 私は1つの答えしか与えられず、Tejas Kaleの答えはたくさん勝ちました。

18
すべての自然数を加算して-1/12を生成するプログラム[終了]
ご存知かもしれませんが、すべての自然数を加算すると、... -1/12 (Wikipediaを参照)という数学的な楽しみがあります。 もちろん、これは非常に奇妙な結果であり、1つの数値に続けて別の数値を追加することでは得られませんが、いくつかの特別な数学的なトリックです。 しかし、あなたの仕事は、すべての自然数を追加しようとするように見えるプログラムを書くことですが、それを実行すると、-1 / 12を返します。 擬似コードでは、次のようになります。 result = 0; counter = 1; while(true) { result += counter; counter ++; } println(result); 好きな方法でこれを行うことができます。バッファオーバーフローを利用したり、変数が大きくなりすぎたときにエラーをスローしたり、コードに沿って重要なことを巧妙に隠したりできます。唯一の条件は、コードが最初にすべての自然数を追加しようとしているかのように見え、実行時に-1/12を返すことです(任意の形式で、10進数、バイナリ、テキスト、ASCIIアートなど)。 もちろん、上記のコードよりもはるかに多くのコードを含めることができますが、読者を欺くには十分に明確でなければなりません。 これは人気コンテストです-最も賢いアイデアに投票してください!

9
シンプルな2048ゲームクローンを作成する
2048は非常に楽しくて中毒性のあるゲームで、目標は2048のタイルを作成することです。 ゲームの簡単な説明は次のとおりです。 矢印キーを押すと、ステージ内のすべてのブロックがその方向にスライドします。たとえばx、ブロックを表す場合、この場合は上矢印を押しました。 ...x .x.. ..x. xx.. するとボードは xxxx .x.. .... .... さらに、ブロックには、から始まる番号が付けられ2ます。同じ番号のブロックのうち2つを一緒に移動すると、次の番号にマージされます。たとえば、このボードで「上」を押すと: .2.. ..22 .2.. .... これを作成します: .422 .... .... .... そして、「右」を押すとになり..44、したがって再び右を押すと「8」ブロックが作成されます。 ターンごとに、新しい「2」ブロックがランダムなオープンスクエアに作成されます。(実際には常に「2」ではありませんが、簡単にするためにそれを維持しましょう。)可能な動きが残っていない場合(つまり、ボードがいっぱいで何もマージできない場合)、ゲームは失われ、 2048ブロックが作成され、勝ちます! あなたの課題は、このゲームをゴルフで再現することです! このボードで「右」を押すなどのエッジケースの場合: .... .222 .... .... 押した矢印キーの端に最も近いタイルを結合する必要があります。たとえば..24、2番目と3番目の「2」が右端に最も近いため、これはになります。 プレーヤーが無効な動き(のようなボードで「上」など)を押した場合、2.2. / .... / .... / ....その動きを無視する必要があります。 移動は、クリック、矢印キーなど、あらゆる方法で受け入れることができますULRD。 タイルはすべて同じ形状である必要があります。「1024」タイルは「2」タイルと同じサイズでなければなりません。 タイルは何らかの方法で分離する必要があります。たとえば|1024| 2|1024|1024|、行の有効な例です(タイルが正方形であると仮定)、そうで1024 210241024はありません。 プレイヤーが2048タイルを作成する場合は「勝ちます」、有効な動きが残っていない場合は「失う」を出力する必要があります。 これはcode-golfなので、バイト単位の最短コードが勝ちます!

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