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

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

1
多項式の実根を見つける
多項式と境界が与えられたときに、その多項式のすべての実根を、境界を超えない絶対誤差まで見つける自己完結型プログラムを作成します。 制約 Mathematicaとおそらく他のいくつかの言語には1シンボルのソリューションがあり、それはつまらないことを知っているので、基本的な操作(加算、減算、乗算、除算)に固執する必要があります。 入力および出力形式には一定の柔軟性があります。任意の妥当な形式で、stdinまたはコマンドライン引数を介して入力を受け取ることができます。浮動小数点を許可するか、有理数の表現を使用する必要がある場合があります。バウンドまたはバウンドの逆数を取ることができ、浮動小数点を使用している場合は、バウンドが2 ulp未満ではないと想定できます。多項式は、単項係数のリストとして表現する必要がありますが、ビッグエンディアンまたはリトルエンディアンの可能性があります。 プログラムが常に機能する理由を正当化できる必要があります(モジュロ数値の問題)。ただし、完全な証明をインラインで提供する必要はありません。 プログラムは、根が繰り返される多項式を処理する必要があります。 例 x^2 - 2 = 0 (error bound 0.01) 入力は例えば -2 0 1 0.01 100 1 0 -2 1/100 ; x^2-2 出力は例えば -1.41 1.42 だがしかし -1.40 1.40 約0.014の絶対誤差があるため... テストケース シンプル: x^2 - 2 = 0 (error bound 0.01) x^4 + 0.81 x^2 - …

5
キングオブザヒル:Speed Clue AI
スピードの手がかり Cluedo / Clueは、説得力のある控除ゲームプレイコンポーネントを備えたクラシックなボードゲームです。Speed Clueは、カードのみを使用してこのコンポーネントを強調する3〜6プレーヤーのバリエーションです。その結果、標準のCluedoとSpeed Clueの唯一の違いは、サイコロの出目や他のプレイヤーの提案に翻弄されて特定の部屋に到着するのを待つのではなく、ゲーム内にいる各プレイヤーが自分のターンで好きな提案をすることができるということです。以前にCluedoをプレイしたことがない場合、または2つのバージョンの明確な違いを確認したい場合は、ここで完全なSpeed Clueルールセットを見つけることができます。 ゴール 2014年5月15日00:00 GMTより前にSpeed ClueをプレイするAIプログラムを作成して送信します。その後、すべての法的エントリを使用してトーナメントを開催します。AIがトーナメントで最も多くのゲームに勝った参加者が挑戦に勝ちます。 AI仕様 サーバーでゲームをプレイするためにTCP / IP接続を介してアプリケーションプロトコルを厳密に使用する限り、使用するテクニックを使用して、選択したほぼすべての言語でAIを作成できます。すべての制限の詳細な説明はここで見つけることができます。 遊び方 コンテストGitHubリポジトリをフォークすることから始めます。entriesStackExchangeユーザー名を使用して命名されたディレクトリの下にディレクトリを追加し、 そのフォルダでコードを開発します。エントリを送信する準備ができたら、リビジョンを使用してプルリクエストを行い、このサイトでエントリを発表するためのこれらの指示に従ってください。 core始めるためにディレクトリにいくつかのコードとJARを提供しました。材料の大まかなガイドについては、私のサイトを参照してください。さらに、他のプレーヤーは、エントリーに加えてヘルパーコードを送信して、起動と実行を支援します。エントリを調査するために時間をかけてください。送信する前に、他のエントリに対して自分のエントリをテストすることを忘れないでください! 結果 Place | User | AI | Result ------+--------------+--------------------+------------------------------------------------------- 1 | gamecoder | SpockAI | 55.75% 2 | Peter Taylor | InferencePlayer | 33.06% 3 | jwg | CluePaddle | 20.19% …

6
ゆるい鳥のクローン:)
誰もが、その愚かな「ゆるい鳥」ゲームが削除されることを恐れています。だから、あなたの仕事はゆるい鳥クローンゲームを作成することです。本当に簡単です。ガイドラインは次のとおりです。 ASCIIアートまたは実際の画像を使用できます クリックまたはキーを押すことで、「鳥」フラップを作成できます。 できるだけ短くするようにしてください。そのため、code-golfタグです。 以下に例を示します。http://www.reddit.com/r/learnprogramming/comments/1xiimx/i_couldnt_sleep_so_i_cloned_your_flappy_bird/ 「Flappy Bird Clone」になるには、ゲームに次のものが必要です。 鳥、または他のキャラクター キーを押すか、クリック/タップすると、「鳥」が少し上に移動します。 クリック/タップなどがない場合、「鳥」は急速に下に移動します パイプまたはその他の障害物は画面上で左に移動し、鳥が動いているように見えるはずです パイプには、鳥が飛ぶための小さな隙間が必要です。 パイプ間のギャップを通過するたびに、スコアが1ずつ増加します。 パイプまたは地面にぶつかると、ゲームが終了し、スコアが表示されます。 本当に「鳥」や「パイプ」である必要はなく、すべてアスキーにすることができます。ゆるい鳥の画面の非常に最小限の例を次に示します。 / ----- [4] ----- \ | || || | | || ¯¯| | || O> | | ¯¯__ | | __ || | | || || | \ ------------- /
24 code-golf  game 

