タグ付けされた質問 「king-of-the-hill」

キングオブザヒルは、提出物が何らかの形式のゲームで相互作用し、競合するゲームを示します。相互作用なしでプログラムを互いに競い合う競争は、むしろ[コードチャレンジ]を使用するべきです。

12
グレートワンパスハント
コンプリート Wumpusシーズンは終了し、多くの悪質なWumpusと勇敢なハンターの生活が終わりました。some病で不道徳で実に愚かなハンターもいます。しかし、その日の終わりに、ヘックル博士のNascarHunterは、略奪品と栄光を手に入れました。私たちはあなたに敬意を表します、ああ勇敢な...ドライバー? Wumpusesはオープンシーズンで、世界中のハンターがWumpus Cavesに集まり、貴重なWumpus Peltを手に入れようとしています。 ゲーム いくつかのバリエーションを持つ、古典的なハンプザワンパスゲームに基づいています。 地図 十二面体。20の部屋があり、それぞれが他の3つの部屋に接続されており、基本的に3つのリングが間に橋を架けています。 ザ・ワンプス Wumpusは神秘的な獣です。それがどのように見えるかは確かではありませんが、すべてが凶暴であることに同意します。Wumpusは洞窟に住んでいて、死んだものを食べるのが好きです。Wumpusの隣の洞窟に死体がある場合、彼はそこに移動してそれを食べます。Wumpusがたまたまハンターを含む洞窟に移動した場合、Wumpusはハンターを殺して食べます。Wumpusが彼の近くに矢印を聞くと、彼はパニックしてランダムな部屋に走ります。 オプションの特性:これらは現在、ゲームをより面白くするために含まれていますが、あまりにも多くのランダム性を追加する場合、人気のリクエストで削除できます。 怒りに満ちた怒り:怒りに満ちた怒りは、3日間、20%の生存と暴れを持っています。暴れ回ると、彼は1日に2回ランダムに動きますが、それでも死体に引き付けられます。3日後、彼は死ぬでしょう。2回目の矢の射撃もWumpusを殺します。 さまようワンプス:毎日、ワンプスを誘発するものが他にない場合、25%の確率で移動します。 ハンターたち 4人のハンターが一度に洞窟に入ることができます。洞窟は暗いため、ハンターは見ることができませんが、他の感覚を使用できます。ハンターは、隣接する部屋でWumpusの匂いを嗅ぎ、隣接する部屋で死体の匂いを嗅ぎ、隣接する部屋で動いている他のハンターの音を聞き、隣接する部屋に矢が放たれるのを聞くことができます。 ハンターには2つのアクションがあります。撮影または移動です。ハンターは矢を隣の部屋や自分の部屋に向けて発射し、同様に移動できます。 ゲームプレイ 各ラウンドでは、ハンターはまず自分の周囲に注意を払い、次に1動きます。移動は矢印の前に発生するため、ハンターが移動する部屋に矢印が放たれた場合、ハンターは生き残ります。すべてのハンターの移動が行われた後、矢印が評価されます。1人の居住者と矢が同じ部屋にいる場合、居住者は撃たれて死亡します。2人以上の居住者が部屋を共有している場合、1人がランダムにヒットして死亡します。注:死体は居住者であるため、死体は部分的なシールドとして機能する場合があります。 すべてのハンターが移動した後、Wumpusが応答します。ハンターがWumpusと一緒に部屋に移動した場合、Wumpusは彼/彼女を食べます。Wumpusが移動すると、Wumpusは新しい部屋の居住者も食べます。 100日後、ハンターがWumpusを殺さなかった場合、またはfall落した犠牲者がいない場合、洞窟内で飢starで死にます。 コード すべてのソースコードは、ここにあります。誰かが私にstdIn / stdOutアダプタを書きたくない限り、すべての提出はJavaで行われるべきです;) ボットはHunterクラスを拡張する必要があります。Hunterに名前を付けるには、名前フィールドを設定するパラメーターなしでコンストラクターを追加します。応答するには、getResponse関数をオーバーライドします。この関数では、毎ターン、周囲の状況を知らせる5つのブール値の配列が渡されます。 ステータス0 =「おかしな匂いがする」 ステータス1 =「別のハンターが聞こえます」 ステータス2 =「死体の匂いがする」 ステータス3 =「矢印のカチャカチャという音が聞こえます」 ステータス4 =「同じ部屋で別のハンターを感じている」 Hunterクラスには2つのスロットがあります:nextMoveとnextDirection、それぞれ列挙型MoveとDirectionを使用します。移動はMOVEまたはSHOOTのいずれかであり、方向はLEFT、RIGHT、BACK、またはHEREです。方向は一貫しています。つまり、戻ると常に前の部屋に戻り、同じ部屋から入る場合、左と右は常に同じになります。ただし、別の方向から入る場合は、LEFTおよびRIGHTで別の場所に移動します。 独自のメソッドも自由に実装してください。記憶はトーナメント全体を通して持続します。つまり、ハンターは一度だけ構築されます。ただし、各ラウンドの開始時に、新しいゲームが開始されたことをハンターに知らせるためにnewGame()メソッドが呼び出されます。 得点 一度に4人のハンターが競います。殺された場合、Wumpusの毛皮は60ポイントの価値があり、生存しているすべてのハンターに均等に分割されます。フルラウンドロビンスタイルなので、4人のハンターの各組み合わせが一緒にプレイします。 5つのサンプルハンターが含まれています。4つは非常に基本的な機能で、もう1つはテストのためにユーザー入力を再生できます。 提案/リクエストがあれば、教えてください! 終わりが見えます! 世界のWumpusの人口は驚くべき速さで狩られています。6月17日水曜日にWumpuses保護法が可決されます。この日を過ぎると、洞窟でこれ以上ハンターは許可されなくなり、勝者が選ばれます。 スコアボード 注:謝罪、コードにバグがあり、複数のゲームでハンターが死んでいる可能性がありました。それを修正したので、全体的なランキングはあまり変わりませんが、統計は大きく変わります。 スコアが入り、ハンターの各セットをそれぞれ1000ゲームで実行します。NascarHunterとFullCoverageHunterがパックをリードし、AntiHunterの追加によりWumpusesの生存率が2%向上しましたが、彼らは今でも32%の生存率で吸盤足で揺れています。仲間のハンターからの矢は、これまで以上に洞窟の最大の脅威です。 1. NascarHunter : …

