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

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

5
数字削除後もまだ素数である最大素数を見つける
時が経つにつれて/math/33094/deleting-any-digit-yields-a-prime-is-there-a-name-for-this、次の質問を尋ねています。数字のいずれかを削除した後に素数のままである素数はいくつありますか?例えば719、あなたが得るような素数71で19あり、そして79。この質問は未解決ですが、コーディングの難題となると思いました。 仕事。 数字のいずれかを削除した後でも素数のままであることがわかる最大の素数を指定します。それを見つけるコードも提供する必要があります。 スコア。与える素数の値。 自由であれば、任意のプログラミング言語とライブラリを使用できます。 物事を始めるため99444901133に、リンクされたページで与えられる最大のものです。 制限時間。回答で与えられたよりも大きい最初の正解の1週間後に与えられた最大の正解を受け入れ99444901133ます。 これまでのスコア。 Python(primo) 4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111 J(randomra)(この回答は、2013年2月21日に1週間のタイマーを開始しました。) 222223333333

3
ダンジョン建設セット
子供の頃、私はIntellivisionゲームAdvanced Dungeons and Dragons:Treasure of Tarminをプレイしました。3Dグラフィックスにより、衝撃的なリアリズムを備えた、一人称視点の視点が得られます。 しかし、その後、C-64を手に入れました。そして、画面の周りにカーソルを移動し、Ctrlキーと数字で色を設定し、好きな場所に記号を配置することで、40x25の文字グリッドに描画することができました(なぜそうさせないのbashですか?)。文字セットには、三角形のコンポーネントとソリッドブロックのコンポーネントがありました。だから私は、その媒体を介してグリッドに自分の視点のレンダリングを生成する方法を推論することができました。 今週、「ダンジョンコンストラクションセット」について、スパイラルバインドされたノート用紙で、約3年前の仕様を見つけました。 (更新:注意深く読んでいる人は、これが傾斜部分で完全には結びつかないことに気付くでしょう。修正された数値を以下に示します。) Treasure of Tarminはグリッド上でプレイされましたが、壁はグリッドの正方形の端にのみ存在していました。バイトが何であるかを学んだ後、バイトでマップを作成すると、マップ上の各正方形がそのエッジごとに4つの可能な状態を持つことができることに気付きました。 遮るものがない 壁 ドア 他に何か? (昨夜まで)私はそれを書くことはできませんでした。他の人が試すのは楽しいかもしれないと思った。 したがって、あなたのタスクは、私の(修正された!!)仕様を実装する文字モードベースの迷路レンダラーを実装することですが、2013年のテクノロジーを使用します。 入力 仕様ではドアのレンダリングを定義していないため、壁と壁以外のオプションのみを想定します。簡単にするために、入力は次のような文字列の行で構成されるマップです。 WN.. .N.. .N.. .N.. .N.E W... .... .... ..S. ...E W... .N.E W... .N.. ...E W... .... .... .... ...E W.S. ..S. ..S. ..S. ..SE それは5x5のマップになります。左上隅(1,1)にはWestおよびNorthの壁セットがあります。右下隅(5,5)には、S外側とE外側の壁が設定されています。 これは、マップナビゲーションがないとかなり面白くありません。したがって、少なくとも、プレーヤーを北向きの(1,1)に置き、提供します。 [F]orward, [B]ackward, turn …

29
番号を並べ替えます。ソルタ
配列を使用せずに数字の数字を並べ替えるという不運に触発されましたが、SOの質問よりも優れたコードゴルフだと思いました。 正の整数を指定して、その整数の桁をソートします。 最低スコアが勝ちます! 0ポイントから始めます。 1文字につき1ポイントを追加します。 使用する配列ごとに20ポイントを追加します。 コードの複数文字列ごとに10ポイントを追加します。(他の操作を行わずに整数に変換される限り、初期入力を除きます。) プログラムが処理できる最大桁数が(マシンではなく)プログラムによって制限されている場合は、32ポイントを追加します。 コードで別の引数を指定して並べ替えの方向を変更できる場合は、10ポ​​イントを減算します(たとえば、降順の並べ替えの場合は0、昇順の場合は1)。 言語はすべて異なりますが、アイデアは反復可能な数字のハッカーを避けることです。 例: 入力:52146729 出力:97654221または12245679 ノート: プログラミング言語が提供する組み込みの並べ替え機能を使用しますが、その並べ替え機能に文字列または配列が含まれる場合は、ペナルティがかかります! ソリューションは、整数を直接取得する関数として、またはargv、ファイルまたはストリームから引数を取得して整数に変換するプログラムとして作成できます。すぐに整数に変換し、それ以上の操作を行わずに元のchar *入力を破棄する限り、ペナルティは適用されません。 このペナルティは、プログラムテキスト内の文字列リテラルだけでなく、文字列または反復可能オブジェクトを間違いなく入力または出力するプログラム機能のすべての部分に適用されます。たとえば、JavaScriptにString.prototype.splitは入力(this)として少なくとも1つの文字列があり、出力として配列があるため、それを使用する場合は+30です。 これらのルールが、初期/最終I / Oではなく、アルゴリズム設計の原則をガイドするようにしました(したがって、注2)。その式がプログラムの最初のエントリポイントである限り、の署名が文字列を返すと言ってint(input())も、ペナルティは適用されるべきではないと思います。プログラムの最終的な出力がある場合は同様に、そして文字列でなければなりません、ペナルティが土壇場の文字列の鋳造作業には適用されません。とは言っても、これはプログラムである必要があるとか、I / Oを出入りさせる必要があるとは、明示的に言ったことはありません。を受け取り、を返す関数は機能し、これらのあいまいさの影響を受けません。inputprint(x)xintint

