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

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

30
ショックプローブによる死:それはたくさんのサイコロです
Webcomic Darths&Droidsでは、コミックのベースとなる架空のロールプレイキャンペーンでR2-D2を演じるピートは、かつて主張(警告:リンクされたコミックのネタバレ)、Phanastacoriaのロストオーブが装備されていたと主張するショックプローブ、彼は今やなんと1048576d4損傷の。(GMはこれを確認も否定もしていません。)ほとんどの人が実際にそれほど多くのサイコロを振る忍耐力を持たないことは合理的に明らかであるはずなので、彼のためにそれを行うコンピュータープログラムを書き、合理的な方法で転がされた合計値を出力しますフォーマット。エントリは、プログラムサイズ(最短プログラム、バイトカウント、勝率)、全体および言語ごとの両方でランク付けされ、実行時の関係を壊します。回答は、完全なプログラムまたは関数定義のいずれかです。 言語ごとのスコア パイス Maltysen-8バイト* ジャクベ-10バイト APL アレックスA-10バイト CJam オプティマイザー-11バイト J ɐɔıʇǝɥʇuʎs-12バイト** Clip10 Ypnypn-12バイト** K JohnE-13バイト Ti-84ベーシック SuperJedi224-17バイト* R MickyT-23バイト OCTAVE / MATLAB Oebele-24バイト パリ/ GP チャールズ-25バイト** Wolfram / Mathematica LegionMammal978-27バイト Perl Nutki-29バイト AsciiThenAnsii-34バイト ルビー ヘギン-32バイト** ConfusedMr_C-51バイト** コモドールベーシック マーク-37バイト** PHP イスマエル・ミゲル-38バイト VBA ショーン・チェシャー-40バイト** パワーシェル Nacht-41バイト** Javascript ラルフマーシャル-41バイト edc65-54バイト(すべてのブラウザーで利用できるわけではないES6機能が必要です。) ルア cryptych-51バイト …
20 code-golf  random 