10
グリッドルーティングバトル
注:試合を実行するために必要な言語をインストールできないため、この課題は現在無効です。他の誰かがそれをする時間と興味を持っているなら、私は反対しません。 リーダーボードについては、投稿の下部をご覧ください。 これは、ボットが2次元グリッドグラフを介してパスを構築する、準協力的なキングオブザヒルチャレンジです。最もトラフィックの多いノードを制御するボットが勝者です。ただし、実際に接続パスを構築するには複数のボットのリソースが必要なので、ボットはある程度連携する必要があります。 ゲームプレイ 以下ではN > 0、プレイ中のボットの数をみましょう。 グリッド ゲームは、サイズの2次元整数グリッドで再生されます。そのグリッドの左下座標はです。各座標と3点の座標への発信エッジ有し、およびその上、-coordinatesはモジュロを取られるが 。これは、グリッドが東端と西端で折り返されることを意味します。すべての下部座標はソースであり、すべての上部座標はシンクです。⌊4/3N2⌋ × ⌊4/3N2⌋(0,0)(x,y)0 ≤ y < ⌊4/3N2⌋-1(x-1,y+1)(x,y+1)(x+1,y+1)x⌊4/3N2⌋(x,0)(x,⌊4/3N2⌋-1) 次の図は8 × 8グリッドを示しています。 グラフの各頂点は、非アクティブ、アクティブ、または破損しています。すべての頂点は非アクティブで開始され、ボットによってアクティブ化できます。ボットはその後、所有者になります。また、ボットは頂点を破壊する可能性があり、修復できません。 順番を変える ターンは破壊フェーズと活性化フェーズで構成されます。破壊フェーズでは、各ボットが1つの非アクティブな頂点を破壊する場合があります。その頂点はそれ以降壊れていて、だれもアクティブにできない可能性があります。アクティブ化フェーズでは、各ボットが1つの非アクティブな頂点をアクティブ化できます。それ以降、彼らはその頂点を所有し、他の誰もそれを再アクティブ化することはできません。複数のボットが1つの頂点を所有している場合がありますが、それらがすべて同じターンにアクティブ化される場合です。各フェーズでは、頂点の選択が同時に行われます。 得点 1ラウンドは正確なターンの間続きます。この後、ラウンドは次のように採点されます。アクティブな各ソース頂点から、アクティブな頂点に沿ってランダム化された深さ優先探索を実行します(つまり、各頂点の子がランダムな順序でアクセスされます)。ソースからシンクへのパスが見つかった場合、そのパスに沿ったすべての頂点について、頂点のすべての所有者が1ポイントを取得します。N2N ゲーム全体は100ラウンド続き、全体で最もポイントの多いボットが勝者となります。スコアの分散が高すぎる場合、この数を増やすことができます。 追加の規則 コントローラや他の提出物をいじることはありません。 出場者ごとに最大1つの提出。 1つのプライベートテキストファイルを除き、ゲームの開始時に完全に消去された外部リソースはありません。 特定の敵を倒したりサポートしたりするようにボットを設計しないでください。 ボットをコンパイルして実行するコマンドを提供します。Debian Linuxで自由に利用できるコンパイラ/インタープリターはすべて受け入れられます。 コントローラー コントローラーはPython 3で作成されており、GitHubにあります。詳細な手順については、READMEファイルを参照してください。開始するためのAPIは次のとおりです。 ボットは各ラウンドの開始時に開始され、ラウンドの終了まで持続します。改行で終了するメッセージを使用して、STDINおよびSTDOUTを介してコントローラーと通信します。 BEGIN [num-of-bots] [num-of-turns] [side-length] 先頭に入力されます。 DESTROY [turn]各破壊フェーズの開始時に入力されます。ボットはVERTEX x,y、頂点を選択するか、で応答しますNONE。 BROKEN [turn] [your-choice] [other-choices]各破壊フェーズの終わりに入力されます。他のボットの順序は各ゲームの開始時にランダム化されますが、その間は固定されたままです。選択肢はx,yまたはとして表示されNます。 ACTIVATE [turn]およびOWNED …