4
ボロノイ図を作成する(ASCIIバリアント)
空白のセルの長方形配列に散在するいくつかの明確な大文字が与えられたとします。配列内の各セルは、それに最も近い文字に属し、最小数の水平および/または垂直ステップで到達可能な文字として定義され、斜めのステップはありません。(セルが2つ以上の最も近い文字から等距離にある場合、それらはアルファベット順で最初の文字に属します。大文字のセルはその文字に属します。)境界-セルは水平または垂直のセルです。自身が属する文字に属さない1つ以上のセルに隣接している。 次の動作を持つプロシージャサブプログラムを作成して、一種のボロノイ図を作成します... 入力:ドット、大文字、改行のみで構成されるASCII文字列。印刷すると、上記のような長方形の配列が表示され、ドットは空白として機能します。 出力:各空白境界セルが属する文字の小文字バージョンで置き換えられた入力文字列の印刷。(サブプログラムが印刷を行います。) 例1 入力: ......B.. ......... ...A..... ......... .......D. ......... .C....... .....E... ......... 出力: ...ab.B.. ....ab.bb ...A.abdd aa...ad.. cca.ad.D. ..caeed.. .C.ce.edd ..ce.E.ee ..ce..... 境界を強調するスケッチ: 例2 入力: ............................U........... ......T................................. ........................................ .....................G.................. ..R.......S..........F.D.E............I. .........................H.............. .....YW.Z............................... ......X................................. ........................................ ........................................ ......MN...........V.................... ......PQ................................ ........................................ .............L...............J.......... ........................................ ........................................ ....C...........K....................... ........................................ ..................................A..... ...........B............................ 出力: ..rt.....ts...sg......gduu..U.....ui.... …

1
コンウェイのハローワールド
多くの場合、全てのプログラマが(そして、「Hello World」のその言語には、いくつかの視線後の任意のプログラミング言語でプログラムを書くことができなければならないこと、言われているクイックソートを少数のより多くの視線の後)。 ライフゲームがチューリング完全さ(それは汎用プログラミング言語としての資格ので)、問題は自明です。 「Hello World!」を作成します ConwayのGame of Lifeのみを使用したアプリケーション!唯一の有効なエントリは、ConwayのGame of Lifeの初期状態です。 「Hello World!」というテキストに類似した認識可能な形状は含まれていません。 「Hello World!」というテキストに似た認識可能な形状が含まれます。妥当なサイクル数内(良好なPCで数分以上実行しないでください-これにより数十億サイクルが可能になり、十分なはずです) 「Hello World!」のあるエリア 初期状態では空のテキストが表示されます!(それ以外の場合、問題はあまりにも簡単です)誰もそれをなんとかしていない場合、この要件を「ほとんど空」に減らすことができます 得点: 受賞者は、最初の有効な提出から約1週間後の投票数に基づきます。 投票のガイドライン: より精巧で美しい出力はもっと価値があるはずです 多くのサイクルにわたって安定している出力は、次のサイクルで認識できないようにフェードアウトする1つ以上の価値があるはずです。 永続的なサイクルにロックされたソリューション、または興味深いパターンから開始するソリューションは、リバースシミュレーションによるランダムな試行錯誤ではなく、状態のインテリジェントな設計を証明するため、最も価値があります。 エントリは、少なくとも1つの注目すべきシミュレーターまたは回答者がリンクするオンラインシミュレーターが読み取り可能な形式である必要があります。(初期状態に設定されたアニメーションまたはシミュレータへの)リンクも受け入れられ、推奨されます。出力が数サイクル以内に表示されない場合、エントリは結果が表示されるサイクルを指定する必要があります。 編集: 生成されるフレーズには多少の許容差があります。「Hello, World!」、「hello, world」、「HELLO WORLD!」などです。

