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

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

8
トレーダーズ・トゥ・ザ・デス
あなたは外国人トレーダーであり、利益を上げたいと思っています。取引を希望する商品にはA、プリコット、Bオール、Cアナリー、Dアフォディル、およびEアーウィッグの5つです。冬から始めて、何を生産するかを決める必要があります。そして、秋には旅行して利益を得るために日々を過ごします。 ゲームプレイ ストレージ内の各製品10個でゲームを開始します。毎年、各製品を2つ消費します。 ゲームの開始時に、5つの製品のリストと、毎年生産できる量が表示されます(例:5-A,6-B,3-C,12-D,4-E。次に、何を作成するかを決定する文字AからEを返します。 その後、秋には製品(保管中のものも含む)を市場に持ち込みます。取引するのに50ターンあります。 あなたがするかどうかを決定しなければならないPurchase、Sエル、またはL市場を庇。その後、買い手は売り手とランダムにペアリングされます。グループにエクストラがある場合、ランダムなエクストラはこのターンを逃します。トレーダーがスキップされた場合、トレーダーはを受け取りSますT。:売り手は、彼が販売したいかを決定し、量(EXなければなりません3-A:彼は(例を受け入れるだろうか、その後、と)5-B,2-D,1-E(値が)のいずれかではないすべての)。その後、買い手は売り手が販売している製品、売り手がそれのために取る製品を通知され、彼はそれのために取引する製品を選択することができます(例:DまたはX何のために)。 すべての取引が終了した後、または市場を離れた後、各製品を2つ消費し、1年が始まります。1つでも2つ未満の製品がある場合、死亡(および合格Q)します。 あなたのスコアはあなたが最後に生きた年数であり、50ゲーム後にあなたのスコアはあなたの合計スコアに対して平均されます。 オプションの動き いつでも戻っGて商品を照会することができます N在庫にある新製品の数をクエリするためにいつでも戻ることができます(過去1年間にプレイヤーによって生産され、新製品は古い製品の前に取引されます) いつでもT現在のターンフレーズに戻ることができます:Pロデュース、Mアルケット、またはTレーディング 取引中にクエリを実行できます Iしているプレーヤーに固有の識別子を。 取引中に戻ることができます Mいる人数を照会するためにます コーディング方法: 任意の標準言語を使用できますが、 command.txt、プログラムを実行するためのコマンドであるをます。 プログラムの一般的な流れは次のとおりです。 Get productivity While alive: Output product you want to produce While in trading: Output whether you want to purchase or sell Get whether or not you were skipped. If not …

3
アスキー水道
イントロ 次のf A\/ような文字のグリッドを考えます f f f A A / \ \ / A A \/ / \/ ここで: f 水の流れを下に注ぐ蛇口を表します A 上の水の流れを分岐させて、ちょうど半分が左に、半分が右に行くようにします \ 上の水の流れを1単位だけ右にシフトします / 上の水の流れを左に1単位シフトします 組み合わせ\/は、その上の水流を収集する無限の容量を持つトラフを作成します [space] 水が通過できるよりも空きスペースです これから、水(*)が蛇口から出て、トラフまたはグリッド領域のいずれかに落ちるときに通る経路を想像できます。 f f f <-- first second and third faucets * * *A* * *A*/ \* \*/ * *A <-- a …

8
棒人間戦争を描く
高度な描画スキルでこの課題を作成している私の写真。 バックグラウンド スティックマン戦争は、地球の支配的な種がスティック以外のもので作られていなかったはるか昔に起こりました。歴史家は、当時画家やカメラがなかったという事実を後悔しており、今日の歴史書でその戦争の写真を使用することができました。それがあなたのコーディング力が役立つ場所です。棒人間は非常に簡単に描かれ、歴史家は何人の棒人間が戦争と戦ったかについてのデータを見つけることができました¹。戦争が始まる直前のイメージを再現するのはあなた次第です! 戦争に関与した勇敢な棒人間は次のとおりです。 O / | / | \ / | | / \剣士 OA / | \ | | | / \ | スピアマン 。 。 ' *。 'O * '\ | /。 。| * './ \ *。メイジ O / | \ | / \村人 O / | …

2
首謀者の戦略
私は、Mastermindのコードゴルフチャレンジしか見つけることができなかったので、ここに、自分が挑戦したいコードチャレンジバージョンを示します。 通常の首謀者ゲームの最適な戦略であるMM(4,6)は、1993年に小山とライによって発見され、平均推測数= 5625/1296〜4.34でした。MM(5,8)はまだ解決されていませんが、推測の平均数は5.5であると推定されます。 あなたの仕事は、MM(5,8)戦略を作成することです。これは、5つの穴と8つの色に対応し、すべてのpow(8,5) = 32768可能な個別のソリューションをカバーします。明らかに、最適なものである必要はありません。次の2つの選択肢があります。 戦略を生成する決定論的プログラムを投稿します。このプログラムは、Windows 7、Mac OS X、またはLinux上で、フリーでないソフトウェアを追加せずにコンパイル/実行できる必要があります。 戦略を(StackExchange名とともに)インターネット上のどこかに公開し、ここにURLを投稿します。 どちらの場合も、回答のヘッダーにスコア(以下を参照)を明記してください。 戦略は、次の文法に従ってエンコードする必要があります。 strategy : guessing-strategy | known-solution-strategy guessing-strategy : '{' guess ':' branches '}' known-solution-strategy : guess guess : color color color color color color : 'A'..'H' branches : '{' branch (',' branch)* '}' branch : reply ':' strategy …

6
tryブロック内のすべてがすでにキャッチされているときにcatchに到達する
これは、私が推測する構文によってJavaとC#に制限されています。 このプログラミングパズルでExceptionは、キャッチできるがキャッチブロックの最後に再びスローされるを生成します。 try { while(true) try { // you are only allowed to modify code between this try { } brackets } catch(Exception ex2) { } } catch(Exception ex1) { // your goal is to reach this catch block by modifying the code ... // in the inner try block …

4
フォレスト-シミュレートされたエコシステム
注意 この問題は、このredditスレッド(スポイラーアラート!)から取られたものであり、このサイトのフォーマットに合うように調整しました。すべてのクレジットはredditユーザー「Coder_d00d」に送られます。 この問題では、フォレストをシミュレートします。 このシミュレートされたフォレストでは、3つの側面を扱います。 苗木、ツリー、またはエルダーツリーになりうるツリー。 木こり(彼は木を切り倒し、昼食を食べて、溶岩流に行きます) クマ(彼はパンケーキのような匂いの木こりをひどく傷つける) 警告:これらのルールは、おそらく完全ではありません。それらをガイドラインとして参照し、問題ないものを少し微調整する必要がある場合は(スポーン率が問題として指摘されているので、この例としてkuroi nekoの答えを参照してください。 時間のサイクル: シミュレーションは月単位でシミュレートされます。あなたは「ティック」に間に合うように前進します。各「目盛り」は月を表します。12個の「ティック」は1年を表します。私たちの森は変化し、常に変化します。森林の進捗状況を記録し、何が起こるかを分析します。 森林: フォレストは2次元のフォレストになります。N x Nのサイズのグリッドでフォレストのサイズを表すには、Nの入力が必要です。各場所で、ツリー、ベア、またはランバージャックを保持できます。それらは同じ場所を占めることができますが、多くの場合、同じ場所を占めるときにイベントが発生します。 私たちの森は、サイズに基づいてランダムに生成されます。たとえば、N = 10の場合、10 x 10のフォレストと100のスポットがあります。 フォレストの10%は、ランダムに10か所で木こりを保持します。(100スポットフォレストを使用すると、これは10本の木こりです) フォレストの50%は、ランダムな場所にツリーを保持します(ツリーは3種類のいずれかであり、「ツリー」の真ん中から始まります)。 フォレストの2%がベアを保持します。 フォレストのサイズをどのように受け取るかはあなた次第です(stdin、ファイルから読み取るか、ハードコーディングしてください)。Nを5以上にすることをお勧めします。小さな森はあまり楽しくありません。 イベント: シミュレーション中にイベントが発生します。イベントは、以下で説明するいくつかのロジックに基づいて発生します。私たちの森の3つの要素の各説明で、以下のイベントを説明します。 イベントは最初に木の順序に従い、次に木こりが続き、最後に熊が続きます。 木: 毎月、ツリーは10%の確率で新しい「苗木」を生成します。ツリーに隣接するランダムな空きスペースでは、10%の確率で「苗木」を作成できます。 たとえば、森の真ん中にあるツリーには、周囲に8つのスポットがあります。これらの1つ(空の場合)は「苗木」になります。 存在してから12か月後、「苗木」は「ツリー」にアップグレードされます。「苗木」は、「ツリー」に成熟するまで他のツリーを生成できません。 「苗木」がツリーになると、他の新しい「苗木」を生成できます。 「ツリー」が120か月(10年)使用されていると、「エルダーツリー」になります。 エルダーツリーは10%ではなく20%の確率で新しい「苗木」を生成します。 ツリーまたはエルダーツリーに隣接するオープンスポットがない場合、新しいツリーは生成されません。 木こり: 木こりは木を切り倒し、スキップしてジャンプして野生の花を押します。 毎月木こりはさまようでしょう。任意の方向に隣接するランダムに選択されたスポットに最大3回移動します。たとえば、グリッドの中央にある木こりには、移動先が8つあります。彼はランダムな場所にさまようでしょう。また。そして最後に三度目です。NB:これはどんな場所でも構いません(彼らはクマに足を踏み入れることができ、結果としてモールになります)。 木こりが動くとき、彼が木(苗木ではない)に出会うと、彼は止まり、その月の放浪は終わります。彼はそれから材木を収穫します。ツリーを削除します。木材を1個獲得します。 木こりは「苗木」を収穫しません。 木こりはエルダーツリーも収穫します。ニワトコの木は2枚の木材の価値があります。 木材追跡: 12か月ごとに、伐採された木材の量は、森の中の木こりの数と比較されます。 収集された材木が森林内の木こりの量と同じかそれを超える場合、多くの新しい木こりが雇われ、森の中にランダムに生成されます。 採用する木こりの数を計算します。 floor(lumber_collected / number_of_lumberjacks) ただし、12か月後に収集された木材の量が木こりの数を下回った場合、木こりはお金を節約するために放され、森から1つのランダムな木こりが取り除かれます。Lumberjackの労働力を0未満に減らすことは決してないことに注意してください。 くま: …

11
ASCIIテキストを点字に翻訳する
ASCIIテキストを点字出力に変換するプログラムを作成します。要件: 入力は、stdin、コマンドライン、またはその他の外部入力ソースから行われます。 出力は点字として認識できる必要があります。出力の形式はユーザー次第です。例はo、隆起したドットと.非隆起したドットの場合です。などのテキストパターン表現1-3-4は受け入れられません。長い行の折り返しは必要ありません。 最小限のソリューションには、26文字のアルファベットとスペースのみが必要です。ソリューションでサポートされていない入力文字はすべて無視する必要があります。 スコアリングは、ソースコードの文字数によって行われます。ペナルティとボーナスは次のとおりです。 出力としてUnicode点字を使用すると、+ 50のペナルティが発生します。 資本、数字、句読点をサポートするための-50ボーナス。 英語(Grade-2)点字からの合字と1文字の収縮をサポートするための-200ボーナス。(これはまったく別の問題なので、これを別の課題にします。) サンプルの呼び出しと出力(最小限のソリューション): $ braille Hello world o . o . o . o . o . . . . o o . o . o . o o o o . o o . o . . o . . o o …
19 code-golf 

29
文字列内のすべての数値を乗算します
勝者:Chilemagic、大規模な21バイト! 引き続き回答を送信できますが、勝つことはできません。元の投稿を保持: あなたの目標は、文字列内のすべての数値を検索し、ユーザーが入力した値で各数値を個別に乗算することです あなたは小数を心配する必要はありません ユーザーは数字と文字列を入力します ユーザーは、いくつかの点で数値と文字列、入力する必要がありますが、プログラムが、それは問題ではありません読み込む方法を。テキストファイルの読み取りなど、stdinを使用できますが、ユーザーはキーボードの9ボタンを(たとえば)ある時点で押す必要があります。 コンパイルして実行できるものなら何でも構いません 例: 文入力:この1は22a 3352文50です 数字入力:3 出力:この3は66a 10056文150です このコンテストは2014年9月6日(投稿から7日)で終了します。 これはコードゴルフなので、最短のコードが勝ちます
19 code-golf 

5
アインシュタインの謎を解く
アインシュタインはなぞなぞを書いた。彼は、世界の98%がそれを解決できなかったと言いました。 電車に乗って仕事をしながら約25分でこの謎を解きました。基本的には単なる控除です。 なぞなぞ 5つの異なる色の家が5つ並んでいます。 各家には異なる国籍の人が住んでいます。 5人の所有者は特定の種類の飲料を飲み、特定のブランドの葉巻を吸って、特定のペットを飼っています。 同じペットを持っている所有者、同じブランドの葉巻を吸う所有者、または同じ飲み物を飲む所有者はいません。 質問: 魚の所有者は誰ですか? この謎を解決するために、アインシュタインは15のヒントを提供します。 ブリットは赤い家に住んでいます。 スウェーデン人は犬をペットとして飼っています。 デーンはお茶を飲みます。 グリーンハウスはホワイトハウスのすぐ左にあります。 温室の所有者はコーヒーを飲みます。 ポールモールを吸う飼い主は鳥を飼っています。 黄色い家の所有者はダンヒルを吸っています。 センターハウスに住んでいる所有者は牛乳を飲みます。 ノルウェー人は最初の家に住んでいます。 ブレンドを吸う飼い主は、猫を飼っている飼い主の隣に住んでいます。 馬を飼っている飼い主は、ダンヒルを吸う人の隣に住んでいます。 ブルーマスターズを吸うオーナーはビールを飲みます。 ドイツ人は王子を吸う。 ノルウェー人は青い家の隣に住んでいます。 Blendsを吸う所有者は、水を飲む人の隣に住んでいます。 これらのヒントを使用して、解決策を見つけることができます。 あなたの仕事:この謎を解決するプログラムを作成してください。ソリューションのハードコーディングは許可されません(duh) ヒントは任意の形式でハードコードできます。 形式の例: //Hints in order (Nationality:Brit)==(Color:Red) (Nationality:Swede)==(Pet:Dogs) (Nationality:Dane)==(Drink: Tea) (Color:Green)/(Color:White) (Color:Green)==(Drink:Coffee) (Smoke:PallMall)==(Pet:Birds) (Color:Yellow)==(Smoke:Dunhill) (House:3)==(Drink:Milk) (Nationality:Norwegian)==(House:1) (Smoke:Blend)/\(Pet:Cats) ==は次と等しいことを 意味します\の 左側にあることを意味します / \の 右側にあることを意味します 私が言ったように、ヒントをハードコードするか、入力として持つことができます。 …
19 code-golf 

3
ああ!獣はHHHです!
IBM PC AT、YouTube(ビデオを参照)、Wikipedia(記事を参照)、およびSesame Street から学んだように: 手紙Hはアルファベットの中で最も容赦ない手紙です! (実際にコードページ437の 2つの要素で構成されている場合でも、実際にはそのように無慈悲です。) エイリアンのように、ええと... エイリアン、ビーストはたまらなく卵の近くに来る人すべてを執pursueに追い求めます。彼らには理由はありません。滅びないようにするには、それらをつぶさなければなりません。 このシナリオでは、あなたはあなたの最後の生命まで落ちており、卵のない地形で平野の獣に会ったと仮定します(Wikipediaのスクリーンショットのように)。数字キーパッドはなく、直接上下左右に移動することしかできません...しかし、獣には明らかに1つがあり、ターン中に斜めに移動できます。 ビーストの選択肢の中からの移動の選択は、プレイヤーからの距離を最小にするものになります。距離が等しければ、タイブレークは左+上より右+下を優先して行われますが、明確にするための曖昧さ除去マトリックスは... 1 3 4 2 H 5 6 8 7 獣は眠ることはありませんが、幸いにもプレイヤーより少し遅いです。彼らは1ターンおきに移動します(2ターン目に交替を開始することにより、プレーヤーに有利なスタートを与えます)。移動が可能であれば、プレイヤーからさらに遠ざかるかに関係なく、移動する必要があります。 閉じた隙間に座っていた可動壁の列を移動すると、獣をつぶします。これらの普通の獣は、頭に2ポイントの価値があります。 入力 列と行でマップのサイズを示す整数のペア。 入力の行の行数。各列サイズは、固体壁(#)、可動壁(~)、獣(H)、プレイヤー(O)、またはスペースのみを含みます。 プレイヤーが移動しようとしたことを示すU、D、L、R、または単に待機するWの入力。ブロックされている可動壁を押し込もうとすることは合法的な入力であり、アクションを起こさないことに注意してください。 出力 aHHHH! 獣がプレイヤーを殺した場合...またはプレイヤーが獣を残さずに勝った場合は何もありません スコア (注:デバッグや娯楽のために、各ステップで状態を出力できるようにしたい場合がありますが、ここに投稿するには長すぎます。) 明確化 マップは、固体の壁で囲まれていることが保証されています。 誰が順番に移動するかは、結果にとって重要です。したがって、プレイヤーは常に最初に移動し、画面上を左から右にスイープしている場合、獣には最初のマップ位置に基づいた順序が与えられます。(行1の獣は行2の獣の前に移動し、同じ行の2つの獣は、列番号が最も小さいものが他方の前に移動します) 斜めに動く獣は、壁の間を絞る必要があるかどうかに関係なく、開いている隣接する斜めのスペースに移動できます。 プレイヤーは、もう一方の端にスペースまたは獣がある限り、任意の数の可動壁を一列に押すことができます。しかし、壁の間に固定されていない獣に壁の列を押し込もうとすると、獣は壁として扱われ、移動は許可されません。 ターン中の獣の移動の決定は、ターン開始時のプレイヤーの位置に基づきます。「プレーヤーまでの距離」の望ましい最適化は、「カラスが飛ぶように」計算によるものです。正方形の中心からプレーヤーの正方形の中心までを測定した場合と同じ結果が得られる近似は問題ありません。 優先順位の高いビーストがスポットを奪ったために、ビーストがそのターンで最初に好まれた動きをすることができない場合、その場所にとどまるのではなく、次の最良の選択をします(動きがまだ可能である場合)。 サンプルケース シンプルクラッシュ 入力 5 3 ##### #O~H# ##### R 出力 2 …
19 code-golf  game  maze 

3
Haskellの最短のa-> b->(a-> b)関数
テストで次の質問がありました。 f次のタイプの関数を作成しますa -> b -> (a -> b)。aまたb、いかなる意味においても束縛されるべきではありません。コードが短いほど良いです。 私は思いついたf a b = \x -> snd ([a,x],b)。もっと小さなものを見つけることができますか? 現在の勝者は: f _=(.f).const

2
単数または複数?
30個の英語の名詞の単数形と複数形のリストを次に示します。あなたの仕事は、最短の正規表現と一致する記述するだけで、すべての一つの形で名詞をし、どれも他では(簡単に、すべての英語の名詞で終わるs複数形の右にあります?)。 SINGULAR PLURAL --------- -------- car cars boat boats man men woman women omen omens bus buses cactus cacti spy spies pie pies louse lice mouse mice amice amices goose geese creese creeses person people child children siren sirens ox oxen foot feet tooth teeth formula formulae minx minxes sphinx …

5
2048ボットチャレンジ
私たちはされているクローニング、2048年の分析 2048が、なぜ我々はまだそれをプレイしていませんか?555バイトのJavaScriptスニペットを作成して2048を自動的に再生します。1時間後の最高スコアがカウントされます(以下のスコアリングを参照)。 セットアップ: 後藤2048と実行: a = new GameManager(4, KeyboardInputManager, HTMLActuator, LocalStorageManager); a ゲームを制御するオブジェクトです。 ルール: セットアップ後、コンソールから555バイトのjavascriptを実行してゲームを制御できます。ゲームのソースコードはここにあります(コメントを含む)。 ユーザーに可能なことだけを行う場合があります。 a.move(n) 4つの方向のいずれかでキーアクションをトリガーします。 0:上、1:右、2:下、3:左 a.restart() ゲームを再起動します。再起動は、ゲームの途中で許可されています。 ゲームの状態に関する情報はにありa.grid.cellsます。この情報は読み取り専用です いずれかの関数へのフックは許可されますが、その動作を変更することはできません(または他のデータを変更します) 移動は250msごとに1回のみ許可されます 例 開始するのは非常に簡単な例です。コメントなしで181バイトを入力します。 //bind into new tile function and change m(ove) variable when a tile was moved b = a.addRandomTile.bind(a); m = !1; a.addRandomTile = function() { …

9
ASCII ARTエッジ検出
タイトルが言うように、私はASCIIアートのエッジを検出しなければならないことで争うことを考えていました。 コードは、入力として白黒ASCIIアートを受け入れる必要があります。B / W ASCIIアートは(私が)のように定義されたASCIIアート(:asteriks我々の場合における非ホワイトスペース文字の一種類のみで*)。そして、出力が標準のASCIIアート(すべてのASCII文字が受け入れられます)を生成すると、最初の輪郭が記憶されます。 出力で複数の文字を使用する目的は、一部のエッジをスムーザーにすることです。たとえば、この入力を許可することができます *** **** ****** ****** ****** ****** **** *** になる可能性があります: ___ _/ ) _/ / / | | / | \ \ | `\ | \___) 入力\nとしての入力区切り文字列。各行には最大80文字数が含まれます。行数は指定されていません。 これは私のサンプルPython3プログラムです。 import fileinput as f import re as r import copy as c a,s,p='*',' ','+' def read(n): s=[list(' …

29
Tictactoeで勝利を決める
コードゴルフをしましょう! 三目並べボードの状態を指定(例:) |x|x|o| |x|o|x| |o|o|x| ゲームがあるかどうかを判断しwin、A loseかcat。コードは、状態を指定してこれらのオプションのいずれかを出力する必要があります。上記のゲームは出力するはずですlose 明確にするために、勝ちとはx、連続する3 秒(対角、水平、垂直)として定義されます。負けは3 o秒連続で、catゲームは連続なしで3 秒です。 物事を面白くするには、状態の入力構造を決定する必要があります。それについて説明する必要があります。たとえばxxoxoxoox、上記の有効な状態では、各文字が左から右、上から下に読み取られます。[['x','x','o'],['x','o','x'],['o','o','x']]同様の方法で読み取られる多次元配列のゲームです。ながら0x1a9そのためヘクスである110101001適切な圧縮としてかもしれない仕事1のために操作することができるxのと0のために操作することができますo。 しかし、これらは単なるアイデアであり、あなたはあなた自身の多くを持っていると確信しています。 基本ルール: プログラムは、実行可能な状態を受け入れることができる必要があります。 入力の形式は、あらゆる状態を表すことができなければなりません。 「勝利の状態は、ボードから決定する必要があります」 完全なボードを想定 Win前にloseインスタンスの場合の「xxxoooxxx」 最小の文字数が勝つ
19 code-golf  game 

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