13
KOTH:戦う町
最終結果はこちら! 前書き ゲームテイクは、マヌーのゲームオブタウンに強く触発されています。剣と魔法の世界で行われます。大陸全体を支配していた王が亡くなり、多くの都市国家の領主たちが領土をめぐって戦っている。あなたはこれらの領主の一人であり、あなたの目標はすべての町を征服し、支配することです。 原理 人々は8つのクラスに分かれています: Warlocks : Fighter (magic) Crusaders : Fighter (melee) Amazons : Fighter (range) Corsairs : Utility (steal, guard, transport) Bishops : Utility (convert, exorcize) Necromancers : Utility (resurrect) Architects : Utility (build) Peons : Resource (income, recruits) ゲームが始まると、1つの町を支配します。各町には100人がいます。これらの8つのカテゴリにそれらを分割する必要があります。 その後、実際のゲームが始まります。これはターンベースです。ターンは12段階で構成され、そのうち7 段階は対話型です(ボットにコマンドを要求します)。次のフェーズは、前のフェーズがすべての町で実行されたときに始まります(フェーズ1:タウン1、タウン2、タウン3 ...;フェーズ2:タウン1、タウン2、タウン3 ...): 1. Raise Taxes - …

26
最低ユニーク入札オークション
すべてのエントリに感謝し、締め切りは過ぎました。最終スコアは質問の最後にあります。かなり包括的な勝利を収めたPhiNotPiに おめでとうございます。 これは、キングオブザヒルの挑戦であり、その目的は、最も低いユニークな入札オークションで、どの対戦相手よりも頻繁に勝つプログラムを作成することです。 入力 入力として、プログラムは、次のようにスペースで区切られたすべての以前のラウンドの入札(行ごとに1ラウンド)を受け取ります。 10 4 12 11 12 4 7 3 3 1 2 9 15 1 15 15 9 3 3 21 6 4 3 8 6 13 1 入力の各列は、1つのボットの入札を表します。最初の列は受信プログラムの入札で、残りはランダムに生成された順序です。入力してくれたhammarとPeter Taylorに感謝します。 入力は、プログラムへの唯一のコマンドライン(マルチライン)引数として提供されます。 ./test1 '1 2 3 4 5 6 1 2' これは、プログラムをコマンドラインから実行できる必要があることを意味します。答えの一部として、呼び出しの例を挙げてください。 最初のラウンドでは、対戦相手のボットの数を知らせる手段としてのみ、入力は0sの行(ボットごとに1 行)になります。 出力 プログラムは、1から100(両端を含む)の範囲の整数として入札単価を出力する必要があります。 得点プログラム …