1
ユニークな数独ファインダー
チャレンジ: 標準入力の数独ボードを使用して、ボードを一意にするために追加される最小数を見つけます。 詳細/ルール: 入力は次のようにフォーマットされます(すべての空白が重要です) 516|827|943 278|394|615 349|615|872 ---+---+--- 98 |4 2|156 465|189|237 12 |5 6|489 ---+---+--- 892|743|561 634|951|728 751|268|394 出力は、行ごとに1つの数値でフォーマットされます(x,y):z。xおよびyは、左上の1から始まり、右下に向かって増加します。zは追加する番号です。 この場合、これらはすべての有効な出力を次のようになります(3,4):3、(3,4):7、(5,4):3、(5,4):7、(3,6):3、(3,6):7、(5,6):3、および(5,6):7、これらのいずれかがボードを解決することができるようになると。 一意/解決された数独ボードが入力された場合、プログラムは改行を含めて何も印刷しません。 プログラムは、どのボードでも1時間以内に実行する必要があります(完全にブランクのボード、または1つのランダムな番号のボードを使用してテストすることをお勧めします...)。 得点: すべての空白を含めて、文字で合計(ゴルフ)コードサイズを取得します ... ボーナス: 1/2コードサイズ:プログラムが単一の感嘆符を出力し、解答が入力されていないボードがあると停止します。 1/2コードサイズ:プログラムが2つの感嘆符を印刷し、内部矛盾(同じ行/列/正方形で同じ2つの数字)が入力されたボードがあると停止する場合。
19 code-golf  game  sudoku 

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秒以上実行しないでください。 任意の言語を使用できます。 最短のソリューションが勝ちます!

5
ランダム迷路を印刷する
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 選択したアルゴリズムを使用してランダム迷路を生成および印刷するプログラムを作成します。迷路は、プログラムの複数の実行で異なる必要があります。高さと幅は、コマンドライン引数として指定されます。使用し|、垂直壁用-水平壁用と+コーナー。迷路は壁に囲まれており、入り口には壁が欠けています。迷路には、#少なくとも1つの入り口から到達可能な宝物が含まれています。 $ python2 random-maze.py 4 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 …

30
mod-or-ビット演算を使用せずに、数値が奇数か偶数かを判断する方法は?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Code Golf Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 mod-or-ビット演算を使用せずに、数値が奇数か偶数かを判断する方法は? この課題は非常に非効率的ですが、創造的なソリューションのために枠を超えて考える能力に課題があります。 編集: 関数を作成してください。また、正規表現は楽しい応答ですが、関数は有効な数値を受け入れる必要があります。 背景:この質問は、私がプログラミングを始めたばかりの頃に由来します。クラス初日の宿題は、「奇数」または「偶数」を出力する簡単なプログラムを書くことでした。私が小学生だったので、それ%を決定するためにどのように使用するかを単に示したクラスのために持っていた本を読みませんでした。私はこれを行う方法を考えようとして部屋で前後に約30分ペースを費やし、講義から、あるプリミティブ型から別の型にキャストされると数値が精度を失い、獲得する可能性があることを思い出しました。したがって、数値を取得し、それを2で割ってから元の数値と等しくなかった場合は、その数値が奇数であることがわかります。 翌日、私たちのインストラクターがプログラムを評価している間、私はit然としました。彼はそれが最も効率的ではないにしても、問題を解決する方法であると考えていました。

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