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

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

4
キングオブザヒルボットのヒント
キングオブザヒルチャレンジに参加するボットを作成するための一般的なヒントは何ですか?チャレンジを検討してからボットを作成するまでの戦略は何ですか?どのデータ構造が最も便利だと思いますか? 回答ごとに1つのヒントを投稿してください。

1
有効な迷路の数
与えられたWxHグリッドを、どのように多くの可能な迷路がありますか? 迷路について知っていること: グリッドのH高さは正確に正方形で、W幅は正方形です。 開始、終了、空の3つのタイプの正方形があります。迷路には、開始と終了がそれぞれ1つだけ含まれている必要があり、残りのすべての正方形は空です。 迷路全体を囲む壁があります。 以下の規則に違反しない限り、壁は任意の2つの正方形の間のエッジに存在できます。 開始広場から終了広場までのパスが存在する必要があります。 したがって、との2つの数値を指定するWとH、可能な正方形/壁構成の数を表す単一の数値を返す必要があります。あなたは保証されていますW*H > 1 たとえば、2x2迷路の100構成はまったく異なります。 これはコードゴルフなので、最短の答えが勝ちです!

5
リスク、Warlight Way
前書き このゲームでは、プレイヤーは自分の軍隊を使用して他のプレイヤーの軍隊と戦い、領土を占領し、最後の男になります。各ターンで、プレイヤーは基本数の軍隊を受け取り、自由に使用できます。ただし、特定の地域の領土をキャプチャすることで、プレイヤーはこの数を増やして、ゲームの後半で潜在的な利点を与えることができます。(これは基本的にWarlightと同じです)。 すべてのボットは、Java、C、またはC ++で作成する必要があります(他の言語も含めますが、ソフトウェアや経験はありません)。サブミッションでクラスを拡張する必要はありません。関数、クラス、インターフェイスなど、必要なものを作成し、標準 APIのパッケージまたはクラスを使用できます。クラスまたはインターフェイスの作成を計画している場合は、内部クラスまたは内部インターフェイスの使用を検討してください。 このコンペティションのコントローラーまたは他の提出物をプログラムで変更しようとしないでください。 ゲームプレイ 概要 10x10の2次元配列は、各要素/セルが「領域」を表すボードをシミュレートします。20ラウンドがあり、ラウンドごとに最大1000ターンがあります。各ターンでは、プレイヤーはまず所有している地域のいずれかに軍隊を配備し、次に、自分の軍隊を攻撃して敵の領土を占領するために、近くの領土に軍隊を輸送する機会を与えられます。プレイヤーはすべてを展開する必要がありますの軍隊をますが、必要に応じて移動する必要はありません。 軍隊の攻撃/移送 プレイヤーが望むなら、彼/彼女は1つの領域から8つの隣接する領域のいずれかに軍隊を送ることができます。ボードは「ラップアラウンド」します。つまり、プレイヤーの領域が一方の側にある場合、そこからの軍隊は反対側の隣接する領域に移動できます。軍隊を領土から移動させる場合、その領土には少なくとも1つの軍隊が残っている必要があります。たとえば、テリトリーに5つの軍隊が含まれる場合、異なるテリトリーに移動できるのは4つまでです。領土に領土が含まれている場合、その軍隊は移動できません。 プレイヤーnが所有する領土から別の領土に軍隊を送った場合、その領土はn軍隊を受け取ります。 プレイヤーがn自分の領土からo軍隊を含む敵の領土に軍隊を送ったとしましょう。最も近い整数に丸められてo減少しn * .6ます。ただし、同時に、最も近い整数に丸められてn減少しo * .7ます。敵の領土が占領されているかどうかに関する次の規則が適用されます。 場合oに達するがゼロn0より大きい場合、プレイヤーが持っているであろう、領土を引き継ぎますnことに軍隊を。 両方の場合nとo、ゼロになりますo自動的に1に設定され、領土をキャプチャされません。 o0よりも大きい場合、プレイヤーの領土内の軍隊の数は増加しn、敵の領土は占領されません。 ボーナス ボーナスを表すために、テリトリーのグループが選択されます。1人のプレイヤーがグループの一部であるすべての領土を所有している場合、そのプレイヤーはターンごとに追加の軍隊を受け取ります。 ボーナスには、プレーヤーが受け取ることができる追加の軍隊を表すさまざまなIDと値を示すID番号があります。各ラウンドでは、ボーナスの値は5〜10の乱数で、フィールドには10のボーナスがあり、それぞれに10のテリトリーが含まれています。 たとえば、1ターンに5つの軍隊を受け取るプレーヤーが、値8のボーナスを構成するすべての領域を所有している場合、そのプレーヤーは次のターンと後続のターンに13の軍隊を受け取ります。ただし、プレイヤーがボーナスを構成する1つまたは複数の領域を失った場合、彼または彼女は1ターンあたりわずか5軍を受け取ります。 入出力 プログラムは、次の形式のコマンドライン引数を使用して入力を受け取る必要があります。 [id] [armies] [territories (yours and all adjacent ones)] [bonuses] ["X" (if first turn)] idそしてarmies両方とも整数です。idあなたのIDでありarmies、あなたの領土に展開する必要がある軍隊の数です。与えられたすべての軍隊を配備する必要があります-これ以上でもそれ以下でもありません。 territoriesは、所有している地域と、所有していない地域に隣接する、所有していない地域を表す一連の文字列です。文字列は次の形式です。 [row],[col],[bonus id],[player id],[armies] rowそしてcol領土がボードの行と列を示し、bonus idこの領域がその一部となっているボーナスのIDであり、player id領土を所有しているプレイヤーのID、およびarmies地域に含まれる軍隊の数です。これらはすべて数字です。 bonusesあなたが利用できるボード上のボーナスを表す一連の文字列です。文字列は次の形式です。 [id],[armies],[territories left] …
12 king-of-the-hill  c  c++  java 