20
相手にアクセスできる囚人のジレンマ
この課題では、囚人のジレンマを演じるボットを作成します。キャッチは次のとおりです。以前のゲームの履歴にアクセスすることはできません。代わりに、相手自身にアクセスできます。このバージョンでは、両方のプレイヤーが協力すると+2ポイントを獲得し、両方がディフェクトすると+1ポイントを獲得します。各サブミッションは、それ自体を含む他のすべてのサブミッションに対して10回プレイされます。勝者は、合計ポイントが最も多い提出物です。 コントローラー:JavaScript関数を次の形式で作成する必要があります function submissionName(them) { /* Your code here */ } コントローラーは関数のnameプロパティを使用して結果を表示します。したがって、この形式ではない場合(f = x => ...または代わりにまたはf = function() { ... })、スコアを確認することは難しく、独自の関数にアクセスすることはできません。 この関数は、1つのパラメーターを受け入れます。themこれは、相手の関数です。次に、その関数を呼び出して、特定の関数が入力として与えられる相手の反応を確認します。そのデータに基づいて、協力または欠陥に対してそれぞれ「C」または「D」を返さなければなりません。 例(競合します): function cooperate(them) { return 'C'; } function defect(them) { return 'D'; } function nice(them) { // Do whatever they would do when faced with a cooperator return …

14
ナノコア戦争
これは、20世紀に遡るプログラミングKOTH であるCore Warの適応です。具体的には、主に元の提案に基づいて非常に単純化された命令セットを使用しています。 バックグラウンド コア戦争には、コンピューターの制御のために戦っている2つのプログラムがあります。各プログラムの目標は、相手のプログラムを見つけて終了することで勝つことです。 戦闘はコンピューターのメインメモリ内で行われます。このメモリはコアと呼ばれ、8192個のアドレスが含まれています。戦闘が始まると、各競技者(戦士と呼ばれる)のコードがランダムなメモリチャンクに配置されます。プログラムの実行は戦士間で交互に行われ、それぞれ1つの命令を実行します。各命令はコアの一部を変更できるため、プログラムを自己変更する可能性があります。 目標は、対立するプログラムを終了することです。プログラムは、無効な命令(任意のDAT命令)を実行しようとすると終了します。 命令セット 各プログラムは一連の低レベルの命令で構成され、各命令はAおよびBフィールドと呼ばれる2つのフィールドを取ります。 この命令セットは、元の仕様から大きく引き出されます。主な変更点は、1)コマンドの追加/減算の明確化、および2)#どこでも使用できるようにするためのアドレス指定モードの変更です。Core Warsのほとんどのフルバージョンには、20を超えるオペコード、8つのアドレス指定モード、および「命令修飾子」のセットがあります。 オペコード 各命令には、7つの異なるオペコードのいずれかが必要です。 DAT A B-(データ)-これは単に数字Aとを保持しますB。重要なのは、DAT命令を実行しようとするとプロセスが停止することです。 MOV A B-(移動)-これにより、メモリ位置の内容がメモリ位置Aに移動しますB。以下は、前後のデモンストレーションです。 MOV 2 1 ADD @4 #5 JMP #1 -1 MOV 2 1 JMP #1 -1 JMP #1 -1 ADD A B-(追加)-これは、メモリロケーションの内容をメモリロケーションAに追加しますB。両方の最初の2つのフィールドが追加され、2番目のフィールドが追加されます。 ADD 2 1 MOV @4 #5 JMP #1 -1 ADD …

12
接続n時間!
https://en.wikipedia.org/wiki/Connect_Four 2プレイヤーゲーム接続4を覚えている人はいますか?そうでない人にとっては、表面に垂直に立っている6x7のボードでした。接続4の目標は、接続4です!接続は、水平、斜め、または垂直の場合にカウントされます。ピースをボードの上部に置くには、ピースをその列の一番下に落ちるようにボードの上部に置きます。ルールは、コネクト4で3つのことを変更します。 変更#1の勝ちは、最も多くのポイントを持つプレーヤーとして定義されます。ルールのように4をつなげることでポイントを獲得します-それについては後で詳しく説明します。 変更#2各ラウンドに3人のプレイヤーがいます。 変更#3ボードサイズは9x9です。 得点: スコアは、連続して取得する数に基づいています。行グループに4がある場合、1ポイントを獲得します。行グループに5がある場合、2ポイント、行3に6などが続きます。 例: 注意oとx置き換えられます#し、~より良好なコントラストのために、それぞれ 空のボードの例:(すべての例は2プレーヤーの標準サイズのボードです) a b c d e f g 6 | | | | | | | | 5 | | | | | | | | 4 | | | | | | | | 3 | | | | | …

