タグ付けされた質問 「code-golf」

コードゴルフは、ソースコードの最小バイトで特定の問題を解決するための競争です。

1
チェスの終盤:ホワイトトゥメイトインワン
チェスのゲームの現在の状態を表す8x8の文字のグリッドが与えられた場合、プログラムのタスクは、チェックメイトをもたらす白の次の動きを見つけることです(答えは常に1つの動きで合致します)。 入力 入力は、STDIN-8文字の8行で行われます。各文字の意味は次のとおりです。 K/k - king Q/q - queen B/b - bishop N/n - knight R/r - rook P/p - pawn - - empty square 大文字は白い部分を表し、小文字は黒を表します。ボードは、白が下から上に、黒が上から下に向かって再生されるように配置されます。 出力 代数記法でチェックメイトになる白の動き。ピースが取られたときに表記する必要はありません。また、同じ動きをすることができる2つの同一のピース間の曖昧さを解消することを心配する必要もありません。 サンプル入力 例1 入力: ------R- --p-kp-p -----n-- --PPK--- p----P-r B------- -------- -------- 出力: c6 例2 入力: --b-r--r ppq-kp-p -np-pn-B -------- ---N---- --P----P PP---PP- …
19 code-golf  chess 

3
蜂の巣の奇妙な生活
研究者は最近、蜂の巣の無限のフィールドに住む興味深い蜂のコロニーを発見しました。 各セルには蜂を入れることも入れないこともできます。実際、それらの生き物の生活は少し混chaとしているように見えます。コロニーは常に次のパターンで始まると計算できます。 (ビーによって描か エマニュエルBOUTET にウィキメディアコモンズ。このハニカム・アンド・ハチ画像はこのように下でリリースされる CC-BY-SA。 grumbles) その後、ミツバチのライフサイクルはいわゆる世代に分割されます。各世代の古いミツバチは死に、新しいミツバチはhatch化します。そして、それは主に彼らの細胞の隣人に依存します: ミツバチの隣人が2人以下の場合、孤独のために死にます。 ミツバチが3つ以上の隣人を持っている場合、過密のために死にます。 セルが隣接するセルに2つ、3つ、または4つの生きているミツバチを持っている場合、新しいミツバチが次世代でそこにthere化します。 死ぬミツバチは世代の終わりまで死なないので、次世代のミツバチをhatch化させるかもしれない周囲の細胞に影響を与えます。 そのようなコロニーがどのように機能するかがわかったので、何世代でもそれをシミュレートできます。 入力 入力は、標準入力で指定された単一の数値Nであり、改行で終了します。0≤ N ≤150これは、シミュレートする世代数です。 出力 出力は、標準出力では単一の数値であり、オプションで単一の改行が続きます。これは、N 世代後の生きているミツバチの数を表します。 標準エラーの追加出力は無視されます。 サンプル入力 0 5 42 100 サンプル出力 6 44 1029 5296 勝利条件 ゴルフで通例であるように、最短のコードが勝ちます。同点の場合、以前のソリューションが優先されます。 テストケース 同じテストケースを含む2つのテストスクリプトがあります。 バッシュ パワーシェル 呼び出しはどちらの場合でも:<test script> <my program> [arguments]、./test ruby beehive.rbまたは./test.ps1 ./beehive.exe。 151の代わりに22のテストしかないことを知っています(主にソリューションが非常に遅いため)。タスクを解決する代わりに、正確なテストケースを埋め込むことは控えてください。これらのスクリプトは、変更によってプログラムが正しく動作するかどうかをテストするのに便利です。特定のテストケースにコードを適応できるわけではありません。 別のメモ このタスクは、2011〜W24の間に私の大学で開催されたゴルフコンテストの一部でした。出場者のスコアと言語は次のとおりです。 336 – …

