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

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

30
10進表現が2進数のように見える、指定された数の倍数を見つける
私が遭遇している問題に興味深いと思われるコードレビューサイトで。OPは間違っていると思いますが、確信が持てません...それでは彼のために解決しましょう!(関数/手順ではなくプログラムを書く) 入力(stdinまたは類似): x10進表記の整数。1より大きく2 ^ 31未満です。 出力(stdoutまたは類似): y10進表記の整数。x * y10進表記の製品には、数字0と1のみが含まれている必要があります。0より大きい最小の数字でなければなりません。 注:出力は制限されません-最小値yが約10 ^ 100の場合、プログラムは100桁すべてを出力する必要があります(2 ^ 64などの合理的な制限があるかどうかはわかりませんy-それを解決しませんでした) )。 プログラムは、すべてのx範囲で妥当な時間(1秒?1時間?-そのようなもの)で終了するはずです。 ボーナス: あなたのプログラムは、(RAMを除く)入力の大きさに制限があり、そしてにより多項式の複雑さ、あなたのプログラムの乗算バイト数を持っていない場合は0.8ダウンとラウンド。 例:入力2; 出力5、2 * 5 = 10であるため 例:入力21; 48121 * 481 = 10101であるため、出力 免責事項:私はコードレビューサイトの質問に対して責任を負いません。矛盾がある場合は、上記の説明のみを適切な仕様と見なす必要があります。 OEIS A079339
34 code-golf  number 

1
マインスイーパソルバー
マインスイーパフィールドは既に生成されていますが、PCGが爆発する前に、生成された地雷を掃く必要があります! あなたの仕事は、「Working Minesweeper」の承認されたソリューションのわずかに修正されたバージョンと互換性のあるマインスイーパソルバーを作成することです(アクションはスペースで区切られ、より大きなフィールドを可能にします)。 入力:マインスイーパフィールド、スペースで区切られたフィールド。最初の行は、鉱山の総数を示しています。 x:そのまま !:フラグ 桁:そのフィールドの周囲の地雷の数 例: 10 0 0 1 x x x x x 0 0 2 x x x x x 0 0 2 ! x x x x 0 0 1 2 x x x x 0 0 0 1 x x x x 1 …

30
入力の各単語の最初の文字を大文字にする
これは比較的簡単な方法ですが、きっと気に入っていただけると思います。 Codegolfは、文の形式で入力を取得し、各単語の最初の文字を大文字にして出力を提供するプログラムです。 ルール: 提出は、関数の形式ではない場合があります。だからいいえ: function x(y){z=some_kind_of_magic(y);return z;} 最終的な答えとして...コードは、入力を受け取り、出力を提供することを示す必要があります。 コードは、入力に含まれる他の大文字を保持する必要があります。そう eCommerce and eBusiness are cool, don't you agree, Richard III? としてレンダリングされます ECommerce And EBusiness Are Cool, Don't You Agree, Richard III? 「簡単、正規表現を使用するだけです!」選択したゴルフ言語でネイティブの正規表現を使用すると、30文字のペナルティが発生し、最終的なコードカウントに適用されます。悪魔のような笑い この場合の「単語」は、スペースで区切られたものです。したがってpalate cleanser、2語ですが、pigeon-toed1語と見なされます。if_you_love_her_then_you_should_put_a_ring_on_it1つの単語と見なされます。単語がアルファベット以外の文字で始まる場合、単語は保持されるため_this、レンダリング後はのままになり_thisます。(このテストケースを指摘してくれたMartin Buttnerに感謝します)。 4b。入力フレーズ内の単語が単一のスペースで区切られる保証はありません。 テストケース(コードのテストに使用してください): 入力: eCommerce rocks. crazyCamelCase stuff. _those pigeon-toed shennanigans. Fiery trailblazing 345 thirty-two Roger. The …