27
*の通訳を書く
タスクは簡単です。言語*のインタープリターを作成します。 wikiへのより大きなリンクがあります。 有効なプログラムは3つだけです: * 「Hello World」を印刷します * 0〜2,147,483,647の乱数を出力します *+* 永遠に実行します。 3番目のケースは、この質問の仕様に従った無限ループでなければなりません 入力: 入力は、標準のI / Oルールで受け入れ可能な任意の入力方法で取得できます。 上記のプログラムのいずれかになります 出力: 最初のケースではHello World、末尾の改行の有無にかかわらず、正確に印刷する必要があります。 2番目の場合、言語の整数の最大値が2,147,483,647より小さい場合は、言語の整数の最大値を使用します 最初と2番目のケースは、標準のI / Oルールで受け入れ可能な出力に出力できます。 3番目のケースでは、出力は行われません。 得点: これはcode-golfであるため、バイト単位の最短回答が勝ちです。
20 code-golf  interpreter  code-golf  array-manipulation  sorting  code-golf  halting-problem  code-golf  javascript  code-golf  algorithm  code-golf  arithmetic  code-golf  math  counting  code-golf  math  code-golf  decision-problem  radiation-hardening  code-golf  conversion  bitwise  code-golf  number  decision-problem  code-golf  string  decision-problem  code-golf  random  game  code-golf  ascii-art  graphical-output  code-golf  decision-problem  binary-tree  tree-traversal  code-challenge  array-manipulation  code-challenge  graphical-output  path-finding  test-battery  algorithm  code-golf  integer  factorial  code-golf  binary-tree  code-golf  grid  graph-theory  code-golf  regular-expression  quine  code-golf  encoding  code-golf  king-of-the-hill  javascript 

19
反復囚人のトリレンマ
チャレンジステータス:オープン あなたのボットが見つからない場合は、コメントするか、PRを開くか、そうでなければ私に叫んでください。 囚人のジレンマ... 3つの選択肢。クレイジーだよね? ペイオフマトリックスは次のとおりです。左側のプレーヤーA、上部のB A,B| C | N | D ---|---|---|--- C |3,3|4,1|0,5 N |1,4|2,2|3,2 D |5,0|2,3|1,1 ペイオフマトリックスは、両方のプレイヤーが常に協力するのが最善であるように設計されていますが、(通常)ニュートラルまたはディフェクションを選択することで獲得できます。 次に、いくつかの(競合する)ボットの例を示します。 # turns out if you don't actually have to implement __init__(). TIL! class AllC: def round(self, _): return "C" class AllN: def round(self, _): return "N" class AllD: def round(self, …

5
Antichessをプレイ!
https://en.wikipedia.org/wiki/Losing_chess これは基本的にチェストーナメントですが、アンチチェス用です;) アンチチェスは、発明された多くのチェスのバリエーションの 1つです。目標は、すべてのピースを失うことです(これは少し奇妙に思えるかもしれませんが、理由によりアンチチェスと呼ばれます)。 ルール アンチチェスのルールは標準チェスと非常に似ていますが、いくつかのかなり小さな違いがあります。上記の目標は、すべてのピースを失うことです。これを実現するために、対戦相手が自分のピースの1つをキャプチャする機会がある場合、それは彼が行うことができる唯一の動きです。1ターンで彼に複数のチャンスを与えた場合、他のプレイヤーは自分のターンを選択できます。変更されたもう1つのことは、王には特別な力がないことです-あなたのように相手をチェックメイトすることができず、あなたに彼を強制的にチェックすることはできません。 標準ゲームに対する次の変更も適用されます(ゲームの簡素化に役立ちます)。 入場者は無視されます。 キャスリングはできません。 50手ルールは、(引き分けで試合終了を意味する)に自動的に適用されます。 ポーンは、昇格先を選択できます。 プレイヤーが移動するのに2秒以上かかる場合、ゲームに負けます。 無効な動きを返すと、ゲームに負けます。 勝つためには、対戦相手がすべてのピースをキャプチャする必要があります。 ホワイトがゲームを開始します。 白はフィールドの「下部」に配置され(y = 0)、黒は上部に配置されます(y = 7)。 ボット以外のリソース(インターネット、ファイル、他のボットなど)へのアクセスは禁止されています。 得点 勝つと3ポイント、引き分け1ポイント、0ポイントを失います。 各サブミッションは、他のサブミッションと10回対戦します(白で5回、黒で5回)。 ボットを書く コントローラーコードはこちら:https : //github.com/JJ-Atkinson/SimpleAntichessKOTH ボットはJavaまたはGroovyで作成できます。ボットを作成するには、Playerクラスを拡張する必要があります。プレーヤークラスには1つの抽象メソッドがありMove getMove(Board board, Player enemy, Set<Move> validMoves)ます。 便利なメソッドの簡単な概要を次に示します。 Player: List<Piece> getPieces(Board board):ボード上のすべてのピースを返却します。 PieceUpgradeType pieceUpgradeType:ポーンの1つがボードの最後に達した場合、これをアップグレードするピースのタイプに定義する必要があります。あなたは、の選択肢を持っているROOK、KNIGHT、QUEEN、BISHOP、とKING。 Board: Field getFieldAtLoc(Location loc):Fieldその場所に戻ります。これにはマッチングgetAt方法があるため、groovyを使用している場合は記述できますboard[loc]。 Field getFieldAtLoc(int x, int …