3
橋をかけろ:橋を架けろ!
橋をかけろは、島のグループを橋でつなぐという課題があります。ルールは次のとおりです。 橋は、2つの島の間を垂直または水平に走らなければなりません。 ブリッジ同士が交差することはありません。 島のペアは、最大2つの並列ブリッジで接続できます。 各島には、1〜8の数字が含まれています。島に接続されている橋の数は、その島の数と一致する必要があります。 ブリッジは、島を単一の接続グループに接続する必要があります。 あなたの仕事は、橋をかけろパズルを解くプログラムを書くことです。 特定のパズルは解けるものであり、解決策は1つしかないと仮定できます。 プログラムは合理的に効率的でなければなりません。たとえば、以下の25x25パズルを解くには、平均的なPCで10分以上かかることはなく、1ギガバイト以上のメモリを使用しないでください。7x7のような小さなパズルを解くには数秒かかります。 入力: パズルはキャラクターの2Dマップとして与えられ、数字は島1を8表し、スペースは水を表します。必要に応じて、行をすべて同じ長さにするためにスペースが埋め込まれます。 島は、少なくとも1つの正方形の水によって常に水平および垂直に分離されるため、島間に潜在的な橋を配置する余地があります。パズルには常に少なくとも2つの島があります。 プログラムはできれば標準入力からパズルマップを読み取る必要がありますが、プログラミング言語で必要な場合は代替入力方法を指定できます。 出力: 出力は、必要に応じてブリッジで置き換えられたスペースを除いて、入力に似ている必要があります。ブリッジは、ユニコードボックス描画文字─(U + 2500)、│(U + 2502)、═(U + 2550)、および║(U + 2551)を使用して描画し、水平および垂直のシングルおよびダブルブリッジを表す必要があります。 Unicode文字が問題となっている場合は、ASCII文字を使用することができ-、|、=そしてH代わりに。 受賞基準: これはコードゴルフです。最短の正確かつ合理的に効率的なソリューションが勝ちます。 例: パズル(7x7): 2 2 1 1 4 3 3 2 4 3 2 3 1 3 4 2 溶液: 2─2──1 │1──4─3 3──2║ ║ │ …
19 code-golf 

17
カントールセットを印刷する
チャレンジ Nレベルのキャンターセットを作成します。 Cantorターナリセットは、一連のラインセグメントのオープンミドル3分の1を繰り返し削除することによって作成されます。 プログラムは1つのパラメーターN(整数)を受け取り、NレベルのCantorセットを(コンソールまたは同様の方法で)印刷します。印刷には、アンダースコア(_)と空白文字のみを含めることができます。パラメータは正でも負でもかまいません。記号はカンターセットの構築方向を示します。N > 0カンターセットが下向きに構築されN < 0、カンターセットが上向きに構築されている場合。その場合N = 0、プログラムは1行(_)を出力します。 例えば: N = 2 _________ ___ ___ _ _ _ _ N = -2 _ _ _ _ ___ ___ _________ N = 3 ___________________________ _________ _________ ___ ___ ___ ___ _ _ _ _ _ _ _ _ N …

19
低ハミング重量でハミング重量を計算する
文字列のハミングの重みを計算するプログラムを作成します。勝者は、最低のハミング重量を持つプログラムです。 ルール: ASCII文字のハミングの重みは、1バイナリ表現で設定されるビットの総数として定義されます。 入力エンコードが7ビットASCIIであり、言語の標準的な入力メカニズム(stdin、argsなど)を通過すると仮定します。 結果を数値として、標準出力または言語が使用するデフォルト/通常の出力メカニズムに出力します。 言うまでもありませんが、実際のプログラムを有効に実行するには、実際にプログラムを実行できる必要があります。 勝者は、コードのハミング重みが最も低いソリューションです。 申し訳ありませんが、これには空白の解決策はありません!OK、ルールを整理したので、空白でコーディングできます:) 文字ごとの例: char | binary | weight -----+----------+------- a | 01100001 | 3 x | 01111000 | 4 ? | 00111111 | 6 \x00 | 00000000 | 0 \x7F | 01111111 | 7

12
湖を埋める
ASCIIの画像形式の土地の地形を考慮して、湖の行き先を特定し、それらを埋めます。無限の雨量を想定します。 例 入力 # ## # #### # ######### ## ########### ## ############# #### ## ############## ##### ################# ####### ######################### ######################### 出力 # ## #@#### #@@@@######### ##@@########### ##@#############@@@#### ##@##############@@##### #################@####### ######################### ######################### 入力にはスペースと#マークのみが含まれます。各行は同じ長さになります。出力は#、水が溜まるスペースが@マークで満たされた同一パターンでなければなりません。 一番下の入力行は常にすべて#マークになります。土地に穴や張り出しはありません。最短のコードが優先されます。