6
最も美しいバイトビート構成を書く
Bytebeatは、出力がaplayまたはにパイプされる単純なCプログラムを作成することで作成できる音楽のスタイルです/dev/dsp。 main(t){for(;;t++)putchar(((t<<1)^((t<<1)+(t>>7)&t>>12))|t>>(4-(1^7&(t>>19)))|t>>7);} このスレッドには、バイトビートサイト、javascript実装、およびデモとサンプル構成に関する情報が豊富にあります。 非常に単純なルール:かなり響きのある構成を作成してください。通常の結果を考慮すると主観的ではありませんが、それは明らかに主観的であるため、ほとんどの賛成票が勝ちます。

3
6移動以内で首謀者を解く
あなたの目標は、6つ以下の動きで首謀者のパズルを解決するプログラムを書くことです。 バックグラウンド 首謀者はボードゲームです。ゲームの目標は、他のプレイヤーが隠している4色のペグの組み合わせ(色と順序)を正確に推測することです。推測が行われると、他のプレーヤーは0〜4個の白または赤のペグで応答します。赤いペグは、色と場所が正しい場所です。白いペグは、残りの部分で色が表されている場所ですが、間違った場所にあります。推測に重複する色がある場合、秘密の対応する色ごとに1つのペグしか付与されません。(つまり、シークレットに1つのブルーが含まれていて、推測に2つのブルーがあり、1つが正しい場所にある場合、1つの赤いペグが与えられます)。6つの異なる色があり、複製を使用できます。 したがって、たとえば、ゲームは次のようになります(ソリューションがRed Green Green Blueであると想定) 1: Blue Purple Black Green - 2 white pegs 2: Green Red Black Blue - 2 white pegs, 1 red peg 3: Green Green Green Blue - 3 red pegs 4: Red Green Green Blue - 4 red pegs ルールはウィキペディアで拡張されています 必要条件 プログラムはstdinから読み取り、stdoutに書き込む必要があります 色の代わりに簡単にするために数字を使用します。推測する組み合わせは、1〜6の4つの数字になります。 …
24 code-golf 

30
3秒後に終了するHello World GUIプログラムを作成します
ルールと太字部分もお読みください。 ウィンドウシステム用のGUIサポートがある限り、任意の言語でプログラムを作成します(テキストコンソールなどは使用できず、GUI /ツールキット/ウィンドウである必要があります)。 GUI準拠のウィンドウが表示され、このテキストが3秒間表示される限り、プログラムは任意の方法(スプラッシュイメージ、メニューバー、ステータスバー、タイトル、ビデオ、メッセージボックス、その他のウィジェットのものなど)でHello Worldを言う必要があります。使用されるコードの最小量(バイト単位)でこれをコーディングできる人がケーキを受け取ります。

8
Wireworldセルラーオートマトンのシミュレーション
Wireworldは、ワイヤを流れる電子に似るように設計されたセルオートマトンです。そのシンプルなメカニズムにより、デジタル回路を構築できます。それはコンピュータ全体の構築さえ許可しました。 あなたの使命は、選択した言語で最短のWireworld実装を作成することです。 グリッド内の各セルには、4つの状態のうち1つがあります。4つの状態は、「ブランク」、「銅」、「電子ヘッド」、または「電子テール」です。 空白のセルは常に空白のセルのままです 電子ヘッドは常に電子テールになります 電子の尾は常に銅になります 銅のセルは、8つの隣接セルのうち1つまたは2つが電子ヘッドである場合に限り、電子ヘッドになります。 このコンペティションは、Shortest Game of Lifeコンペティションと同様のスタイルを持ちますが、いくつかの変更があります。 グリッドは少なくとも40 x 40セルでなければなりません グリッドのエッジは、(トーラスではなく)ラップアラウンドしてはいけません。フィールドの外側のセルを常に「空白」として扱います。 ユーザーが独自の開始構成を入力できる必要があります。 空白の画面を見つめるのは楽しいことではありません。プログラムは、実行中のシミュレーションを視覚的に表示する必要があります。 これはコードゴルフで、最少バイトが勝ちます。

12
Scalaでのゴルフのヒント
Scalaでゴルフをするための一般的なヒントは何ですか?私は、少なくともScalaに特有のゴルフ問題全般のコーディングに適用できるアイデアを探しています(たとえば、「コメントの削除」は答えではありません)。回答ごとに1つのヒントを投稿してください。 (これはPythonの...の恥知らずなコピーです)
24 code-golf  tips 