10
コイン投げ時間旅行者
将来的にはタイムトラベル(TT)が一般的になりますが、コイン投げは深刻な精神スポーツになります。将来に備えて、エントリーの観点から実際に時間旅行が行われるプログラムのコンテストを作成します。 競争は、Javaクラス間のコイン投げ試合で構成されるラウンドロビンスタイルのキングオブザヒルです。 コイン投げのルール 2人のプレイヤーと100ラウンドがあります。 ラウンドごとにコインが投げられ、その結果に基づいてプレイヤーの1人が1ポイントを獲得します。各プレイヤーは50%の確率でポイントを獲得できます。 投げた後、両方のプレイヤーはレバーを引いて時間を制御する機会があります。 青色のレバー(ストッパーを元に戻す)を引くと、レバーが使用されたラウンドまたはそれ以前のラウンドではTTを使用できません。TTがこれらのラウンドに行こうとしても効果はありません。 赤いレバー(リバーター)を引くと、時間を元のラウンドに戻そうとします。成功した場合、対戦相手の記憶は、選択されたラウンドの前に記憶に戻され、選択されたラウンドから始まるコイントスの結果も削除されます。TTに関して対戦相手に可能な唯一の兆候は、元に戻されない未使用のレバーの数です。 各プレイヤーには、試合開始時に5個の青と20個の赤の未使用レバーがあります。これらのレバーはTTの影響を受けません。 100ラウンドの終了時にTTが発生しない場合、ゲームは終了し、スコアの高いプレイヤーが勝ちます。 詳細 ラウンドには1から始まるインデックスがあります(フォーム1から100)。 ラウンドの前にx、利用可能な青と赤のレバーの数が提供され、コインが投げられるまでx(最後を含む)、最後のx-1ラウンドのメモリがトスされます。 ラウンドで青色のレバーを引くと、xラウンドx前またはラウンド前に目的地があるTTが停止します(同じ正確なラウンドでもTTがブロックされる)。 ラウンドに戻すxことは、次のラウンドがラウンドになることを意味しxます。 両方のプレイヤーがラウンドの終わりに復帰することを選択した場合、時間はブロックされていない以前の目的地に戻ります。この時間に戻ろうとしたプレーヤーは記憶を保持します。 技術的な詳細 提供されたBotインターフェイスを実装するJavaクラスを作成する必要があります。 ボットをプロジェクトに追加します。 Botファイルのにボットのインスタンスを追加しますController.java。 クラスは、呼び出し間で情報を保持するべきではありません。(ほとんどの場合final、関数の外部に変数のみがあると、この要件が満たされます。) memory返されたActionオブジェクトのフィールドでコントローラーに情報を提供できます。TTが発生しなかった場合、これは次のターンに返されます。TTが発生した場合、対応する以前のメモリを受け取ります。 クラスのtotalScore()メソッドを使用してGame、履歴文字列のスコアを取得できます。 プロトコル 毎回、takeTurn(...)メソッドは5つの引数で呼び出されます。 未使用の青いレバーの数 未使用の赤いレバーの数 コイン投げの履歴、1と0で構成される文字列は、前のラウンドでの勝敗を示します。最初のキャラクターは、最初のコイン投げに対応しています。(最初のラウンドでは、文字列の長さはになります1。) 文字列、前のラウンドで保存されたメモリ このラウンドの1から始まるインデックス 毎回、メソッドは以下Actionを含むオブジェクトを返します moveアクションを説明するフィールドの整数: 0 何もしない -1 青いレバーを引いて、TTがこのラウンドを通過するのをブロックします x赤いレバーを引いてラウンドに戻ろうとする現在のラウンドよりも大きくない正の整数x 無効な整数はとして扱われ0ます。 保存したいこのラウンドのメモリを含む文字列。メモリの保存は、チャレンジの重要な部分ではないことに注意してください。文字列に有用なデータを保存せずに、適切なエントリを作成できます。最初のラウンドでは、文字列は空の文字列になります。 あなたの方法は、試合の平均でラウンドごとに10ミリ秒以上かかることはありません。 定期的に時間制限に違反すると、失格となります。 得点 試合に勝つと2ポイントが得られ、引き分けは両方のプレイヤーに対して1ポイントを獲得します。損失は​​ポイントを獲得しません。 ボットのスコアは、収集したポイントの総数になります。 競技者の各ペア間でプレイされる試合の数は、エントリーの数とスピードに依存します。 2つの簡単なボットの例が回答として投稿されています。 コントローラーと最初のカップルのボットはこちらから入手できます。 11月3日までに送信されたボットのテスト結果: 合計スコア: Oldschool: …

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 …