30
ユニバーサルバイナリ関数のルックアップテーブルを生成する
これは難解なプログラミング言語を発明しようとする私の探求に正接しています。 2進数のテーブル0 .. 15を使用して、インデックス操作を使用してユニバーサルバイナリ関数を実装できます。2つの1ビット入力XおよびYが与えられた場合、16の可能な関数すべてを 4ビットのオペコードでエンコードできます。 X Y F|0 1 2 3 4 5 6 7 8 9 A B C D E F - - - - - - - - - - - - - - - - - - 0 0 0 1 0 1 0 1 0 …

15
最小限のフィボナッチチャレンジ!
チャレンジ このタスクでは、整数N(10 6未満)が与えられ、フィボナッチ数のみを使用してNを合計できる最小の方法を見つけます。このパーティションはZeckendorf表現と呼ばれます。 任意のフィボナッチ数を複数回使用することができ、複数の表現があれば出力します。 たとえば、入力が67の場合、可能な出力の1つはフィボナッチ数1,3,8,55を使用することです。これは合計67を取得するために使用できるフィボナッチ数の最小数でもあります。 入力Nは1行で与えられ、入力はEOFで終了します。 例 形式で与えられる input: output 0: 0 47: 34+13 3788: 2584+987+144+55+13+5 1646: 1597+34+13+2 25347: 17711+6765+610+233+21+5+2 677: 610+55+8+3+1 343: 233+89+21 3434: 2584+610+233+5+2 制約 入力の数は10 6個の値を超えません。 プログラムは、すべての入力に対して5秒以上実行しないでください。 任意の言語を使用できます。 最短のソリューションが勝ちます!

9
ASCIIテキストからPBMビットマップファイルを生成する
PBM(ポータブルビットマップ)形式は、非常に単純なASCII白黒ビットマップ形式です。 文字「J」の例は次のとおりです(ウィキペディアのリンクからコピーアンドペースト): P1 #これは、文字「J」のビットマップの例です 6 10 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 …

10
彼らはどこから呼んでいますか?
国際電話をかける場合、電話番号の前に番号が所在する国を示すコードが付加されます。これらのコードはプレフィックスコードであり、他のコードのプレフィックスではありません。 さて、今日、あなたは電話を逃しました。そして、あなたはその電話がどこから来たのでしょうか。したがって、呼び出し元のコードを検索する必要があります。しかし、プレフィックスコードであるため、どこで終了するのかはよくわからないので、呼び出しコードを残りの番号から分離するプログラムを作成することにします。 入力 入力として、数字で構成される文字列を受け取ります0-9。最初の数桁は、以下にリストされている国の呼び出しコードの1つになります(これは、最初の数字がにならないことを意味します0)。国を呼び出すコードの後、入力の残りの部分には任意の順序でゼロ以上の数字が含まれます- 有効な電話番号であるとは限りません。プログラムは少なくとも15桁を含む入力を処理できる必要があります 出力 プログラムは、番号のプレフィックスである一意の国呼び出しコードを出力する必要があります。有効な出力は次のとおりです。 1 20 211 212 213 216 218 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 …

26
数字の文字列を単語から整数に変換します
先行ゼロを無視して、数字を単語として含む文字列を整数に変換します。 例 "four two"-> 42。 "zero zero zero one"-> 1。 仮定 提出は次のことを想定できます: 入力文字列は、スペースで区切られた数字の単語で構成されます。 すべての単語は有効で(「zero」..「nine」の範囲内)、小文字です。空の入力の動作は未定義です。 入力文字列は、常に範囲内の符号なしの数値を表しint、空の文字列ではありません。 得点 回答はバイト単位でスコアリングされ、バイト数は少ない方が良いです。