18
配列の展開解除
この課題はMathematica.SEに関する質問に触発されました。 任意の構造のネストされたリスト/配列があるとします(各レベルのリストは必ずしも同じ長さではありません)。簡単にするために、ノードは負でない整数または空の配列であると仮定します。例として [[[1, 3], 2], [1, 4], 12, [[0, [], 0], [5, [7]]]] リストをフラット化してノードの操作を実行する方が便利な場合があります。たとえば、 --> [1, 3, 2, 1, 4, 12, 0, 0, 5, 7] --> [1, 1, 0, 1, 0, 0, 0, 0, 1, 1] しかし、最終的には元の構造を保存したいので、これを元に戻したい --> [[[1, 1], 0], [1, 0], 0, [[0, [], 0], [1, [1]]] あなたの仕事は、その最後のステップを実行することです。 …

5
レーザーはどこに行きますか?
2次元のグリッドを作成し、その上に多数の線セグメントを描画してミラーを表します。次に、理論上のレーザーを配置するポイントと、それが指す方向を定義する角度を選択します。質問は、指定された距離でレーザー光線の経路をたどる場合、どの座標点にいますか? 例: この画像において、Lレーザの位置であり、t(正のX軸から測定される)、それの角度であり、M1、M2、およびM3すべての線分のミラーであり、E後のレーザビーム経路上の点であるD = d1 + d2 + d3 + d4から出発単位L。 ゴール 出力する(バイト単位)最短プログラムを書くE与えL、t、D、及びミラーのリスト。 (http://mothereff.in/byte-counterを使用してバイトをカウントします。) 入力フォーマット 入力は次の形式で標準入力から取得されます。 Lx Ly t D M1x1 M1y1 M1x2 M1y2 M2x1 M2y1 M2x2 M2y2 ... すべての値は、この正規表現に一致する浮動小数点になります[-+]?[0-9]*\.?[0-9]+。 各番号の間には常に1つのスペースがあります。 入力を引用符で囲む必要があります。 t単位は度ですが、必ずしも[0, 360)範囲内ではありません。(代わりにラジアンを使用したい場合は、答えでそう言ってください。) D負の場合があり、レーザーを180度回転させます。D0の場合もあります。 任意の数のミラーが存在する場合があります(ミラーをまったく含まない場合もあります)。 ミラーの順序は重要ではありません。 入力は4の倍数になると想定できます。たとえば、Lx Ly tまたはLx Ly t D M1x1無効であり、テストされません。入力もまったく無効ではありません。 上記のレイアウトは次のように入力できます。 1 1 430 17 4.8 …
34 code-golf 

23
暗号ハッシュゴルフ
このコンテストは終了しました。 警官と強盗のチャレンジの性質により、警官のチャレンジは、関連する強盗のチャレンジへの関心が減少した場合、はるかに簡単になります。したがって、ハッシュ関数を投稿することはできますが、回答は受け入れられず、リーダーボードの一部にもなりません。 この課題は、最短の実装のために検索されたハッシュ関数で衝突耐性、すなわち、同じハッシュを持つ2つの異なるメッセージを見つけるために実行不可能でなければなりません。 警官として、あなたはコードサイズと衝突抵抗の間の最良の妥協点を見つけるハッシュ関数を発明して実装しようとします。あまりにも多くのバイトを使用すると、別の警官があなたを追い出します! 強盗として、あなたは警官の機能をクラックすることで警官の試みを阻止しようとし、それらが不適切であることを証明します。これにより、アルゴリズムを強化するためにより多くのバイトが使用されるようになります! 警官の挑戦 仕事 暗号化ハッシュ関数H:I-> Oを選択して実装します。ここで、Iは2 2 30未満のすべての非負整数のセットであり、Oは2 128未満のすべての非負整数のセットです。 Hは、単一の整数、整数または整数の配列の文字列表現、またはSTDINから読み取り10進数または16進数でSTDOUTに出力する完全なプログラムを受け入れて返す実際の関数として実装できます。 得点 Hそれは抵抗するがあることを強盗は挑戦以下に定義します。 強盗が投稿後最初の168時間以内にあなたの投稿を無効にすると、クラックされたと見なされます。 Hの実装はできるだけ短くする必要があります。最短のクラックされていない提出物が警官チャレンジの勝者になります。 追加のルール Hを関数として実装する場合、上で説明したように動作するプログラム内から関数を実行するラッパーを提供してください。 プログラムまたはラッパーに少なくとも3つのテストベクトルを入力してください(入力例と対応する出力)。 Hは、自分で実装する限り、新しい設計(推奨)または既知のアルゴリズムにすることができます。あらゆる種類の組み込みハッシュ関数、圧縮関数、暗号、PRNGなどを使用することは禁じられています。 ハッシュ関数(たとえば、ベース変換)を実装するために一般的に使用されるすべての組み込みは、公正なゲームです。 プログラムまたは関数の出力は確定的でなければなりません。 x86またはx64プラットフォーム上で、またはWebブラウザー内から実行できる無料の(ビールのように)コンパイラー/インタープリターが必要です。 プログラムまたは関数は合理的に効率的で、2 2 19未満のIのメッセージを1秒未満でハッシュする必要があります。 エッジケースの場合、私のマシン(Intel Core i7-3770、16 GiBのRAM)にかかる(壁の)時間は決定的になります。 この課題の性質を考えると、出力を変更するかどうかにかかわらず、回答のコードを何らかの方法で変更することは禁止されています。 提出物がクラックされている場合(または、クラックされていない場合でも)、追加の回答を投稿できます。 回答が無効な場合(たとえば、I / O仕様に準拠していない場合)、削除してください。 例 Python 2.7、22バイト def H(M): return M%17 ラッパー print H(int(input())) 強盗チャレンジ 仕事 に次のように掲載することにより提出警官のいずれかをクラックスレッド強盗:二つのメッセージMとNでIようにH(M)= H(N)およびM≠N …

15
町のゲーム
前書き ゲームはさまざまな町のある小さな世界で行われます。町の支配者はお互いを嫌い、世界を支配したいと考えています。人々は、戦士とローボーンの2つのグループに分かれています。ただし、ローボーンは戦士に育てることができます。あなたはこれらの3つの町の支配者です。 ゲームプレイ ゲームが始まると、3つの町を支配します。各町には100人がいます。それらを騎士とローボーンに分割する必要があります。 その後、実際のゲームが始まります。これはターンベースです。ターンは次のようになります:"Produce" knights=> execute command of first town=> execute command of next town(すべての町で繰り返し)=> try a rebellion。 ターンごとに、あなたのプログラムはあなたに属する町ごとに呼び出されます。町を攻撃するか、町を支援するか、単に待つことができます。これらのアクションは、同時にではなく、順番に実行されます。 3ターンごとに、2人のローボーン(1人のローボーン=> 11騎士)につき1人の騎士を獲得します。ローボーンの量は変わりません。 町内の騎士には、1.2の防御ボーナスがあります。攻撃を受けると、騎士にこの数が掛けられます(例えば、持っている78 knights、93 knights攻撃中に持っている)。攻撃の後、余分な騎士は除去されます(82 knights生き残った場合、まだあります78 knights)。 攻撃では、各騎士は敵が死ぬ前に敵を殺します。例:30 knights攻撃100 knights(防御ボーナスなし)=> 70人の騎士が生き残ります。 あなたはその中のすべての騎士を殺すことによって町をキャプチャすることができます。すべてのローボーンはあなたに今所属しており、生き残った騎士は町に駐留しています。次のラウンドでは、他のすべての町に加えて、この町を支配できます。 町が占領された後、2ターンの間、防御ボーナスはありません(ゲートが壊れているため)。3番目のターンで、ゲートが修復されます。 ローボーンが反抗するのを防ぐには、少なくともローボーンの半分の騎士が必要です(町の23人のローボーンには、同じ町に少なくとも12人のナイトが必要です)。そうしないと、ローボーンはすべての騎士を殺し、町は「中立」になります(リーダーがなく、PlayerIdで示されます-1)。 中立の町は騎士を「生産」しますが、他の町を攻撃したり支援したりしません。 構文 コントローラはコマンド引数を介して入力を提供し、プログラムは標準出力を介して出力する必要があります。 出力(準備) ゲームを開始する前に、コントローラーは引数なしで送信を呼び出します。つまり、各町の100人をナイトとローボーンに分配する必要があります。KnightCount KnightCount KnightCountたとえば、出力する必要があります95 80 95。 入力 Round;YourPlayerId;YourTownId;PlayerId_TownId_knights_lowborns;PlayerId_TownId_knights_lowborns;... 最初のラウンドでは、これはのようなものになります 1;2;2;0_0_100_0;1_1_50_50;2_2_80_20。ここでは、それが最初のラウンドであることがわかります。あなたは町2のプレイヤー2です。80人の騎士と20人のローボーンがいます。 ゲームの後半では、のようなものになり20;2;1;0_0_100_0;2_1_30_50;2_2_40_20ます。あなたはまだプレイヤー2(これは決して変わらない)ですが、タウン1(今あなたがコントロールしている)を占領しました。 出力 A …

12
コードゴルフオブデス[終了]
BSODまたはカーネルパニックを引き起こすコードを記述してください! ルール: Windowsでは、BugCheck(死のブルースクリーン)を発生させる必要があり、Linux(または他の* nixシステム)では、カーネルパニックを発生させる必要があります。 システムに損傷を与えてはなりません(つまり、再起動時に機能するはずです) カーネルモードドライバーが許可されます。 OSとバージョン情報を記載します。 クラッシュの原因を説明します。 クラッシュを引き起こすように特別に設計されたツールを使用することは規則に反しませんが、そうすることはあまり創造的ではありません! 最高の賛成票が勝ちます。

4
フリッピンスクエア
行または列のみを反転(中心点を中心に反転)することにより、数字の正方形を混乱させるプログラムまたは関数を作成します。 入力 入力は、次のような9行の文字列の形式の9x9の数字グリッドです。 986553229 264564891 759176443 643982153 567891234 526917874 685328912 891732537 117644378 この入力形式は交渉不可能です。入力形式で「創造的」なソリューションは無効と見なされます。 出力 出力は、指定された順序で入力に適用されたときにターゲットグリッドを再作成する必要があるフリップ移動のリストである必要があります。 出力例(前の入力例の解決策ではありません): 28IF5D3EAB9G3 この出力形式も交渉不可です。出力には改行やスペースがなく、文字1- 9とA- のみがI必要です(必要に応じて、大文字の代わりに小文字を使用できます)。 ターゲットグリッド(再作成する必要がある状態)は次のとおりです。 123456789 234567891 345678912 456789123 567891234 678912345 789123456 891234567 912345678 数字1- 9行を反転するための指示として使用する必要があり、文字A- Iは列に使用する必要があります。これは、グリッドが復元された状態で以下に示されています。 ABCDEFGHI ||||||||| vvvvvvvvv 1 -> 123456789 2 -> 234567891 3 -> 345678912 4 -> 456789123 5 -> …
34 code-golf 

10
あなたはどれくらい高く行くことができますか?(コーディング+アルゴリズムの課題)
Pythonが実際にどれくらい遅いかについて、誰もが(しばしば驚くべき)低レベルコーディングの専門知識を開発しました。(またはあなたの言語はどれくらい速いですか?)およびPythonは本当に遅い(パートII)?アルゴリズムを改善する能力を伸ばす挑戦の時です。 次のコードは、長さ9のリストを計算します。iリスト内の位置は、とのi間の内積を計算するときに少なくとも連続したゼロが見つかった回数をカウントします。まさにこれを行うために、それはすべての可能なリストの上に反復した長さのとリストの長さ。FSFnSn+m-1 #!/usr/bin/python import itertools import operator n=8 m=n+1 leadingzerocounts = [0]*m for S in itertools.product([-1,1], repeat = n+m-1): for F in itertools.product([-1,1], repeat = n): i = 0 while (i<m and sum(map(operator.mul, F, S[i:i+n])) == 0): leadingzerocounts[i] +=1 i+=1 print leadingzerocounts 出力は [4587520、1254400、347648、95488、27264、9536、4512、2128、1064] このコードを使用してnを10,12,14,16,18,20に増やすと、非常に急速に非常に遅くなります。 ルール 課題は、できるだけ大きなnに対して正しい出力を提供することです。nの偶数値のみが関連します。 同点の場合、勝者は私のマシンで最大のnの最速コードになります。 10分以上かかるコードをテストしない権利を留保します。 正しい出力が得られる限り、好きな方法でアルゴリズムを変更できます。実際、勝つためにある程度の進歩を遂げるには、アルゴリズムを変更する必要があります。 …

22
ハート形を描く
チャレンジ ハート形を描く ... ASCIIアートとして! あなたのアートは私のもののように見える必要はありませんが、ハートの形に見える必要があります。 心の内側には「愛」という言葉が少なくとも20回含まれている必要があります ルール プログラムはコンソールにアートを書き込む必要があります。 最短のコード(バイト単位、任意の言語)が優先されます。 優勝者はバレンタインデーの2月14日に選ばれます

18
Jumblers vs Rebuilders:Cotriding with Tetris Bricks
従来のテトリスでは、7つの異なるテトロミノレンガがあり、それぞれがその形状に似た文字で示されています。 # # # # # ## # # ### ## ## # ## ## ## # ## ## I O L J T Z S いくつかの正の整数WおよびHに対して、ソリッドW×H長方形を作成できるこれらのレンガの配置を検討します。たとえば、2つのI、1 L、1 J、2 T、および1 Sを使用すると、7×4の長方形は作られる: IIIITTT LIIIITJ LTTTSSJ LLTSSJJ 同じブリックは、異なる7×4パターンに再配置できます(移動および回転はできますが、反転はできません)。 IJJTLLI IJTTTLI IJSSTLI ISSTTTI ここで、最初の配置の代わりに長方形のコードブロックを使用することを検討してください。たとえばTetris、stdoutに出力されるPython 3のこの7×4ビット: p=print x='Tet' y='ris' p(x+y)# 最初のテトリスの配置によれば、その7つの「レンガ」は... x ' int …

30
ROT-13変換標準入力
課題:任意の長さの入力を読み取り、入力のROT13を生成する。AZ以外のすべての文字をそのまま出力にコピーし、可能であれば大文字と小文字を区別する必要があります。 標準ストリームを読み書きできる言語はどれも公平なゲームです。

17
Flood Paint AIを作成する
Flood Paintのゲームでは、ゲームの目標は、ボード全体をできるだけ少ないターンで同じ色にすることです。 ゲームは次のようなボードから始まります。 3 3 5 4 1 3 4 1 5 5 1 3 4 1 1 5 2 1 6 5 2 3 4 3 3 4 3 4 4 4 5 5 5 4 1 4 6 2 5 3[3]1 1 6 6 5 5 1 2 …

30
この数字は悪ですか?
前書き 数論では、そのバイナリ表現に1の偶数がある場合、数は悪と見なされます。今日の課題では、特定の数が悪かどうかを特定します。 チャレンジ あなたの仕事は、その数字が悪かどうかに関係なく、入力および出力として単一の非負整数を受け入れる(または返す)完全なプログラムまたは関数を書くことです。 数値が悪ければ真理値を出力し、数値が悪でなければ偽値を出力できます。 受け入れ可能な形式で入力および出力できます。 標準の抜け穴は許可されていません。 OEISシーケンスA001969は、すべての悪の番号を含むシーケンスです。 ここでは最初の10000の悪番号のリストは、参考のために、である(そしてより多くのテストケース!) この質問はcode-golfなので、短いほど良いです。 ゴルフ言語の極端に短い答えに惑わされないでください。好きな言語で送信することをお勧めします。 以下にテストケースを示します。 3 => True 11 => False 777 => True 43 => True 55 => False 666 => False リーダーボード ページの下部には、この質問のリーダーボードを含むスタックスニペットがあります。(ありがとう、@ MartinEnder) 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 # Language Name, N bytes N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: # Ruby, <s>104</s> <s>101</s> 96 bytes ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。 # Perl, 43 …

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