5
旗を取れ
これは、赤対青-Pixel Team Battlebotsに大きく影響を受けた旗をキャプチャするゲームです。それは素晴らしい質問でした(Calvin'sHobbiesに感謝します;私が恥知らずにあなたから多くのコードを盗んだことを気にしないことを願っています)-ここに別のチームベースのキングオブザヒルがあります。願わくば、旗を掴むには、より多くのチームの協力とより多くの戦略が必要になるでしょう。 あなたのIDの最後の桁が間にある場合はそれをミックスするために、あなたは赤チームに考えられている0と4包括的。これにより、同じ人が答えることを決めた場合、まったく同じチームが再び戦うのを防ぐことができます。ボードがある350pxで350px。青いチームはボードの上半分から始まり、赤いチームは下半分から始まります。 フラグをキャプチャするプレイ方法は次のとおりです。ゲームの目的は、相手チームのフラグを取り、自分の側に戻すことです。あなたが彼らの側にいるなら、あなたはタグを付けられ、刑務所に送られます。刑務所にいる場合は、移動できません。あなたが味方である場合、あなたの仕事は彼らを刑務所に送るために敵対するチームメンバーにタグを付けることです。刑務所から抜け出す唯一の方法は、あなたのチームの誰かが刑務所にいる全員に自由にタグを付けることです。(刑務所は相手チームの側にあることに注意してください)。 具体的には: FIELD_PADDING20に設定された定数があります。これは、フィールドのパディングです。ゼロの場合、フラグと刑務所はキャンバスの隅に正確にあります。そうではないので、旗と刑務所は角から20ピクセル離れています。 青旗(青チームは上半分)が(WIDTH - FIELD_PADDING, FIELD_PADDING) = (330, 20)右上隅にあります。 赤い旗は (FIELD_PADDING, HEIGHT - FIELD_PADDING) = (20, 330) 青い刑務所(赤いメンバーがいる場所)は、(20, 20)青い側、左上にあります。 青いメンバーが保管されている赤い刑務所は (330, 330) すべてのチームメンバーがランダム位置から開始45 < x < 305し、45 < y < 175青用と175 < y < 305赤のために。チームメンバーDEFENSE_RADIUS = 25は、自分の旗や自分の刑務所のピクセル内に入ることはできません(もちろん、自分の旗が相手のボットに奪われた場合を除き、その場合、そのボットにタグを付ける必要があります)。これは、ボットのような子犬の保護を防ぐためです。その範囲内に入ると、「プッシュ」されます。同様に、チームメンバーは範囲外(0未満または350以上)に行くことはできません。その場合、できる限り近くの合法的な場所に押し戻されます。 移動するたびに使い果たしますstrength。でstrength開始し、すべてのターンで20補充さ2れます。使用する強さの量は、移動距離に等しくなります。特定の場所に移動することによってあなたの力が負になる場合、その移動を行うことはできません。2通常の追いかけの速度で移動することをお勧めします。勝ちに近づいていて、追加の速度が必要な場合にのみ、より高い速度を使用する必要があります(私の意見では)。 スペック: 仕様は、Pixel Team Battlebotsの質問に非常によく似ています。javascriptでコードブロック(グローバル変数なし)を記述する必要があります。xとyの値の変化を表すx-valueとy-valueを持つオブジェクトを返す必要があります。次の答え: return { x: …

8
水風船戦争
このキングオブザヒルゲームは戦略ゲームであり、水風船を投げて水が飛び散らないようにする必要があります。目標は、ほとんどのポイントを獲得することです。フィールドの地図と水風船の位置が表示されます。特定の方向に水風船にぶつかる(十分近い場合)か、特定の方向に移動したいのかを返すことができます。 具体的には、水風船は (0, 0) 30ユニットの高、落下します。水風船が地面に当たった場合、プレーヤーはランダムに4ポイントを失うように選択され、風船に近い人により大きな重みが与えられます。さらに、バルーンを最後に打ったプレーヤーは3ポイントを獲得します。したがって、風船を真下に当てると、1ポイントを失う可能性が高くなります。 拡張するクラスを作成しますPlayer。コンストラクターを実装する必要があります。コンストラクターは次のようになります。 public Player1() { super(/* Some numbers */ 3, 3, 4) } これらの番号はdoublesです。最初の数字はプレイヤーの速度を表し、2番目の数字は強さを表し、3番目の数字は運を表します。合計は10以下である必要があり、ゼロ以下の数値は使用できません。 第二に、あなたは実装する必要があります moveメソッドを。これはmoveメソッドの例です: @Override protected Action move(Map<Player, Point2D> map, Balloon b) { // Get my own location Point2D myself = map.get(this); // If I'm close enough to the balloon // then hit the …

2
マイニングロボットを構築する
あなたのプログラムは、貴重な鉱物を地下で検索する採掘ロボットを制御します。ロボットは、移動して掘りたい場所をコントローラーに伝え、コントローラーはロボットの状態に関するフィードバックを提供します。 最初に、いくつかの採掘シャフトがすでに存在する鉱山のイメージマップと、鉱山内の鉱物の値と硬度を指定するデータファイルがロボットに提供されます。次に、ロボットがシャフトを移動して、採掘する貴重な鉱物を探します。ロボットは地球を掘ることができますが、ハードロックによって速度が低下します。 24時間のシフトの後、最も価値のある貨物で戻ってくるロボットが勝者になります。複雑な課題のように思えるかもしれませんが、基本的なマイニングロボットを作成するのは簡単です(以下のサンプルマイニングロボットの回答を参照)。 操作 プログラムは、鉱山の画像、鉱物のデータ、および機器のファイル名を使用して、コントローラーによって開始されます。ロボットは、鉱山の画像と鉱物のデータを使用して貴重な鉱石を見つけ、硬い岩を避けます。ロボットは、機器リストから機器を購入することもできます。 例えば: python driller.py mineimage.png minerals.txt equipmentlist.txt 2秒間の初期化期間の後、コントローラーはstdinおよびstdoutを介してロボットプログラムと通信します。ロボットは、ステータスメッセージを受信して​​から0.1秒以内にアクションで応答する必要があります。 コントローラーは毎ターン、ロボットにステータスラインを送信します。 timeleft cargo battery cutter x y direction 例えば: 1087 4505 34.65 88.04 261 355 right 整数timeleftは、シフトが終了するまでのゲームの秒数です。これ cargoは、これまでに採掘した鉱物の整数値から、設備に支払った金額を差し引いたものです。batteryレベルは、あなたのバッテリ残量の整数割合です。cutter整数レベルが基準値のパーセンテージとしてカッターの現在の鮮鋭度です。xそしてy値が(0、0)に左上隅から参照ロボット位置との正の整数です。方向は、ロボットが向いている現在の方向(左、右、上、下)です。 ロボットが「エンドシフト」または「失敗」の入力を受け取ると、プログラムはすぐに終了します。ロボットがデバッグ/パフォーマンスデータを最初にファイルに書き込むようにすることができます。 コントローラが受け入れる4つの可能なコマンドがあります。direction left|right|up|downその方向にロボットを向け、15ゲーム秒を必要とします。move <integer>ロボットにその数のユニットを前方に移動または掘るように指示します。これは、切断される鉱物の硬度とカッターの鋭さに応じて時間がかかります(以下を参照)。buy <equipment>指定された機器を設置し、貨物の値からコストを差し引きますが、これはロボットが水面にある場合のみです(y値<=開始y値)。機器の設置には300ゲーム秒かかります。特別なコマンドsnapshotは、現在の地雷イメージをディスクに書き込み、ゲーム時間はかかりません。スナップショットを使用して、ロボットをデバッグしたり、アニメーションを作成したりできます。 ロボットは、100個のバッテリーと100個のカッターシャープネスで起動します。移動と旋回には、少量のバッテリー電力が使用されます。掘りははるかに多くを使用し、鉱物の硬度とカッターの現在の鋭さの関数です。ロボットが鉱物を掘ると、時間と鉱物の硬さに応じて、カッターの鋭さが失われます。ロボットが十分な貨物価値を持っている場合、新しいバッテリーまたはカッターを購入するために地表に戻ることがあります。高品質の機器の初期有効性は100%を超えることに注意してください。バッテリーの名前には「battery」という文字列があり、(サプライズ)カッターの名前には「cutter」があります。 次の関係は、移動と切断を定義します。 timecutting = sum(hardness of pixels cut) * 100 / cutter cutterwear = 0.01 …

2
nを法とする数論のインタープリター
(私たちの目的のための)数論の文は、次の記号のシーケンスです。 0および'(後継者)-後継者は+1、0'''' = 0 + 1 + 1 + 1 + 1 = 4 +(加算)と*(乗算) = (に等しい) (と)(括弧) 論理演算子nand(a nand bis not (a and b)) forall (ユニバーサル数量詞) v0、v1、v2、など(変数) ここに文の例があります: forall v1 (forall v2 (forall v3 (not (v1*v1*v1 + v2*v2*v2 = v3*v3*v3)))) ここでnot xは省略形ですx nand x-実際の文が使用する(v1*v1*v1 + v2*v2*v2 = v3*v3*v3) nand …
12 code-golf  number-theory  parsing  code-golf  kolmogorov-complexity  code-golf  code-golf  array-manipulation  matrix  code-golf  array-manipulation  code-golf  string  code-challenge  graphical-output  compression  code-golf  kolmogorov-complexity  code-golf  sequence  array-manipulation  code-golf  number  base-conversion  code-golf  string  decision-problem  code-golf  string  ascii-art  code-golf  string  random  code-challenge  brainfuck  code-generation  code-golf  code-golf  quine  code-golf  interpreter  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 

9
ホワイトエレファントエクスチェンジ
7月のクリスマスです。だから、仮想の白い象のギフト交換よりも良いお祝いの方法です。 このキングオブザヒルチャレンジでは、ホワイトエレファントエクスチェンジシミュレーションで遊ぶボットを作成し、可能な限り最高のプレゼントを獲得する必要があります。 ゲームのルール ゲームは多くのラウンドでプレイされ、各ラウンドは可変数のターンで構成されます。 ラウンド設定:ゲーム内のプレイヤーと同じ数のプレゼントがあり、それぞれが範囲[0 ... 1)でランダムに均一に評価されます。この値は、プレゼントが「開かれる」まで不明です。プレイヤーはランダムな順番でキューに入れられます。最初のプレーヤーがキューの先頭からポップされます。 プレイヤーのターンのとき、彼らはプレゼントを開くか、他のプレイヤーのプレゼントを盗んで、プレゼントが盗まれたプレイヤーにターンを渡すことができます。 各プレゼントは最大3回盗まれます。 盗まれたプレイヤーから盗むことはできません。 各プレーヤーは、一度に1つのプレゼンスしか持てません。 プレゼントが開かれた後、プレイはキューの先頭からポップされた次のプレイヤーに進みます。これは、まだ順番が来ていない次の順番​​のプレイヤーになります。 ラウンド終了:すべてのプレゼントが開かれると、ラウンドが終了し、各プレイヤーが保持しているプレゼントの値がそのプレイヤーのスコアに加算されます。新しいラウンドが始まり、各プレイヤーは現在何も持っておらず、プレイヤーの順番はシャッフルされます。 ゲームの終了:少なくとも1人のプレイヤーが100 500ポイントを獲得すると、ゲームは終了し、プレゼントの合計値が最も高いプレイヤーに勝利が与えられます。 コーディング すべての提出物はPython 3.7と互換性がある必要があります。から直接継承するクラスを作成する必要がありますWhiteElephantBot。例えば: class FooBot(WhiteElephantBot): # Your implementation here ボットクラスで__init__メソッド(引数を1つ取るname)を提供できます。このメソッドはを呼び出す必要がありますsuper().__init__(name)。クラスにはtake_turn、この順序で次の引数を受け取るメソッドが必要です。 players:まだプレゼントを持っていないすべてのプレイヤーの順番でのプレイヤー名のリスト。 presents:プレーヤー名を2タプルにマップする辞書。このタプルには、そのプレーヤーが保持している現在の値と、現在の盗まれた回数が含まれています。これには、現在プレゼントを持っている他のプレイヤーのみが含まれます。 just_stole:最後に行われたアクションがスチールであった場合、これは盗んだプレーヤーの名前になります。そうでない場合は、になりますNone。 各引数は不変または新しいオブジェクトであるため、それらのいずれかを変更してもゲームに影響はありません。必要に応じて、任意の引数のコピーを保持できます。 以下の値の例presents: { 'Alice': (0.35, 0), 'Bob': (0.81, 2), 'Charlie': (0.57, 1) } あなたのtake_turn方法はあなたから盗むしたり、希望するプレイヤーの名前を返す必要がありますNone存在を開くことを。例外を発生させstrたりNone、または以外の何かを返したり、盗むことができないプレーヤーの名前を返したりした場合、デフォルトでプレゼントを開きます。 コンストラクタは各ラウンドの開始時に呼び出されるため、ラウンドごとに状態を覚えることはできません。 から継承することにより、WhiteElephantBot現在のsteal_targets辞書を取得し、just_stole盗むことができるプレイヤーの名前のリストを返すメソッドにアクセスできます。 スクリプトに必要なモジュールは、エントリの一番上にインポートする必要があります。 テストドライバー テストドライバーはこちらにあります。from white_elephant import WhiteElephantBot投稿された回答に含める必要はありませんが、ローカルモジュールで行う必要があります。 …

2
キャメルアップカップ:AIボードゲームトーナメント
キャメルアップカップ2k18 このチャレンジでは、半人気のボードゲームCamel Upをプレイします。 キャメルアップ!ラウンドに勝つ、ゲームに勝つ、またはゲームに負けるためにラクダに賭けているプレイヤーがいるボードゲームです。これらの決定のそれぞれは、いくらかのお金を得るチャンスであなたに報酬を与えます、それは勝者を決定するものです。プレイヤーは、確率、ゲームの状態、および対戦相手のテナントを使用して決定を下す必要があります。これはプレイヤーがプレイする方法を示す短いビデオです。 遊び方 プレイ方法の大まかなアイデアを以下に示します。ビデオのいずれかを見ると、視覚効果があるため、より役立つ場合があります:) あなたの番には4つの選択肢があります。 ラクダを動かします。これは、移動していない人からラクダを選び、1〜3スペース間で移動します。あなたは1コインを取得します。5頭すべてのラクダが移動するとラウンドが終了し、その後すべて移動できます トラップを配置します。これはラウンドの終わりまでボードに残ります。+ 1 / -1トラップを選択します。ラクダまたはラクダのスタックがその上に着地した場合、それらは+ 1 / -1移動し、コインを受け取ります。正方形0にトラップを配置することはできません。ラクダがいる場所にトラップを配置することはできますが、その後に着くラクダにのみ影響します。 ラウンド勝者の賭け。ラウンドの勝者に賭けます。あなたは、あなたがそのラクダに賭ける1/2/2/3であるかどうかに応じて5/3/2/1を獲得します。 ゲームの勝者/敗者。ゲームの最後に誰が最初か最後かを賭けます。あなたがそのラクダに賭けたのが1/2/2/3だったかどうかに基づいて8/5/3/1/1(私は思う)を得る ノート: 5匹のラクダがいます。0から2までの位置からランダムに開始します。 ラクダを動かすと(これをトリガーするものについては上記を参照)、1〜3マス移動します。それらが別のラクダと正方形に配置される場合、それらは他のラクダの「上」に配置され、ラクダスタックが作成されます。ラクダが移動する場合は、ラクダスタック上でラクダの上にあるすべてのラクダを移動します。スタックの最上部にあるラクダが先頭にいると見なされます +1トラップに着地した場合(これをトリガーするものについては上記を参照)、1マス先に移動します。標準のスタッキングルールが適用されます。 ただし、-1トラップをヒットすると、1マス後ろに移動します。あなたは行くの下であれば、その広場にあるラクダのスタック。 ラクダがスクエア16に達すると、ゲームは終了します。これにより、ラウンドエンドとゲームエンドトリガーが直ちに呼び出されます。 ゲームの勝者/敗者のベットは、ラクダごとに1回のみ行うことができます。つまり、あなたが勝つためにラクダに賭けることができないとゲームを失います チャレンジ この課題では、4人のプレーヤーをプレイするPython 3プログラムを作成し、勝者はCamel Upのすべての栄光のゲームを取ります あなたのプログラムは以下を含むゲームステートを受け取ります: camel_track:ラクダの位置 trap_track:トラップの場所([trap_type(-1,1)、player]の形式のエントリ) player_has_placed_trap:プレイヤーがこのラウンドでトラップを配置したかどうかを通知する配列 round_bets:このラウンドで行われたベットの配列。フォームの[キャメル、プレーヤー] game_winner_bets / game_loser_bets:ラクダがゲームに勝つか負けるために作られたベットプレイヤーの配列。ベットしたプレイヤーではなく、ベットしたプレイヤーの価値のみを見ることができます。あなたは誰に賭けているかを知ることができます。#フォーム[キャメル、プレーヤー] player_game_bets:game_winner_bets / game_loser_betsの別の表現。繰り返しますが、ボットが行った賭けだけを見てください。 player_money_values:各プレイヤーが持っている金額を示す配列。 camel_yet_to_move:ラクダがこのラウンドを移動したかどうかを示す配列。 ゲームステートの上部には次のものもあります: player:プレーヤー番号(0〜3)を示す整数。 プレイヤーが返すものの構文は次のとおりです。 [0]:キャメルを移動 [1、trap_type、trap_location]:トラップを配置 [2、projected_round_winner]:ラウンド勝者のベットをする [3、projected_game_winner]:ゲームの勝者を賭ける [4、projected_game_loser]:ゲーム敗者のベットをする これはmove(player、gamestate)メソッドでラップする必要があります …

11
ロケットボットKOTH
ロケットボット 年は3024です。人々は戦争で危険にさらすにはリソースが不足しているため、戦闘はロボットに移行しました。あなたの仕事は、他に類を見ないボットを構築することです。誰のロケットが敵に破壊を降らせ、入ってくるすべての脅威を撃ち落とします。 ゲームプレイ ボット ゲームプレイは10x15グリッドで行われます。ボットは下端から外れており、グリッドのスポット6、7、8に3つのスロットがあります。対戦相手はグリッドの一番上にあり、3つのスロットがあなたの真向かいにあります。 ロケット これらのスロットのいずれかから、スロットが破壊されていないと仮定してロケットを発射できます。ロケットは、作成時に与えられる方向のリストで構成され、一度発射されると、これらの方向は変更できません。毎ターン、ロケットはリストの一番上を消費し、その方向に移動します。ロケットは同時に移動します。2つのロケットが同じタイルで終わる場合、両方とも爆発します。ロケットがコマンドを使い果たすと、爆発します。ロケットが燃料を使い果たすと、100回移動した後に爆発します。ロケットが爆発すると、5ターンの間そのタイルにとどまり、そこに移動する他のロケットも爆発します。 注: 同時移動のため、2つのロケットが同じタイルで両方のターンを終了しない限り、2つのロケットは爆発することなく互いに通過できます。 ゴール 各試合の目標は、対戦相手のスロットを破壊することです。ロケットは、お持ちのどのライブスロットからでも発射でき、発射前に指定されたパスが与えられます。1ターンごとにロケットを発射します。つまり、ロケットが2回移動してから、別のロケットを発射できます。決闘は200ターン、または1つのボットスロットがすべて破壊されるまで続きます。 得点 試合の終わりに、あなたはあなたが持っている各ライブスロットに対して1ポイントを獲得し、あなたが破壊した各対戦相手スロットに対して1ポイントを獲得します。つまり、ゼロサムゲームであり、各試合で6ポイントが与えられます。 ラウンドロビンが実行され、各ボットが1つずつ互いにボットに向かいます。ボットがRNGを使用する場合、各対戦は1000デュエルになります。 実装 コンテストのコードは、https://github.com/Cain93/RocketBotsにあります。 提出ごとにBotクラスを拡張する必要があります。fireRocketメソッドをオーバーライドする必要があります。このメソッドはRocket[][]、ゲームボードを表すRocketsのグリッド配列を受け取ります。あなたは、常にスポットのスロットに、グリッドの下部に位置しています[-1][6]、[-1][7]、[-1][8]。グリッドでは、空いているスポットはで表されnullます。タイル内にロケットが存在する場合、disフィールドにアクセスすることでロケットが誰であるかを特定できます。「^」はロケット、「v」は対戦相手です。 ロケットの指示を与える整数のLinkedListを返す必要があります。上に移動するには、0を使用します。上下に移動するには、1を使用し、右に2を使用します。ロケットは、整数を押した順に移動します。たとえば、次のコードはロケットを数回転上方向に移動させ、数回転ジグザグにしてから爆発させます。 LinkedList<Integer> moves = new LinkedList<Integer>(); moves.push(0); moves.push(0); moves.push(0); moves.push(1); moves.push(7); moves.push(1); moves.push(7); ロケットを発射するスロットを変更するには、curSlotフィールドを変更します。0は一番左のスロット、2は一番右のスロットです。スロットが破壊されているかどうかを確認するには、を使用しますgetSlot(int slotNumber)。 ロケットがスロットのターンを終了すると、そのスロットは破壊されます。ロケットを手動で爆発させる必要はありません。 注:ロケットは発射されたスロットの位置に出現しますが、衝突が評価される前に一度移動します。したがって、スロット0からロケットを発射し、最初の動きが正しい場合(2)、自分の中央のスロットを破壊します。ただし、上下(1)は安全な動きです。 ボットに名前を付ける場合は、name()メソッドをオーバーライドします。 ボットは決闘ごとに再構築されるため、静的変数はリセットされます。 幸運を! あなたのロケットが真に飛んで、あなたの敵がくすぶっている金属片に過ぎないように。 ヒント: 意図的にロケットを爆発させて爆発を起こすことは、相手のロケットを撃ち落とそうとするよりも簡単に防御する方法です。 ボットの例 package bots; import java.util.LinkedList; import mechanics.*; public class SimpleBot …

7
シンプルパザーク(旧共和国の騎士団のスターウォーズカードゲーム)
Pazaakは、Star Warsユニバースのカードゲームです。BlackJackに似ており、2人のプレイヤーが互いにピットインして、合計20に到達しようとします。各プレイヤーには、スコアを変更するために使用できる4枚の「サイドデッキ」があります。 リーダーボード 2015年6月17日@ 16:40 EDT現在 編集:ネプターは不正行為で失格となりました。スコアはできるだけ早く修正されます... NEPTR:〜424,000 シンシナティキッド:〜422,000 ネストール:〜408,000 オースティンパワーズ:〜405,000 バスティーラ:〜248,000 ダム・コーシャス・プレイヤー:〜107,000 ダムボールドプレイヤー:〜87,000 モックパザークカッププレーオフ できるだけ早く更新されます。 ラウンド1-ネストルvsバスティラ&オースティンパワーズvsシンシナティキッド ラウンド2-ネストルvsオースティンパワーズ&シンシナティキッドvsバスティラ 力学 ゲームプレイは順番に行われます。プレイヤー1には、メイン(ハウス)デッキからカードが配られます。ハウスデッキには40枚のカードがあります。1枚から10枚までの4枚のカードです。新しい価値に立ち向かう。プレイヤー1がやりたいことを決定した後、プレイヤー2はプロセスを繰り返します。 両方のプレイヤーがいなくなると、ハンドが評価されます。プレイヤーが爆撃した場合(20人以上になった場合)、爆撃しなかった場合、他のプレイヤーが勝ちます。プレーヤーが立つことを選択し、他のプレーヤーがより高いハンドバリューを持っている場合、他のプレーヤーが勝ちます。両方のプレイヤーがスタンドを選択した場合、より高いハンドバリューを持つプレイヤーが勝ちます。同点の場合、どちらのプレイヤーも勝ちません。 勝利条件が満たされない場合、プレイは繰り返されます。プレイヤーがターンを終了することを選択した場合、彼らは新しいカードを受け取り、新しい選択をすることができます。彼らが立つことを選択した場合、またはサイドデッキからカードをプレイした場合、新しいカードは配られず、新しいアクションを選択できません。 1人のプレイヤーがゲームに勝つまで、プレイはこのように続きます。ゲームは、ベスト3のうち5セットでプレイされます。 なぜ「シンプルな」Pazaakですか? スターウォーズの世界では、Pazaakはギャンブルに関与していました。このようなシステムを含めると、ゲームにダイナミックさが増しますが、初めてのKoTH競技では少し複雑になります。 「本物の」Pazaakサイドデッキもプレイヤー自身によって提供され、ネガティブカード、ポジティブまたはネガティブカード、フリップカード、ダブルカード、タイブレーカーカードなど、さまざまなカードオプションを含めることができます。これらはまた、ゲームをより面白くしますが、適切なギャンブルインターフェイスを必要とし、競合他社よりもはるかに多くを必要とします。このシンプルなPazaakゲームでは、各プレイヤーは同じサイドデッキを取得します。1から5までの2つのコピーから、4つがランダムに選択されます。 このゲームの成功に応じて、どのギャンブルデッキとカスタムサイドデッキが可能な高度なバージョンを開発する努力をするかもしれません。 プレーヤー このゲームのプレイヤーは、あなたが設計したボットになります。各ボットはPlayerクラスを拡張し、Mechanicsパッケージをインポートし、次のようにplayerパッケージに常駐する必要があります。 package Players; import java.util.Collection; import Mechanics.*; public class DemoPlayer extends Player { public DemoPlayer() { name = "Your Name Here"; } …

16
CodeBots 2:イベント駆動設計
Code Bots 2へようこそ! 前回のコードボット以来、あなたはレッスンを学びました。より多くのアクションをより少ない行に収めるためのより多くの方法を見つけようとしましたが、ついにそれを手に入れました。イベント駆動型のコードボットを作成します。 ボットは24行で構成する必要があります。各行は、次の2つの形式のいずれかに従います。 Condition:Action または Action あなたのボットはまた、名前の5つの整数格納するのに十分な記憶域持っAてしますE。整数には、0〜23の値を格納できます。 各ターンで、条件の1つが真Cでない限り、lineを実行します。その場合、Ctrueの条件の行番号が含まれ、その行が実行されます。各ターンの終わりに、C増加します。 利用可能な条件があります: Start最初のターンのみに当てはまります。これを1回だけコードに含める必要があります BotAt(N) Nで定義された場所にボットがある場合はtrue Equals(A,B) AがBに等しい場合はtrueです。異なるタイプにできますが、そうであれば、等しくなりません。 Modified(A)A最後のターン中にコピーされた場合はtrueです。 A変数名、行、または条件でなければなりません Any(C1,C2,...) 条件のいずれかが真の場合に真 None(C1,C2,...) どの条件も真でない場合は真 All(C1,C2,...) すべての条件が真の場合は真 Not(C)Cがfalseの場合、trueです。C条件でなければなりません。 変数は、次の形式のいずれかになります。最初の9つは数値であり、このページでNを使用する場合は常に使用できます。 A、B、C、D、E 0から23までの数 This 現在の行番号を返します Add(N1,N2,...) すべての値の合計を返します Sub(N1,N2) N1-N2を返します Mult(N1,N2,...) すべての値の積を返します Div(N1,N2) N1をN2で割った値を返します Mod(N1,N2) N1 mod N2を返します OVar(N) 変数名を受け入れ、相手の変数を返します Line(N) コードのN行目を返します Type(N) コードのN番目の行タイプを返します(タイプはアクションの名前です) Cond(N) N行目に条件を返します …

2
Xが3より大きく、XとYの間に少なくとも2つの差がある
私はいくつかのC ++をゴルフしようとしています。この条件を短くすることは可能ですか? X > 3 & X - Y > 1 (もちろん、空白の削除は別として。) だから、X少なくともです4がX >= Y + 2。 XおよびYは、[0,5]間隔の整数です。 ビット単位の数式を見つけようとしましたが、失敗しました。
11 code-golf  number  tips  c++  code-golf  popularity-contest  obfuscation  code-golf  c  code-golf  board-game  hexagonal-grid  code-golf  game  grid  code-golf  number  permutations  popularity-contest  math  graphical-output  number-theory  king-of-the-hill  code-challenge  compression  code-challenge  fastest-code  code-golf  math  ascii-art  animation  code-golf  popularity-contest  generation  counting  fastest-code  fastest-code  popularity-contest  image-processing  king-of-the-hill  code-golf  conversion  binary-tree  code-golf  math  number  rational-numbers  division  code-golf  restricted-source  hashing  atomic-code-golf  logic-gates  code-golf  function  code-challenge  puzzle-solver  ai-player  test-battery  popularity-contest  music  compression  code-golf  number  stack  atomic-code-golf  logic-gates  ascii-art  popularity-contest  code-golf  date  grid  code-challenge  game  code-golf  parsing  code-golf  math  geometry  sequence  popularity-contest  code-trolling  code-golf  string  restricted-source  code-golf  quine  king-of-the-hill  code-golf  math  code-golf  simulation  code-golf  ascii-art  code-challenge  sorting  optimization 

4
決定論的なGo AIを構築する
先日考えた興味深い問題があります。それは、コードが持っているプロパティだけでなく、他のコードとゲームをプレイすることによって、他のコードと競合するコードを含んでいます。 あなたのタスクは、Goボードの現在の状態を取得し、実行または通過する動きを決定するプログラムを構築することです。 プログラムは、入力として次を受け入れます。 19行。各行に19文字があり、現在Goボード上にあるピースを表します。の文字は0、空の正方形を表し、1黒で、2白です。 各プレイヤーが持っている囚人の駒の数を表す2つの数字(黒、次に白)。 移動する順番を表す1つの数字(黒または白)。上記のように、1黒であり、2白です。 次のいずれかを出力します。 a b移動する座標を表す座標のペア。1 1は左上の正方形で、最初と2番目の数字はそれぞれ下と右への移動を表します。 pass渡す動きを表す文字列。 たとえば、プログラムは次の入力を受け取る場合があります。 0000000000000000000 0000000000000000000 0000000000000000000 0001000000000002000 0000000000000000000 0000000000000000000 0001210000000000000 0000100000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0002000000000001000 0000000000000000000 0000000000000000000 0000000000000000000 0 0 1 これは、わずかな動きしかプレイされていないゲームを表します。 次に、プログラムはを出力します6 5。これは、「上から6番目、左から5番目のポイントに黒い石を置く」ことを意味します。これは、で白い石をキャプチャし7 5ます。ボードの状態は次のように変わります。 0000000000000000000 0000000000000000000 0000000000000000000 0001000000000002000 0000000000000000000 0000100000000000000 0001010000000000000 0000100000000000000 0000000000000000000 0000000000000000000 0000000000000000000 0000000000000000000 …

1
たたみばりソルバー
バックグラウンド タタミバリはニコリが設計した論理パズルです。 :Tatamibariパズルは、その中のシンボルの三つの異なる種類の長方形のグリッド上で再生され+、-。と|。ソルバーは、次の規則に従ってグリッドを長方形または正方形の領域に分割する必要があります。 すべてのパーティションには、シンボルが1つだけ含まれている必要があります。 +シンボルは、正方形の中に含まれている必要があります。 |シンボルは、幅よりも大きい高さを有する矩形に含まれなければなりません。 -シンボルは、高さよりも大きな幅を有する長方形に含まれなければなりません。 4つのピースが同じコーナーを共有することはありません。(これが通常の畳の置き方です。) 以下は、解決策を含むパズルの例です。 仕事 与えられたタタミバリパズルを解きます。 入出力 入力は、指定されたタタミバリパズルを表す2Dグリッドです。各セルは、4つの文字のいずれかが含まれています+、-、|、、お好みのキャラクターは非手掛かり細胞を表現するために。テストケースでは、アスタリスク*が使用されています。 タタミバリパズルの有効なソリューションを明確に表すことができる適切な出力形式を選択できます。これには以下が含まれますが、これらに限定されません(不明な場合は、コメントで質問してください)。 4タプルのリスト。各タプルには、長方形の上部インデックス、左インデックス、幅と高さ(または同等の表現)が含まれます。 入力と同じ形状の数値グリッド。各数値は長方形を表します 座標セットのリスト。各セットには、長方形内のセルのすべての座標が含まれます パズルに複数のソリューションがある場合、有効なソリューションをいくつでも(1つ以上)出力できます。入力には少なくとも1つのソリューションがあることが保証されています。 テストケース Puzzle: |-* *+| *-* Solution: 122 134 554 ===== Puzzle: +*** **|* *+** ***- Solution: 1122 1122 3322 3344 ====== Puzzle: |*+*+ ***** ****- ***+| +**** Solution: 12233 12233 44444 55667 …

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