2
2つの三角形の交差点
2D平面上の4点を与えA, B, C, D、三角形OABとの交差領域の面積を計算しますOCD。ここOで、は平面の中心であり、座標は(0, 0)です。 (算術演算に関して)一定の時間の複雑さで実行されるアルゴリズムは推奨されますが、強制されません。 ルール 各ポイントは2つの実数として表され、それらのXおよびY座標を示します。 オプションで、プログラミング言語(またはプログラミング言語のライブラリ)に組み込みPoint型または同等の型がある場合、Pointオブジェクトを入力として使用できます。 入力は、以下を含むがこれらに限定されない形式で、4ポイントとして与えられます。 8つの座標のリスト。 4点のリスト。各点は任意の便利な形式で表すことができます。 2点の2つのリスト。 等 ポイントの特定の順序(反時計回りまたは時計回り)を想定することはできません ポイントOが入力として渡されると想定することはできません。言い換えれば、プログラムは外部からの入力を受け取って使用してはなりません。 すべてのポイントが異なると仮定することはできません。言い換えれば、三角形が縮退している可能性があります。そのケースも処理する必要があります(以下のテストケースを参照) 絶対的または相対的な差は、以下のサンプルテストケースの差よりも小さくなければなりません。10-3 受賞基準 これはcode-golfで、バイト単位の最短回答が勝ちです! サンプルテストケース Ax Ay Bx By Cx Cy Dx Dy area 5 1 1 3 -1 0 0 -1 0 5 1 1 3 -1 0 0 0 0 5 1 …

30
クールな無題のシーケンス
f n(k)を、各数値がn回繰り返される自然数[1、∞)の最初のk項の合計として定義しましょう。 k | 0 1 2 3 4 5 6 7 8 9 --------+------------------------------------------------- f_1(k) | 0 1 3 6 10 15 21 28 36 45 deltas | +1 +2 +3 +4 +5 +6 +7 +8 +9 --------+------------------------------------------------- f_2(k) | 0 1 2 4 6 9 12 16 20 …

9
この線はその正方形を通りますか?
以下に示すように、最初の象限(正のx軸、正のy軸、および原点を含む)を1x1グリッドに分割し、各グリッドに左下隅の座標でラベルを付けます。 各グリッドには境界と頂点が含まれていることに注意してください。数学記号を使用すると、(m、n)というラベルの付いたグリッドは正方形を表し{(x,y) | m ≤ x ≤ m+1, n ≤ y ≤ n+1}ます。 形で直線所定のax+by+c=0整数としa、b、およびc、と表されるグリッド(m,n)線は、グリッド、すなわち所与のグリッド内の任意の点がライン上にあるかどうかを通過するかどうかを出力。 a b c m n output 1 1 0 0 0 true 1 1 0 1 1 false 1 1 0 0 2 false 1 1 -3 0 1 true 1 1 -3 0 0 false …

30
一般的な先行スペースを削除する
Pythonでコーディングする場合、関数内に複数行の文字列が必要になることがあります。たとえば、 def f(): s = """\ Line 1 Line 2 Line 3""" (バックスラッシュは、先頭の改行を削除することです) sただし、実際に印刷しようとすると、 Line 1 Line 2 Line 3 それは私たちが望むものではありません!先頭の空白が多すぎます! チャレンジ 英数字、スペース、および改行のみで構成される複数行の文字列が指定されている場合、各行の先頭からすべての一般的なスペースを削除します。各行には、少なくとも1つの非スペース文字が含まれることが保証されており、末尾のスペースはありません。出力には、出力全体または個々の行の前後に関係なく、余分な空白がない場合があります(1つのオプションの末尾の改行を除く)。 入力はSTDINまたは関数の引数を介して行われ、出力はSTDOUTまたは関数の戻り値を介して行われます。複数行の文字列を字下げしたり、Pythonのようなこの正確なタスクを実行するように設計された組み込み関数を使用することはできませんtextwrap.dedent。 これはcode-golfであるため、最小バイト数のソリューションが優先されます。標準の抜け穴が適用されます。 テストケース "a" -> "a" " abc" -> "abc" " abc\n def\n ghi" -> " abc\ndef\n ghi" " a\n b\n c" -> "a\nb\nc" " a\n b\n …

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