26
古くから有効
SOに関するこの質問に触発されて、あなたの仕事は、異なる出力を生成する選択した言語の(少なくとも)2つの主要バージョンで有効なプログラムを生成することです。 ルール 複数のメジャーバージョンを持つ任意の言語を使用できます。 この課題のために、バージョン番号の最初の数字が変わる「メジャーバージョン」を提案します。 PHP 4とPHP 5は異なりますが、PHP 5.3とPHP 5.4は違います。 しかし、私はすべての言語のバージョン管理スキームを知らないので、あなたがあなたの主張を十分に主張できるなら、コミュニティはあなたがあなたが「メジャーバージョン」を決定するのに公平であったかどうか決定すると確信しています。 コードは毎回同じフラグと入力でコンパイルおよび実行する必要があります これが適切である場合、言語のバージョンを変更することを除いて エラーは出力としてカウントされず、エラーを生成する回答は失格になります(エラー出力は単に無視されるのではなく) プログラムは、実行に必要なもの以外の入力を受け付けません。 特定のバージョンごとに、出力は常に同じである必要があります 意図は、変更がVM仕様または環境メタデータではなく、言語仕様の変更の結果であるべきだということです。 得点 コードゴルフのタイプの長さのスコアリング、したがって+1各文字/バイト -1出力の長さの各文字の違いに対して。 例:バージョン1出力abcde(5文字)、バージョン2出力123abc(6文字)=-1 その他の規則 標準の例外が適用されます-外部プログラム、Webリクエストなどはありません。 プログラムは終了します(2秒以内) 最低スコアが勝ちます。 「より良い」スコアリング 公平を期すために、元のルールに基づいて勝者をマークします。 私の元のスコアリングは基本的に壊れているので、次のスコアリングシステムで再度スコアリング/再試行してみてください。 コードゴルフのタイプの長さのスコアリング、したがって+1各文字/バイト +1出力の 長さの各文字の違いについて abcdeおよび123456->+1 -1出力の一意の文字の違いごとに(最短出力の長さに制限されます) abcdeおよび123456->-5 12345および123456->-1 12345および123455->0 ゼロ勝に最も近いスコア 2回目のタイブレークの場合は、単純なコードゴルフスコアが勝ちます。

8
ギターのタブを生成しますか?
入力として指定されたコードのギタータブを生成する最短のプログラムを作成します。 あなたの中のギタリストが利点を持たないように、そしてそれを決定論的(そしておそらくコーディングをより簡単にする)にするために、ここに承認された和音の唯一の形式があります: Major chords: E F F# G G# A A# B C C# D D# e 0---1---2---3---4---0---1---2---3---4---5---6--- B 0---1---2---3---4---2---3---4---5---6---7---8--- G 1---2---3---4---5---2---3---4---5---6---7---8--- D 2---3---4---5---6---2---3---4---5---6---7---8--- A 2---3---4---5---6---0---1---2---3---4---5---6--- E 0---1---2---3---4---0---1---2---3---4---5---6--- Minor chords: Em Fm F#m Gm G#m Am A#m Bm Cm C#m Dm D#m e 0---1---2---3---4---0---1---2---3---4---5---6--- B 0---1---2---3---4---1---2---3---4---5---6---7--- G 0---1---2---3---4---2---3---4---5---6---7---8--- D 2---3---4---5---6---2---3---4---5---6---7---8--- …