28
逆モジュラスを計算する
タスク: の値を出力します。xここでa mod x = b、2つの値がありますa,b。 仮定 aそして、b常に正の整数になります 常に解決策があるとは限りません x 複数のソリューションが存在する場合は、少なくとも1つを出力します。 解決策がない場合は、何も出力しないか、解決策が存在しないという兆候を出力します。 組み込みが許可されています(他の数学的アプローチほど面白くありません) 出力は常に整数です 例 A, B >> POSSIBLE OUTPUTS 5, 2 >> 3 9, 4 >> 5 8, 2 >> 3, 6 6, 6 >> 7, (ANY NUMBER > 6) 8, 7 >> NO SOLUTION 2, 4 >> NO …
18 code-golf  math  number-theory  code-golf  number  integer  code-golf  string  code-golf  music  code-golf  arithmetic  array-manipulation  decision-problem  code-golf  math  rational-numbers  code-golf  code-golf  graphical-output  hardware  code-golf  math  number  code-golf  string  parsing  natural-language  code-golf  tips  brain-flak  code-golf  graph-theory  code-golf  number  polynomials  king-of-the-hill  code-golf  ascii-art  kolmogorov-complexity  animation  king-of-the-hill  code-golf  tips  code-golf  ascii-art  code-golf  string  array-manipulation  data-structures  code-golf  math  number  code-golf  string  base-conversion  binary  code-golf  decision-problem  graph-theory  code-golf  math  polynomials  code-golf  kolmogorov-complexity  physics  code-golf  sequence  number-theory  code-golf  math  integer-partitions  code-golf  array-manipulation  random  permutations  code-golf  string  decision-problem 

6
戦車戦争をしましょう!
戦車戦争をしましょう! レーザーでそれらを破壊することに部分的に触発された 目的 あなたの仕事は戦車を制御することです。2D戦場で動き回り、他の戦車や障害物を撃ちます。最後の戦車が勝者になります! マップ形式 あなたの戦車は、単位正方形のnby nグリッドに基づく2Dフィールドにあります。n提出物の数に基づいて何を決定します。各正方形には、次のうち1つのみを含めることができます。 タンク 木 岩石 壁 なし すべての障害物と戦車はそのスペースを完全に埋め、それらが命中したすべてのショットがさらに物事にダメージを与えないようにします。 #= tank を使用したフィールドの例を次に示します。T= tree; R=ロック; W=壁; .== n10で何もない .....#.... ..T....R.. WWW...WWWW W......T.. T...R...Ww W...W..... W....W...T WWWWWW...R W......... WWWWWWRT.. 座標は、左から右に増加し、下から上x, yにx増加する形式ですy。左下のスペースには座標があり0, 0ます。各タンクは空いているスペースに移動して、あらゆる方向に射撃できます。 マップダイナミクス あなたの戦車は他の戦車を撃つだけではありません!マップ上で何かを撮影すると、事態が発生する可能性があります。 壁が撃たれた場合、1から4の範囲のいくつかのショットの後、壁は破壊されます。 木が撃たれた場合、すぐに破壊されます 岩が撃たれた場合、そのショットはそれを通り過ぎ、次に当たるものにダメージを与えます 何かが破壊されると、それはもはやマップ上にありません(何も置き換えられません)。ショットが障害物を破壊した場合、それはブロックされ、そのパスに沿ってそれ以上の損傷はありません。 タンクダイナミクス 各タンクはlife= 100で始まります。タンクでの各ショットは、life距離に基づいて20〜30減少します。これはdelta_life=-30+(shot_distance*10/diagonal_map_length)(diagonal_map_lengthが(n-1)*sqrt(2))で計算できます。さらに、各戦車はlife1ターンにつき1回再生します。 ターン いくつかのラウンドが実行されます(提出したら決定します)。すべてのラウンドの開始時に、マップがランダムに生成され、タンクがランダムな空の場所に配置されます。すべてのラウンドで、各タンクには任意の順序でターンが与えられます。すべての戦車にターンが与えられた後、同じ順番で再びターンが与えられます。ラウンドは、タンクが1つだけになるまで続きます。その戦車が勝者となり、1ポイントを獲得します。その後、ゲームは次のラウンドに進みます。 すべてのラウンドが実行されたら、この質問のスコアを投稿します。 戦車のターン中、次のいずれかを実行できます 水平または垂直のいずれかの方向に最大3スペース移動します。タンクが障害物または別のタンクによってブロックされている場合、障害物またはタンクを通過せずに可能な限り移動されます。 浮動小数点の角度(度単位)で表されるある方向で撮影します。戦車のローカルスペース(水平に左から右、別名東またはTurnAction.Direction.EAST)のx軸は0度で、角度は反時計回りに増加します。ショットは不正確であり、ショットの実際の角度は、選択した角度より5度大きい場合も小さい場合もあります。 何もしない。 …