11
制限されたポリグロット
ポリグロットは、複数のプログラミング言語で同時に有効なプログラムです。このようなポリグロットのほとんどは、ある言語の特定の構成要素が別の言語のコメントとして解釈されるように記述されています(たとえば#define、Cでは複数のスクリプト言語でコメントとして解釈されます)。 コメントが含まれていないが、空白文字以外の文字を削除するとすぐに変更される自明でないポリグロットを作成できるかどうかを知りたいので、そのようなプログラムを考え出すように挑戦します。 具体的なルールは次のとおりです。 (出力)。プログラムは、各言語のコンソールで出力を生成する必要があります。つまり、プログラムは何も出力せずに単純に終了することはできません。 (分散)。標準のポリグロット定義を緩和するため、プログラムの出力は言語によって異なる場合があります。 (エラー)。プログラムは、どの言語でもエラー(大まかに定義)を生成してはなりません。ほとんどの言語では、これはコンパイラーやインタープリターからゼロ以外の終了コードを返すものとして定義されています。 (制限)。コードから空白文字以外の文字を1つ削除すると、プログラムはすべての言語で動作を変更します。プログラムは、その言語に対して無効になるか、生成される出力を変更することにより、「変更」される場合があります。 これはコードの挑戦です。勝者は、ほとんどのプログラミング言語で有効なプログラムです。プログラムの長さを短くするために、関係が切断されます。 制限ルールは、いくつかの文字の削除には適用されません。つまり、複数の文字を同時に削除しても、言語の1つが変更されない場合は問題ありません。 空白以外の文字を削除してもWhitespaceプログラムの動作は変わらないため、制限規則は言語の1つとしてWhitespaceを使用できないことを意味することに注意してください。 Python 2およびPython 3の言語で、上記のすべての制限を満たすプログラムの簡単な例を次に示します。 print("Hello World!") の文字を削除するprintと、両方の言語でNameError; がスローされます。括弧または引用符を削除するとがスローされSyntaxError、文字列文字を削除すると両方の言語の出力が変更されます。(これprint("hello", "world")はより微妙ですが、上記の規則の下ではまだ有効なプログラムです)。 Python 2とPython 3は非常に似ているため、この例は少し不自由です。そのため、同じ言語(特にPython 2とPython 3)の異なるバージョンのみを使用する他のソリューションは受け入れません。

5
置換パスを描く
次の図が垂直交差チューブのセットであると想像してください。 1 2 1 2 1 2 3 4 \ / \ / \ / \ / X | | | / \ / \ / \ / \ 2 1 1 2 | X | \ / \ / X X / \ / \ 3 1 4 2 …

1
効率的なエラーのない*エンコード[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Code Golf Stack Exchangeのトピックになるようにします。 閉じた3年前。 使命 よく知られているように、地球上のすべての既知の生物の遺伝物質はDNAにエンコードされています。アデニン、チミン、シトシン、グアニンの4つのヌクレオチドを使用します。(一般にATGCで表されます)。 ゲノム全体を保存したい生物情報学者は、もちろんこれをASCIIとして保存することを望まないでしょう。なぜなら、それぞれの選択肢はたった2ビットで表現できるからです! 仕様 あなたがそれを受け入れることを選択した場合、あなたの使命は、ASCII表現をバイナリ表現に変換して戻すための一対のプログラム、関数、またはメソッドを書くことです。Aas b00、Tas b01、Gas b10、Cas b11(以下「ユニット」)を表します。 さらに、各バイトの上位ビットにはバイト内のユニット数が含まれている必要があり、各バイトはトリプレットを表します。 たとえば、次のように"GATTACCA"なりb11 100001 b11 010011 b10 1100xxます。 ASCIIからバイナリへの入力では、スペース、タブ、改行を無視する必要があります。のセットにない文字は[ \r\n\tATGC]エラーであり、無視されるか、処理を終了します。 バイナリからASCIIへの入力では、上位2ビットが含まb00れるバイトは無視されます。 ASCII出力には空白が含まれる場合があります。ただし、バイナリ入力のサイズの4倍に1バイトを加えた長さであってはならず、改行で終わる必要があります。 バイナリ出力には、任意の数のb00xxxxxx「制御」バイトが含まれる場合があります。ただし、ASCII入力より長くすることはできません。 各変換プログラムは、任意の長さの入力をサポートする必要があります。エンコードまたはデコードをほぼ線形の時間で完了する必要があります。 ひねり 残念ながら、あなたがこのタスクを実行している生物情報学者にとって、彼は何らかの形であなたを不当に扱いました。 おそらく、彼はあなたの妹と一度出かけ、二度と電話をかけなかったのでしょう。おそらく彼はあなたの犬の尻尾を踏みました。詳細は本当に重要ではありません。 重要なのは、投資回収のチャンスがあるということです! 詳細 各変換では小さなエラー率が発生するはずです。処理される1万から100万単位ごとに1エラーのオーダー。 エラーは次のいずれかです。 複製エラー:に"GAT TAC CA"なります"GAT TAA CCA" 削除エラー:に"GAT TAC CA"なります"GAT TAC A" 翻訳エラー:に"GAT TAC CA"なります"GTA …

16
整数が3で割り切れるかどうかを判別
目標は、条件を使用せずに数値が3で割り切れるかどうかを判断することです。入力は、0から255までの符号なし8ビット数になります。 使用のみ許可されています 平等/不平等(==、!=、>、<、>=、<=) 算術演算(+、-、x) 論理演算子(!not、&&and、|| or) ビット演算子(~しない、&及び、|又は、^XOR、 、、<< 算術および論理左右シフト)>>>>> 定数(これらを小さくした方が良いでしょう) 変数の割り当て 0falseの1場合、trueの場合に出力します。 標準のアトミックコードゴルフ規則が適用されます。ご質問がある場合は、コメントに残してください。ここにメソッドの例。トークンは、定数と変数を除く上記のいずれかです。

4
川に石を投げるスパイのペアを構築します
最近、新しくリリースされたPuzzling.SEで、スパイが川に石を投げ入れるという問題がありましたが、実際には非常に困難でした。 2人のスパイは、敵に気付かれずに2つの秘密の番号(スパイごとに1つの番号)を渡す必要があります。彼らは前もってわずか26個の区別できない石を使用してこれを行う方法に同意しました。 彼らは26の石の山がある川で会います。最初のスパイから始めて、彼らは交互に石のグループを川に投げます:最初のスパイはいくつかの石を投げ、次に2番目のもの、そして最初のものを再び投げます... すべての石がなくなるまで、各スパイは自分のターンに少なくとも1つの石を投げなければなりません。 彼らはすべての投球を観察し、石がなくなると発散します。彼らは常に沈黙を保ち、各ターンに投げられる石の数を除いて情報は交換されません。 番号が1からMまでの場合、どうすれば番号を正常に交換できますか? あなたの仕事はプログラムのペアを構築することです、spy1そしてspy2可能な限り最高のために、この問題を解決することができ、M。 あなたのプログラムはそれぞれ、入力として1選択さMれた番号を受け取ります。次に、spy1川に投げる石の数を表す数値を出力します。これは、入力されるspy2数値も出力しspy1、数値出力が合計されるまで続き26ます。スローが終了すると、各プログラムは、他のプログラムが持っていると信じている番号を出力します。これは、他のプログラムに実際に入力された番号と一致する必要があります。 プログラムは(i, j)、両方のiおよびjから1に変化する可能性のあるすべての可能な番号のペアに対して機能する必要がありますM。 最大の規模で機能するプログラムがM勝者となり、最初の回答が同点になります。さらに、私は、機能することが証明された最初のソリューションに対して+100の評価賞金を、機能することが証明さM >= 2286れた最初のソリューションに対して+300を授与しM >= 2535ます。

1
数字によるジャグリング
あなたの仕事は、与えられたテンプレートを完成させることにより、有効なジャグリングパターンを生成することです。しかし、最初に、おそらくそのようなパターンがどのように示されるかを知る必要があります。 Siteswapの概要 Siteswapは、ジャグリングパターンの確立された表記法です。パターンをビートに分割することで機能します。打つたびに、ボールを投げるときにあなたの左手と右手が交互になります。各スロー(つまり、各ビート)は、そのボールが次にスローされるタイミングを示す数字で示されます-これは、スローの高さに直接対応します。 いくつかの例を見てみましょう。これらすべてのアニメーションはこちらでご覧ください。 3ボールカスケード 最も単純な3ボールパターン。各ボールは3拍ごとに投げられます(交互の手)。これは次のようにビートを書き出します(ASCIIラインは、同じボールが投げられる2つのビートを接続します)。 Beat 1 2 3 4 5 6 7 8 9 Hand L R L R L R L R L Siteswap 3 3 3 3 3 3 3 3 3 └─┼─┼─┘ │ │ └─┼───┘ │ └─────┘ で投げ、すべてのボールに注意してくださいLビートは、次回にスローされますR。このパターンは、通常と表記されるようにbeat.Siteswapパターンは、暗黙のうちに繰り返し333単にものの、3また十分であろう。 441 次に、siteswap 441を使用したもう少し複雑な例を示します。 Beat 1 2 3 …
20 code-golf 

1
Fillominoソルバー
Fillominoは、グリッドをポリオミノで埋めるパズルです。各ポリオミノは、連続したセルの領域です。グリッド表示は、polyominoが各セルをカバーするサイズを示します。たとえば、pentomino(5)は5、5つの連続したセルのそれぞれに表示されます(以下を参照)。同じサイズの2つのポリオミノは境界線を共有できませんが、斜めに境界線を持つことができます。 各パズルについて、あなたはいくつかの与えられたものから始めて、残りのセルを埋めなければなりません。簡単なパズルの例と解決策: あなたの仕事:四角いパズルを考えて、それを解いて答えを出してください。入力は、stdin、単一のコマンドライン引数、またはテキストファイルを介して行われます。入力は整数として与えられ、それぞれに数字の行がn続きます。空のセルは、period()として与えられます。上記のパズルの例では、次のようになります。nn. 5 3..66 5.4.6 .54.6 .1.6. ..312 出力は、コンソールまたはテキストファイルへnのn数字の行で与えられた解決されたパズルです。 33366 55446 55466 51462 33312 パズルが有効でない場合は、を出力します0。入力の形式が正しくない、または解決策がない場合、パズルは無効になる可能性があります。複数のソリューションがある場合、それらのいずれかまたはすべてを出力できます。 各セルは1桁で表されるため、パズルはすべてポリオミノのサイズ9以下で構成されます。大きなポリオミノなしでは解決できない場合は、無効であると考えてください。 有効な答えは、単にテストケースのソリューションを出力するだけでなく、特定のパズルを解決します。オンラインでもローカルでも、外部リソースはありません。そこならば起こるビルトインフィルオミノ解決機能、あなたがそれを使用することはできませんと言語であることを。要するに、フェアをプレイします。 テストケース: 入力: 9 ..21.3..5 .5...5..5 .1.44.334 ...53.4.. 2.3.3..5. 1.15.5.15 ..45..1.. .24.53.53 ....2.... 出力(可能な解決策): 322133315 355445555 315443334 235531444 233135551 141535515 344553155 324553553 321223133 一部のポリオミノには番号が指定されておらず、複数のポリオミノが複数あることを忘れないでください。与えられた数とポリオミノの数の間には1対1の関係はありません。 スコアは、標準のコードゴルフ、バイト単位のプログラムのサイズです。

1
これらの厄介なドアから私の壁を守る
ドアノブはすばらしいものですが、ドアを開けると、常に周囲の壁がへこんでいます。次のように、部屋のASCIIアートを入力する必要があります。 +---------+--X --X --+-----+ | \ \ |\ | \ | | \ \ | \ | \| | X | \ | X | / | | \ X | / | \ / | / | \ / | +---X --+-------X------+-----+ そして、次のようにドアストップのある部屋を出力します。 +---------+--X --X --+-----+ | \ . …
20 code-golf 

8
ピクセルアート、エピソード2:スーパーマリオブラザーズのマップ1-1を表示する
最後の課題(Pixel-art、episode 1:display Super Mario)は単なるトレーニングでした... 今回は、もう少し作業する必要があります。スーパーマリオブラザーズの最初の世界地図をすべて、敵なしで、マリオなしでNESに表示する必要があります。 プログラムまたは関数は、次の画像のすべてのピクセルを表示するか、それに類似した画像ファイル(BMP、PNG、またはGIF)を生成する必要があります。 プログラムは決してインターネットにアクセスしてはいけません。 必要に応じて、出力をズームできます。また、適切な色であれば、ピクセルはASCII要素またはHTML要素にすることができます。 従う必要があるモデルは次のとおりです。 画像全体:http : //i.stack.imgur.com/2kfVc.png タイルセット(必要な場合):http : //img.ctrlv.in/img/14/10/19/5443f44c7eb78.pngこのタイルセット、サブセット、またはスーパーセットを作成できます。 タイルセットを別の画像ファイルとして使用するか、コード(たとえば、base64)に含めることができます。分離している場合は、バイト単位のサイズをスコアに追加します。 座標付きのマップ:http : //goo.gl/c8xJIxまたはhttp://img.ctrlv.in/img/14/10/19/544373adc9f64.png 色: スカイブルー:#5C94FC 黒:#000000 ピンク:#FCBCB0(ブロックと城用) ブラウン:#C84C0C(ブロックと城用) オレンジ:#FC9838(「?」ブロック用) 薄緑:#80D010(茂み、山、旗竿、反り用) ダークグリーン:#00A800(茂み、山、旗竿、ワープ用) 白:#FCFCFC(雲) 水色:#3CBCFC(雲) 最短回答が勝ちます。 編集:2つのスコアボードがあります。1つはバイトでカウントされるもの、もう1つは文字でカウントされるものです。 がんばろう! PS:プログラムの最適化に役立つ注意事項を以下に示します。 雲、茂み、山には繰り返しパターンがあります(48列ごと) フライングブロックは4行目と8行目にのみ存在します マップの各タイルまたはスプライトは最大4色を使用します(表示方法に応じて青または透明を含む) 茂みは、さまざまなカラーパレットを備えた単なる「雲の頂上」です 同じミニセットの16x16pxピースを使用して、シングル、ダブル、トリプルのブッシュ/クラウドを簡単に形成できます。これは、シングルおよびトリプルマウンテンにも当てはまります

13
ロールダンジョンとドラゴンのサイコロ
ダンジョンとドラゴンをプレイしたいのですが、サイコロがありません!あなたの挑戦は、いくつかのD&Dサイコロを振ることです。 Backus-Naur形式の入力形式の仕様は次のとおりです。 <valid-input> ::= <opt-integer> "d" <integer> <opt-modifier> <opt-integer> ::= | <integer> <opt-modifier> ::= | "+" <integer> <integer> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | <integer> <integer> の前のオプションの整数dは、振るサイコロの数です。少なくともである必要があり、指定さ1れ1ていない場合のデフォルトになります。 直後に必要な整数dは、各ダイが持つ辺の数です。少なくともでなければなりません1。各ダイの側面は、から始まる明確な連続した正の整数1です。 オプションの修飾子はである場合があり+0、+0指定されていない場合はデフォルトになります。 たとえば、入力では2d10+5、1〜10の2つの乱数を生成し、それらを加算して5を加算します。次に、結果を出力します。 次のような無効な入力を、受信した場合は2d、d20+、0d4、2d5+1+2、2+2それはこの形式に適合しない、または何か他には、「出力しなければなりませんInvalid input」。それ以外の場合は、入力に従って重み付けされた単一のランダム整数のみを出力する必要があります。例えば、3d6より多く生産する必要がある10よりもS 4秒。 テストケース Input …
20 code-golf  random 

7
Bejeweled / match 3ゲームに動きがあるかどうかを判断する
バックグラウンド 宝石をちりばめたようなゲームでは、プレイヤーは同じ色の3つを連続して一致させるために、8x8の宝石の隣接する2つの宝石を交換する必要があります。宝石は、水平または垂直に一致させることができます。ゲームプレイは動きがなくなるまで続けられ、その結果、3回連続でゲームが終了します。 仕事 目標は、宝石をちりばめたゲームがまだ終わっていないかどうかを判断するプログラムを書くことです。言い換えれば、少なくとも3つ連続して移動する可能性があるかどうかを確認する必要があります。連続して3つ以上の宝石が存在する可能性がありますが、それでも有効な動きです。 入力 プログラムは、標準入力を介してBejeweledグリッドの8x8表現を受け入れる必要があります。7つの宝石の色はそれぞれ、1〜7の数字で表されます。各行には1行が含まれ、それぞれ8桁で構成される8行が入力されます。例を参照してください。入力は常にこの形式に従い、3行連続して入力されることは決してないと想定できます。 出力 プログラムは、次いで、必要があります(標準出力に)出力yes又はno少なくとも一つの有効な動きは、その行に3つ以上の宝石をもたらす存在するか否かに応じ。プログラムは、yesまたはのいずれかの単一のインスタンス以外を出力してはなりませんno。 ルール プログラムは外部ファイルやリソース、コマンドライン引数を使用したり、特定のファイル名を要求したりしてはいけません。ソースコードのバイト数が最も少ないプログラムが優先されます。 例 入力: 12314131 13224145 54762673 61716653 61341144 23453774 27645426 75575656 出力: yes 入力: 35261546 76421754 15743271 62135642 35617653 64565476 54427254 15635465 出力: no 追加のテストケースについては、以下のMT0の回答を参照してください。
20 code-golf  game  grid 

12
今夜または今週末に接続してください
これは私の最初のコードゴルフですので、広すぎる場合や、良いパズルの情報が足りない場合はお知らせください! チャレンジ オンタリオ州および世界の他の地域では、使用時間(TOU)料金を使用して電気料金が請求されます。 日付と時刻を考えると、私はピーク時(赤)、ミッドピーク(黄)、オフピーク(緑)の期間にいるかどうかを知りたいです。 入力 入力は、時間精度が最小の許容可能なタイムゾーンのないISO 8601日時形式で提供されると仮定しますYYYY-MM-DDThh[:mm[:ss]](Tはリテラル)。 例 2014-09-01T14 2014-09-01T17:30 2014-09-01T17:30:02 出力 出力は文字列でなければならないOn、MidまたはOff。 ルール 最短のコードが勝つ この課題のために、法定休日を無視します この投稿で見つかった情報を想定しています。オンタリオ州エネルギー省によって、使用時間の価格設定の実際のルールは将来変更される可能性があります。 情報 夏の平日(5月1日から10月31日) オフピーク:19h00-07h00 ミッドピーク:07h00-11h00および17h00-19h00 オンピーク:11h00-17h00 冬の平日(11月1日から4月30日) オフピーク:19h00-07h00 ミッドピーク:11h00-17h00 オンピーク:07h00-11h00および17h00-19h00 週末 オフピーク:終日
20 code-golf  date 

30
Recamánのシーケンスを生成する
Recamánのシーケンス(A005132)は、次のように定義される数学的シーケンスです。 A(0) = 0 A(n) = A(n-1) - n if A(n-1) - n > 0 and is new, else A(n) = A(n-1) + n 上記のかわいいLaTexバージョン(読みやすいかもしれません): A(n)=⎧⎩⎨0A(n−1)−nA(n−1)+nif n=0if A(n−1)−n is positive and not already in the sequenceotherwiseA(n)={0if n=0A(n−1)−nif A(n−1)−n is positive and not already in the sequenceA(n−1)+notherwiseA(n) = \begin{cases}0 & \textrm{if …

21
集合論を使用したスト​​リングの長さ
ウィキペディアより自然数の集合論的定義 自然数の集合Nは、0を含む最小集合として定義され、S(n)= n defined {n}で定義される後継関数Sの下で閉じられます。 このように定義された最初の数は、0 = {}、1 = {0} = {{}}、2 = {0,1} = {{}、{{}}}、3 = {0,1,2 } = {{}、{{}}、{{}、{{}}}}。 この自然数の定義を使用すると、文字列の長さがカウントされます。 任意の長さのa-zA-Zから文字列を入力します 文字列の長さを区切りなしのセット表記で出力します 例 空の文字列を入力してください 出力 {} 入力 する 出力 {{}} 入力 aaaa 出力 {{} {{}} {{} {{}}} {{} {{}} {{} {{}}}}} 区切り文字付きの「aaaa」の読みやすさの出力は { {} {{}} {{} {{}} } …

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