30
難読化の課題[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Code Golf Stack Exchangeのトピックになるようにします。 閉じた3年前。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 次のいずれかを実行するプログラムを作成します。 「Hello World」のみを表示し、他には何もしません 終了し、他には何もありません(出力なし、エラーなし)。 1行の入力を取得し、整数として解析し、最初の多くの素数を表示します(または、整数として解析できない入力が与えられた場合、または0未満の場合、いいエラーを返します)。 1行の入力が与えられると、銘柄記号を解析し、現在の銘柄値とその変化をオンラインでチェックします。 キャッチ、それはそれが実行する機能が明らかであってはなりません。つまり、コードを見ている人にとって、どの機能を実行するのかは明らかではないはずです。また、1つの機能のみを実行し、実行できる場合があります(選択することはできません)。人はその言語を使用しています。 ボーナス:巧妙な方法で作成すると、1つのコンパイラ/ intrpreterおよびプラットフォームに対して、プログラムは同じ機能、異なるコンパイラ/インタープリタまたはプラットフォームも実行しますが、異なる機能を実行します。このボーナスは、巧妙に行われた場合にのみ収集できます。 ボーナス:プログラムに1つの機能が可能なコードのみが含まれている場合(空のコードには対応できるため、何も保存しないでください)、機能に関係のない単純な変更を行って別の機能を実行することはできません。たとえば、次の場合 obfuscatedBool = 1g8uhad'l8fygrcetdu8y4fd/,.oe87fy4d --Magic if obfuscatedBool: print "Hello World" obfuscatedBoolをTrueまたはFalseに設定して「Hello World」を印刷するか、何もしないようにすることはできません。 INFINITY BONUS:両方のボーナスを同時に実現した場合、あなたは魔法です。 負のボーナス:特定の機能を持つライブラリーを使用して機能を実行します。 投票者は、最も投票数の多いプログラムが勝つため、ボーナスを考慮に入れてください! 注:プログラムが何をするのかを言う場合は、必ずスポイラー構文を使用してください!

3
ニュートンフラクタルを生成する
あなたは皆、関数の根を近似するニュートン法を知っていますよね?このタスクの私の目標は、このアルゴリズムの興味深い側面を紹介することです。 ニュートンのアルゴリズムは、特定の、しかしほとんどすべての複雑な入力値に対してのみ収束します。複素平面上のすべての入力値に対するメソッドの収束を想像すると、通常、次のような美しいフラクタルが得られます。 ウィキメディアコモンズの画像 仕様書 このタスクの目標は、そのようなフラクタルを生成することです。つまり、入力として多項式を取得し、対応するフラクタルを出力として選択した形式の画像として印刷する必要があります。 入力 入力は、空白で区切られた複素数のリストです。これらは<Real part><iImaginary part>、この番号のようにスタイルで書き留められています5.32i3.05。入力番号の小数点以下の桁数は4以下で、1000より小さいと想定できます。最初の数値はゼロであってはなりません。たとえば、これはプログラムへの入力になります。 1-2i7.5 23.0004i-3.8 i12 0 5.1233i0.1 数値は、多項式の係数として解釈され、最高のパワーから始まります。この仕様の残りの部分では、入力多項式はPと呼ばれます。上記の入力は、この多項式に等しくなります。 f(x)= x 5 +(-2 + 7.5 i)x 4 +(23.0004-3.8 i)x 3 + 12 i x 2 + 5.1233 + 0.1 i 入力は、stdin、プログラムに渡された引数、またはプログラムに表示されるプロンプトのいずれかから送られます。入力に先頭または末尾の空白文字が含まれていないと想定できます。 レンダリング 次の方法でフラクタルをレンダリングする必要があります。 Pの根と同じ数の色と発散のための追加の色を選択します 可視面の各数値について、メソッドが収束するかどうか、および収束する場合はどのルートに到達するかを決定します。結果に応じてポイントに色を付けます。 定規などの派手なものを印刷しないでください 方向の多項式の根である点に黒い点を印刷します。各ルートの周囲に最大4ピクセルを印刷できます。 可能であれば、すべてのルートが識別可能であり、広範囲に広がるように、可視プレーンを選択する方法を見つけます。出力フレームを完全に配置する必要はありませんが、許容できない方法でフレームを選択する回答を受け入れることを拒否する権利を留保します。常に同じ座標で、すべてのルートが1つのポイントにあるなど。 出力画像のサイズは1024 * 1024ピクセルにする必要があります。 レンダリング時間は最大10分です 単精度浮動小数点値を使用するだけで十分です 出力 …

22
コードゴルフ:6174-カプレカーの神話上の定数
この質問は、Code Golf Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 なぜ6174という数字がとても面白いのですか?以下のように定義ウィキペディアで 少なくとも2桁の数字を使用して、4桁の数字を入力します。(先行ゼロは許可されます。) 必要に応じて先行ゼロを追加して、2つの4桁の数字を取得するために、数字を昇順および降順で並べます。 大きい数字から小さい数字を引きます。 手順2に戻ります。 Kaprekarのルーチンとして知られる上記のプロセスは、最大7回の反復で常に6174に達します。6174に達すると、プロセスはそれを譲り続けます。 所定の4桁の数字(上記の定義を参照)に対してKaprekarのルーチンを実行するプログラムを作成し、ルーチンの各ステップを印刷します。 ルール: 提出は完全なプログラムでなければなりません。 入力は標準入力から読み取る必要があります。エコーからの配管は問題ありません。 入力は数値形式でなければなりません。 先行ゼロを印刷する必要があります。(以下の例を参照してください。) 最後の行には、必要な反復回数が記載されている必要があります。句読点が必要です。 例: > 2607 7620 - 0267 = 7353 7533 - 3357 = 4176 7641 - 1467 = 6174 Iterations: 3. > 1211 2111 - 1112 = 0999 9990 - 0999 …

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