6
スライム:領土戦争
あなたはスライムの塊です。当然、スライムであるため、できるだけ多くのエリアに滲み出します。しかし、まったく同じことをしたい3つのスライムがいます。誰が優れたスライムになりますか? 説明 すべてのスライムは1つのアリーナに集められます。審査員(つまり、制御プログラム)は、考えられるすべての4スライムの組み合わせの網羅的なリストを調べ、それらをテーブルの隅に置き、どのスライムがほとんどのエリアに滲み出るかを観察します。 スライムは、各ターンで3つのアクションのいずれかを実行できます:展開、ジャンプ、またはマージ。これらの意味の詳細については、出力セクションで説明します。 ボード/アリーナ アリーナは正方形のボードになります(現在は8x8ですが、これは将来変更される可能性があります)。進行中のゲームのアリーナの例を次に示します。 11111222 11111444 11.22444 .1222.4. 333.3244 33333.44 333...44 333....4 スライムは1〜4の数字(プレイヤー1〜4)で表され、空きスペースはドット(.)で表されます。最初に、ボードは、左上隅のプレーヤー1のスライム、右上のプレーヤー2、左下のプレーヤー3、右下のプレーヤー4を除くすべての空きスペースとして開始します。 座標は、コードを読みやすくするために、0から始まる行と列のインデックスで表されます。たとえば、座標(3、6)は、4行目の7番目の正方形(上の例ではa 4)を表します。(これにより、正方形へのアクセスが簡単になりますboard[coords.x][coords.y]。)以下に視覚的な図を示します。 (0, 0) (0, 1) (0, 2) (1, 0) (1, 1) (1, 2) (2, 0) (2, 1) (2, 2) 入力 プログラムの入力は、プレイヤー(1、2、3、または4)、コンマ(,)、ボード/アリーナのコンテンツ(改行をコンマに置き換えたもの)です。たとえば、上記のシナリオでプレイヤー3だった場合、入力は次のようになります。 3,11111222,11111444,11.22444,.1222.4.,333.3244,33333.44,333...44,333....4 出力 プログラムは4つの整数を出力する必要があります。最初の2つは、移動するスライムの行と列のインデックスであり、次の2つは、移動するスライムの行と列のインデックスです。 各ターンには3つの選択肢があります。スプレッド、ジャンプ、マージです。 展開する 拡散するには、ターゲット座標は移動するスライムから正確に1正方形離れている必要があり、ターゲット座標の正方形は空のスペースである必要があります。拡散すると、新しいスライムがターゲット座標に作成され、古いスライムは削除されません。新しいスライムが作成された後、この新しいスライムの周囲の8マスにあるすべての敵スライムは、移動したプレイヤーに変換されます。 たとえば、図1のボードでは、プレーヤー1が出力する0 1 1 2場合、結果は図2のボードになります。 1. 2. 11.22 …

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