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

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

27
正直ロック、紙、はさみ
多くの人がRPSをチャンスのゲームだと考えています。両方のプレイヤーが予想外にプレイする場合、最善の戦略はランダムにプレイすることです。ただし、少し予測可能性を紹介しましょう。 各ボットは、同時にプレイする内容を他のボットに伝える機会があります。その後、各ボットが他のプレイヤーが発表した内容を知るための一時停止があります。その武器をプレイした場合、勝ち負けまたは引き分けのポイントに加えて1ポイントを獲得すると発表しました。 勝利には2ポイント、引き分け、1ポイント、損失0ポイントの価値があります。 Honest Bot Dishonest Win 3 2 Draw 2 1 Loss 1 0 正直であることはあなたの最大の利益です(しかし、相手があなたを信じないようにすることも)。 試合はラウンドロビン形式で行われ、目的はあなたがプレイする試合全体であなた自身の合計スコアを最大にすることです。 I / O形式: ボットは、4つの引数を取るPython 2.7関数であり、一意の名前(提出物を表すために使用される)を持つ必要があります。 最初の2つの引数は、常に順番になります。対戦相手の過去の動きと、それに続く過去の動きです。これらは、最初のラウンドから最新のラウンドまでの順番のリストになります。各インデックスには、対戦相手が行ったと主張した動きのリストと、実際に行った動きが含まれます。 次の2つの引数により、ボットは「正直な」ラウンドか「実際の」ラウンドかを判断できます。「正直な」ラウンドの場合、両方ともNoneになります。それが「本物の」ラウンドである場合、それらは順番に、対戦相手が彼らが行うと宣言した動きであり、その後、あなたが行うと宣言した動きです。 動きを表すすべての引数または引数の部分は、それぞれ「R」、「P」、および「S」を使用して、岩、紙、およびはさみを表します。 関数は、岩の場合は「R」、紙の場合は「P」、はさみの場合は「S」を返します。他の値を返すことができるボットは失格となります。 各ボットは、他のすべてのボットに対して200回、それ自体で100回実行されます。目標は、競争の終わりに最も多くのポイントを持つボットになることです。 コメントでの議論に関しては、提出物はいかなるファイルからも読み取りも書き込みもできません。 例: これらは、すぐにまとめた4つのボットの例です。彼らは追加のボットとして競争に参加します。最後まで負けた場合は、やるべきことがいくつかあります。 def honestpaper(I,dont,care,about_these): return "P" def honestrock(I,dont,care,about_these): return "R" def honestscissors(I,dont,care,about_these): return "S" import random def randombot(I,dont,care,about_these): return random.choice(["R","P","S"]) コントローラ: そして、これが私が使用するコントローラーです。新しい投稿は最初にインポートされ、bot_map辞書に追加されます。 …

30
サイコロのゲーム、ただし6番は避けます[終了]
トーナメント終了! トーナメントは終了しました!最終シミュレーションは夜に実行され、合計ゲームでした。勝者は、ボットOptFor2Xを使用したChristian Sievers です。クリスチャンシーバーズは反乱軍と2位を確保することもできました。おめでとうございます!以下に、トーナメントの公式ハイスコアリストを見ることができます。3∗1083∗1083*10^8 それでもゲームをプレイしたい場合は、以下に掲載されているコントローラーを使用し、その中のコードを使用して独自のゲームを作成してください。 私は聞いたことがなかったサイコロのゲームをプレイするように招待されました。ルールはシンプルでしたが、KotHチャレンジには最適だと思います。 ルール ゲームの始まり ダイスはテーブルを一周し、自分の番になるたびに、好きなだけダイスを投げることができます。ただし、少なくとも1回はスローする必要があります。ラウンドのすべてのスローの合計を追跡します。停止することを選択した場合、ラウンドのスコアが合計スコアに追加されます。 だから、なぜあなたはダイを投げるのをやめるのですか?あなたが6を取得した場合、ラウンド全体のスコアがゼロになり、ダイスが渡されるためです。したがって、最初の目標は、できるだけ早くスコアを上げることです。 誰が勝ちましたか? テーブルの周りの最初のプレーヤーが40ポイント以上になると、最後のラウンドが始まります。最後のラウンドが始まると、最後のラウンドを開始した人以外の全員がもう1ターンを獲得します。 最終ラウンドのルールは、他のラウンドと同じです。投げ続けるか、停止するかを選択します。ただし、最終ラウンドの前のスコアよりも高いスコアを取得しないと、勝つチャンスがないことを知っています。しかし、あなたがあまりにも遠くに行き続けるなら、あなたは6を得るかもしれません。 ただし、考慮すべきルールがもう1つあります。現在の合計スコア(以前のスコア+ラウンドの現在のスコア)が40以上で、6をヒットした場合、合計スコアは0に設定されます。つまり、最初からやり直す必要があります。現在の合計スコアが40以上のときに6を押した場合、ゲームは通常通り続行しますが、現在は最後の場所にいます。合計スコアがリセットされても、最終ラウンドはトリガーされません。あなたはまだラウンドに勝つことができますが、それはより挑戦的になります。 勝者は、最後のラウンドが終了した時点で最高のスコアを獲得したプレーヤーです。2人以上のプレイヤーが同じスコアを共有する場合、それらはすべて勝利者としてカウントされます。 追加のルールは、ゲームが最大200ラウンド継続することです。これは、複数のボットが現在のスコアを維持するために6を押すまで基本的に投げ続けるケースを防ぐためです。199回目のラウンドに合格すると、last_roundtrueに設定され、さらに1ラウンドがプレイされます。ゲームが200ラウンドになった場合、最高得点のボット(またはボット)が勝者となります(40ポイント以上を持っていなくても)。 要約 停止するか6を得るまで、各ラウンドでダイスを投げ続けます。 ダイスを1回投げる必要があります(最初の投げが6の場合、ラウンドはすぐに終わります)。 6を取得した場合、現在のスコアは0に設定されます(合計スコアではありません) 各ラウンドの後に、現在のスコアを合計スコアに追加します ボットがターンを終了し、合計スコアが少なくとも40になると、他の全員が最後のターンを獲得します 現在の合計スコアがで6を獲得した場合、合計スコアは0に設定され、ラウンドは終了します。≥40≥40\geq 40 上記の場合、最終ラウンドはトリガーされません 最終ラウンド後の合計スコアが最も高い人が勝者です 複数の勝者がいる場合、すべてが勝者としてカウントされます ゲームは最大200ラウンド続きます スコアの明確化 合計スコア:前のラウンドで保存したスコア 現在のスコア:現在のラウンドのスコア 現在の合計スコア:上記の2つのスコアの合計 どうやって参加しますか このKotHチャレンジに参加するには、から継承するPythonクラスを作成する必要がありますBot。次の関数を実装する必要がありますmake_throw(self, scores, last_round)。その関数は、あなたの番であるときに呼び出され、最初のスローは6ではありませんでしたyield True。投げを停止するには、する必要がありyield Falseます。各スローの後、親関数update_stateが呼び出されます。したがって、変数を使用して現在のラウンドのスローにアクセスできますself.current_throws。また、を使用して独自のインデックスにアクセスできますself.index。したがって、独自の合計スコアを表示するには、を使用しますscores[self.index]。end_scoreを使用してゲームself.end_scoreのにアクセスすることもできますが、このチャレンジでは40になると安全に想定できます。 クラス内でヘルパー関数を作成できます。Botクラスプロパティをさらに追加する場合など、親クラスに存在する関数をオーバーライドすることもできます。譲歩Trueまたは以外の方法でゲームの状態を変更することはできませんFalse。 この投稿から自由にインスピレーションを求め、ここに含めた2つのボットのいずれかをコピーしてください。しかし、私はそれらが特に効果的ではないことを恐れています... 他の言語の許可について サンドボックスとThe Nineteenth Byteの両方で、他の言語での投稿を許可することについて議論しました。そのような実装について読んで、両側から議論を聞いた後、私はこの挑戦をPythonだけに制限することに決めました。これは、2つの要因によるものです。複数の言語をサポートするのに必要な時間と、安定性に達するまでに多数の反復を必要とするこの課題のランダム性です。引き続き参加してください。このチャレンジのためにPythonを学びたい場合は、できる限り頻繁にチャットに参加できるようにします。 質問がある場合は、このチャレンジのチャットルームに書き込むことができます。また会いましょう! ルール 妨害行為は許可され、奨励されています。つまり、他のプレイヤーに対する妨害行為 コントローラー、ランタイム、またはその他のサブミットをいじくり回そうとする試みはすべて失格となります。すべての提出物は、与えられたインプットとストレージでのみ機能します。 500MB以上のメモリを使用して決定を下すボットは失格になります(その量のメモリが必要な場合は、選択を見直してください) ボットは、意図的または偶然に既存の戦略とまったく同じ戦略を実装してはなりません。 …

7
人生だよ、ジム
数学者のジョン・コンウェイが発明した有名なセルラーオートマトンであるコンウェイのゲーム・オブ・ライフをご存知でしょう。ライフとは、2次元のセルのボードをシミュレートできる一連のルールです。ルールは、ボード上のどのセルが生き、どのセルが死ぬかを決定します。想像力を働かせると、Lifeはゼロプレーヤーゲームであると言えます。有名なグライダーのように、興味深い動作を伴うパターンを見つけることを目的としたゲームです。 ゼロプレイヤーゲーム...今日まで。ゲームオブライフをプレイし、勝つためにプレイするキングオブザヒルスタイルのプログラムを作成します。対戦相手(単数形)はもちろん同じことを試みます。勝者は、生きているセルがある最後のボットか、10000世代後に最も生きているセルを持つプレイヤーのいずれかです。 ゲームのルール ルールは通常の(B3 / S23)ライフとほぼ同じです。 友好的な隣人が2人未満の生細胞は、飢fromで死にます。 2〜3人の友好的な隣人がいる生細胞は生き残ります。 3人以上の友好的な隣人がいる生細胞は、過密により死にます。 同じプレイヤーの正確に3人の隣人がいる死んだ細胞は、敵の隣人がいなければ、そのプレイヤーのために戦うために生きてきます。 ...しかし、各世代の後、あなたとあなたの対戦相手の両方が介入する機会を得ます。あなたはあなたのために戦うために最大30個の細胞まで目覚めることができます。(最初に行く人はサーバーによって決定されます。) ボードは(x、y)セルの正方形です。すべての正方形は最初は死んでいます。境界はラップアラウンドせず(トーラス型の世界ではありません)、永久に死んでいます。 これはBattlebotsとCore Warsの精神のコンテストです。ボットを実行する中央サーバーがあり、ここにあります プロトコル アリーナサーバーは、argvを介して通信される単純なJSONプロトコルを話します ValuesはJSONエンコードされた文字列です y_size:タイルが消失する前の最大y座標 x_size:タイルが消滅するまでの最大x座標 tick_id:現在のティック番号 board: '(y、x)'形式のキーとbot_id(int)形式の値を持つ辞書 bot_id:このIDのボードのタイルはあなたのものです 例: {"y_size":2000,"x_size":2000,"board":{},"bot_id":1,"tick_id":1} サーバーに選択を伝える: サーバーにタイルのリストを送信して、自分の色に変えます。 空のもののみが変更されます ネストされた座標リストの形式 [[0,0], [0,1], [100,22]...] 注:ボットはタイルをまったく更新する必要はありません-サーバーはそれ自体を更新します 競争ルール 実装がプロトコルに従わない場合は、実装が無効になります。サーバーは状態の変化がないと仮定します アリーナサーバーの障害を故意に利用することは許可されていません。 AIに適切なタイミングで動きを決定させます。できるだけ早く次の動きを送ってください。 最後に、サーバーに親切にしてください。それはあなたの楽しみのためにあります。 これらの規則に従わない場合、失格となる可能性があります。 同点の場合、両方のプレイヤーの合計に1勝が加算されます コントローラーを自分で実行する コントローラのソースはここにあります。コントローラーを実行するには2つの方法があります。 競争モード(端末) でセットアップ python3 get_answers.py 各ボットが他のすべてに対してボットする、すべて対すべての競争を実行します。 テストモード(GUI) 走る python3 …


9
コデモン、私はあなたを選ぶ!
親切な隣人のドクターツリーから、コデモンと呼ばれる3匹の魔法の生き物が渡されました。近くのカラービルの町でバトルトーナメントがあります。誰もいない最高のあなたですか? 概要 これはバトルトーナメントです。各プレイヤーは3匹のモンスターのチームをコントロールし、目的は他のチームをノックアウト(キル)することです。100ラウンドあり、勝ちと引き分けのポイントが与えられます。最もポイントの多いチームが勝ちます! モンスター コデモンは複雑な小さな生き物です。選択できる5つのタイプ(要素)、3つの統計、およびそれぞれに3つの移動スロットがあります。 タイプ 各Codémonには1つのタイプが割り当てられます。5つのタイプは、ノーマル、サイキック、ファイア、ウォーター、およびグラスです。それぞれに長所と短所があります。損傷は次のチャートに基づいています。 数字はダメージ乗数です。たとえば、水を攻撃する火には0.5の修正(半分のダメージ)がありますが、グラスを攻撃する火は2倍になります(2)。 統計 各モンスターには、戦闘能力を決定する3つの統計があります。攻撃は、与えるダメージを増加させます。防御は、受けるダメージを減らします。速度により、速度の低いユーザーの前に移動できます。 各モンスターの開始値は、各ステータスごとに50で、最大100です。モンスターを作成すると、80個の追加のステータスポイントを割り当てることができます(それぞれ)。個々の統計が100を超えることはできないことを忘れないでください。したがって、100/80 / 50、90 / 80/60、または65/65/100の分布を持つことができますが、120/50/60は違法です。違法な統計情報を持つチームは失格となります。80ポイントすべてを使用する必要はありませんが、おそらく最低50/50/50を使用すべきではありません。 HPを統計と見なすこともできますが、各Codémonには変更不可の100 HPがあります。HPがゼロになると、戦闘を続けることができなくなります。HPは各戦闘の前に100に補充されます。 動き 各モンスターは3つの戦闘の動きを知っています。選択された3つは異なる必要があるため、パンチ/パンチ/パンチはありません。 15の動きがあり、それぞれ3種類です。各タイプには、直接攻撃、効果のある弱い攻撃、および唯一の効果の移動があります。 id name type power uses usable effect 0 Punch N 20 - NFWG 1 Heal N 0 3 NFWG Heals 50 HP 2 Slow N 10 5 NFWG Enemy speed …

30
4人のスタンドオフ
4人のスタンドオフ 説明 どういうわけか、4方向のスタンドオフに陥りました。装填された銃が手にあり、手some弾がベルトに引っかかっています。 目的は、スタンドオフの終わりに最も健康になることです。せいぜい1人の人がプラスの健康状態にあるとき、スタンドオフは終了します。 各プレイヤーは5体力を持ち、体力が/を下回ると死亡します0。プレイヤーが死亡するターンは、そのプレイヤーがダメージを受けることができる最後のターンです。 スタンドオフの最後にライブプレイヤーがいる場合、そのプレイヤーが勝ちます。そうでない場合、負のヘルスが最も少ないプレイヤーが勝ちます。 行動 撃つ:誰かを撃つ。 2 生きている敵を撃った場合のダメージ 0 死んだ敵を撃った場合のダメージ health_at_start_of_turn+2自分を撃った場合のダメージ。(これにより、MOSTの-2健康状態が維持されることに注意してください。) 自分が撃った同じターンに敵が1人撃った場合、-4の体力でスタンドオフを終了します(自殺したターンに他のプレイヤーからダメージを受けます)。 次のターンのあなたの行動は無視されます(そしてそうであると仮定されますNothing)。 ダッジ:ダッジシングル相手のショットを試してみてください。 準備:手g弾を外し、投げる準備をします。 あなたはそれをスローするために3ターンしか持っていません、あなたが爆破される前に(6あなた自身への3ダメージ、すべての生きている敵へのダメージ) 投げられていない手ren弾で死ぬことは、手turns弾を3ターン投げないことと同じです。 投げる:誰かに手g弾を投げつけて、最高のものを願ってください。 8生きている場合、ターゲットはダメージを受けます 3生きている場合、他のすべての人(自分を含む)がダメージを受ける 何もない:ターンの間、じっと立って、全員が死ぬのを見てください。 入力 プログラムには次の情報が渡されます。 各プレイヤーの健康 スタンドオフの開始以降にそのプレーヤーが行ったアクションのリストは、プレーヤーごとに渡される情報の形式です。 [Health],[Action 1],[Action 2],[Action 3],... アクションは、出力セクションで指定された形式で提供されます。 スペースで区切られた単一の引数として渡された4つの文字列を受け取ります。これらの文字列の順序は次のとおりです。 [Player Info] [Opponent 1 Info] [Opponent 2 Info] [Opponent 3 Info] 文字列は2番目の引数として渡されます。最初の引数には、成立するスタンドオフを一意に識別する整数が含まれます。同じプレーヤーのセット間のスタンドオフは、同時でないことが保証されています。ただし、複数のスタンドオフが同時に発生します。 例えば: $./Player.bash 5 "3,S2,N 5,P,N …

22
最後の弾丸を自分用に保存する
コンテストは終了しました。ward病者が勝者です。ここで最後の試合を見ることができます。 突然ゾンビが登場!やばい! この王様の挑戦では、ゾンビの黙示録を生き残るためにボットを作成する必要があります。または、少なくとも、できるだけ長く頑張ってください。 ゲームの開始時に、各エントリの50個のインスタンスが大きなトロイダルプレイエリアにランダムに配置されます。つまり、正方形のように見えますが、回り込んでいます。プレイエリアのサイズはエントリーの数によって異なりますが、最初は正方形の6%が占有されます。各競技者は3つの弾丸で始まります。 各ターンの開始時に、ゾンビはランダムな場所で地面から上昇し、その上にあるものを破壊します。ターンの開始時にゾンビの隣にいるプレイヤーは、ゾンビになります。 生きているプレイヤーごとに、そのコードが呼び出されます。現在のステータスとその周辺に関する情報を含むPlayerContextオブジェクトを受け取ります。各プレイヤーは、任意の方向の8つの正方形を見ることができます。 プレイヤーは、を返すことで移動する(まだ滞在することは有効な動きです)か、を返すことMoveで近くの人やゾンビを撃つかを選択する必要がありますShoot。銃の最大射程は5マスです。銃の射程内にいるので、弾丸が残っていれば自分で撃つことができます。2人のプレイヤーがお互いを撃った場合、両方とも死にます。 2人のプレイヤーが同じマスに移動しようとすると、失敗し、両方が元のマスに戻ります。まだ競合がある場合は、競合がなくなるまでこれが繰り返されます。これは、誰もが開始した場所に戻ったことを意味する場合があります。 プレイヤーが銃声で死亡した場合、死体は残り、永続的な障壁を形成します。彼らが運んでいた弾丸はすべてその人に残っており、隣接する広場のプレイヤーが掃討することができます。死体に隣接する正方形を占領しているプレイヤーが複数いる場合、弾丸はそれらの間で共有されますが、残りは失われます。 プレイヤーがゾンビになると、弾丸は失われます。ゾンビは無意識のうちに最も近い生きているプレイヤーに向かって歩きます。 エントリは、最も長く生き残ったプレーヤーがどれだけ長く生き残るかについてスコアリングされます。 エントリー 制御プログラムはhttps://github.com/jamespic/zombiesで入手できます。クローンを作成して実行しmvn compile exec:javaます。 適格であるためには、エントリーはJVM言語で作成され、移植可能でなければならず、特別なセットアップなしでMavenからビルドできる必要があります。これは、競合他社がボットを競合他社に対してテストするために、競合他社が複数のランタイム環境をインストールする必要がないようにするためです。 現在、サンプルエントリは次の言語で利用できます。 Java 7- より複雑な例、およびゾンビのコードも参照してください Scala 2.11.1 Javascript(Rhino経由) Python(Jython 2.7 beta 2経由) Ruby(JRuby 1.7.13経由) Clojure 1.5.1 Frege(Haskellに少し似ています- 別の例です) リストされていない言語で競争したい場合は、それを要求するコメントを投稿できます。選択した言語を制御プログラムに統合する可能性を調査します。または、あなたがせっかちな場合は、制御プログラムにプルリクエストを送信できます。 Javaの意味では、エントリごとに1つのインスタンスのみが作成されます。このJavaインスタンスは、ターンごとに複数回呼び出されます(生き残ったプレイヤーごとに1回)。 API package zombie // You implement this. Your entry should be in package `player` interface …

28
あなたは最も弱いリンクです、さようなら
このキングオブザヒルチャレンジは、ゲームショーWeakest Linkに基づいています。ショーに不慣れな人のために、このチャレンジの核心はあなたが投票する人を扱っています: 他のプレイヤーがあなたより賢い場合、ポットを獲得する可能性は低くなります。 他のプレイヤーがあなたよりも愚かである場合、獲得するポットが少なくなります。 各ラウンドの開始時に、ポットは$ 0から始まります。9人のプレーヤーのグループが形成され、各プレーヤーには1〜9の一意のスマートネスが与えられます。 各ターンの開始時に、Pot += Smartnessまだラウンドにいる各プレイヤーに対して。次に、プレイヤーは削除したいプレイヤーに投票します。最も投票数の多いプレイヤーが削除されます。同点の場合、よりスマートなプレーヤーが保持されます。 ラウンドに残っているプレイヤーが2人だけの場合、彼らは知恵の戦いで対決します。プレイヤーが勝つ可能性はSmartness/(Smartness+OpponentSmartness)です。その後、勝者はポット全体を受け取ります。 ゲーム終了時に最も多くのお金を受け取ったプレイヤーが勝ちます。 入出力 ターンごとに、現在の対戦相手のリストを受け取ります。Playerクラスの関数を介して、ラウンドのスマートさとすべてのプレイヤーの投票履歴全体にアクセスできます。 出力として、投票したいプレーヤーを表す(彼らのスマートさを表す)単一の整数を返す必要があります。自分の投票は許可されています(ただし、推奨されません)。 9ラウンドは、すべてのプレイヤーが少なくとも1000 10000ラウンドをプレイし、すべてのプレイヤーが同じラウンド数でプレイするまで繰り返されます。 ここでコントローラーを見つけることができます:https : //github.com/nathanmerrill/WeakestLink プレーヤーを作成するには、Playerクラスを拡張し、プレーヤーをPlayerFactoryクラスに追加する必要があります。クラスは次のルールに従う必要があります。 他のプレイヤー(同じタイプの他のプレイヤーを含む)との通信または干渉は固く禁じられています。 リフレクションと静的変数(定数を除く)は許可されていません。 ランダム性を使用する場合getRandom()は、Playerクラスで関数を提供しています。これを使用して、シミュレーションを決定的にすることができます。 Playerクラスには、データに簡単にアクセスするための多くの関数を提供しています。Githubでオンラインで見つけることができます。プレーヤーは新しいラウンドごとにインスタンス化されます。「ダム/自殺」プレイヤーは許可されます(同じ戦略を持つプレイヤーは許可されません)。 スコア 377195 WeakestLink.Players.PrudentSniper 362413 WeakestLink.Players.Sniper 353082 WeakestLink.Players.VengefulSniper 347574 WeakestLink.Players.AntiExtremist 298006 WeakestLink.Players.BobPlayer 273867 WeakestLink.Players.MedianPlayer 247881 WeakestLink.Players.TheCult 240425 WeakestLink.Players.Leech 235480 WeakestLink.Players.SniperAide 223128 WeakestLink.Players.Guard 220760 WeakestLink.Players.Anarchist 216839 WeakestLink.Players.RevengePlayer 215099 …

30
ゴールドコレクターKoTH
注:コミュニティのお気に入りのアンケートは間もなくリリースされます このKoTHの目的は、最後に生きたボットになることです。コインはランダムな領域に配置され、ボットは最初にコインを取得する必要があります。ボットが別のボットにぶつかると、より多くのコインを持つボットが勝ち、他のボットは死にます。詳細は以下をご覧ください。 コインの種類 金と銀の2種類のコインがあります。ゴールドはボットの強さに5個のコインを追加し、シルバーは2を追加します。コインが収集されると、別のコインがボード上の別の場所に配置されます。常に、アリーナには金貨1枚と銀貨4枚があります。 ボットの衝突 2つのボットが同じスペースを占有しようとする場合、より多くのコインを持っているボットは残り、より少ないコインを持っているボットは...ありません。勝利したボットは、85%の敵コインを獲得します(端数切り上げ)。それらが結ばれている場合、両方とも死にます。3つ以上が同じスペースを占有しようとすると、最も強力なものが勝ち、他のすべてのボットのコインの85%を獲得します。最も強力なボットがネクタイの場合、すべてのボットが死んでスペースに入ろうとしました。 アリーナ アリーナの辺の長さはで計算され4 + botCountます。ゲームの開始時にボットを配置する場合、ランダムな場所が選択されます。システムは、ボットが同じスペースで、または互いに隣接して開始しないようにします。コインはランダムに生成され、各ボットの中心にある3 x 3の正方形は除外されます。アリーナの外でボットが見つかった場合、すぐに死にます。アリーナは、左上隅の(0,0)または北西から始まり、ボットの位置は常に整数です。 ボット ボットは、配列、整数、文字列、関数を含むオブジェクト指向言語の関数でなければなりません。物事を簡単にするために、すべての提出物がJavascriptに変換されることに注意してください。移動の間に情報を保存するには、とを使用botNotes.storeData(key, value)しbotNotes.getData(key, value)ます。パラメータおよびを介して提供される方法以外の方法で、データを保存またはアクセスすることはできませんbotNotes。あなたは、呼び出されたときに、文字列を返す関数を作成する必要がありnorth、east、south、west、またはをnone。関数には3つの引数があります。 4つの整数を持つオブジェクト(locationX、locationY、coins、arenaLength)、あなたの現在の場所、あなたのコイン、およびアリーナの長さ 他のボットのX座標とY座標、およびそれらのコイン数を含む多次元配列、たとえば、[[0,5,4],[4,7,1],[7,4,12]] コインの場所がリストされた配列(金が常に最初) これはキングオブザヒルチャレンジです。標準の抜け穴は禁止されています。関数は数千回実行され、そのたびに1つの「移動」が許可されます。ゲームが20,000手を超える場合、コインが最も多いボットが勝つことに注意してください。これは、ランダム性を除去するために8,000回行われます。 チャットルーム: https : //chat.stackexchange.com/rooms/81347/gold-collectors-koth 賞品: 1位: 100ポイントの賞金 コミュニティお気に入り: 15ポイントの回答 受賞者: 1位: TBTPTGCBCBA 2位:ビッグキングリトルヒル 3位:潜在的に勝利する 4位:丁寧な近視の酔ったボット 5位:安全コイン

30
既知の既知のものがあります
元米国国防長官のドナルド・ラムズフェルドは、「既知の知人」というフレーズを有名にした。ここでは、彼の発言を4行のスタンザに要約します。 具体的には、次のテキストを出力します。 known knowns known unknowns unknown knowns unknown unknowns 大文字と小文字は区別されません(たとえば、大文字Known unKnownsで結構です)。また、単一の末尾の改行を使用できますが、他の形式の変更は許可されていません。これは、単語間の単一のスペース、および行間のLF(59バイト)またはCR/LF(62バイト)を意味します。 ルール 完全なプログラムまたは機能のいずれかが受け入れられます。関数の場合、出力する代わりに出力を返すことができます。 標準的な抜け穴は禁止されています。 これはコードゴルフなので、通常のゴルフルールがすべて適用され、最短のコード(バイト単位)が勝ちます。

19
フェローシップの戦いKotH
この課題では、戦闘で他のすべてのフェローシップを打ち負かすことを目標とするフェローシップを作成します。 フェローシップ(チーム)は3人のキャラクターで構成されます。各キャラクターはチームの他のメンバーとは独立して動きますが、敵と戦うときは協力する必要があります。チームは回転しながらお互いに向かい合います。勝ちは3ポイント、同点は1ポイント、負けは0ポイントの価値があります。 キャラクターには能力があります。キャラクターが持っている能力の選択は、このKotHで最も重要な(そして楽しい)部分の1つです。それらはすべて強力で、敵を一掃する可能性があります。 キャラクターはヘルスポイント(HP)を持ち、HPが0になる(または下回る)と死亡します。対戦相手のチームのすべてのキャラクターが死亡した場合、あなたは勝ちます! キャラクターにはマナがあります。ほとんどのアクションを実行するにはManaが必要であり、十分な数がない場合、そのアクションは使用できません。 キャラクターにはターン遅延があります。これにより、各ターン間のティック数が決まります(100から始まります)。低いほど良い。 文字には属性があります。各キャラクターの各属性には5のベースがあり、分割するために20の追加の属性ポイントが与えられます。属性ポイントを割り当てた後、プライマリ属性が最高の属性として設定されます。 利用可能な属性は次のとおりです。 強さ:ターンごとに10 HPと0.5 HPを与える 知性:ターンごとに7マナと7マナを与える 敏ility性:ターン遅延を1減らす 移動、ビジョン、範囲の 範囲は次のとおりです(0を中心に)。一部の範囲はcardinalです。つまり、直接上下左右にしか移動できません。 444 43334 4322234 432111234 432101234 432111234 4322234 43334 444 キャラクターの開始ビジョンは2です。同じフェローシップのプレイヤー間のビジョンは共有されます。 遊び方 建設 プレイヤーはフェローシップを構築します。 次の手順を実行する必要があります。 各キャラクターにポイントを与えます。各キャラクターは各スタットで5から始まり、3の間でさらに20が分配されます。 各キャラクターに能力を与えます。各キャラクターは4つの能力スロットから始まり、能力はデフォルトで1スロットを取ります。一部の能力は反復可能で、キャラクターに複数回与えることができます。所有者の許可なしに別の提出の機能セットを使用することは許可されていません。 ボット用のコードを作成します。コードはJavaである必要があり、戦闘に使用されます(次のステップ) 行動 すべてのキャラクターは3つの標準アクションで始まります: ステップ:主な範囲1でキャラクターを移動する スライス:主属性範囲1 でPrimaryAttributeの敵を攻撃します 笑顔:何もしない キャラクターのターンで、実行するアクションを選択する必要があります。アクションにはマナコストがあり、クールダウンがあります。これは、そのアクションを再度実行するまで待機する必要があるターンの数を定義します。 能力 各キャラクターには4つの能力スロットがあります。能力が斜体の場合、それはアクションです。 能力 名前説明マナクールダウン モビリティ 瞬き 正方形に移動範囲が4 2 2 スワップ 対象とスワップ位置5 …

30
ゴールドバトルKoTH
この挑戦は終わりました。競合他社の最終スコアを見るには、ここをクリックしてください この課題では、各サブミッションは1つのボットです。各ボットはJavaScript関数でなければなりません。ボットは、金で最高の合計価値を獲得するために戦います。金は養殖するか、他のボットを殺すことで獲得することができ、治癒、攻撃、シールド、および養殖のアップグレードに使用されます。 目的: 最大1000ターン(ボットが1つだけ残った時点で終了)を含む多くのラウンドで、合計の価値が最も高いボット(取得したすべての金の合計)が勝者です。 ターン: 各ターンで、生きているすべてのボット(> 0 HP)が1回実行されます。次のいずれかの動きを返すことができます。 回復:HPを回復する 攻撃:別のボットからHPを削除します シールド:後の攻撃から守ります スタン:別のボットの次のターンをスキップします 農場:HPのコストでゴールドを獲得 アップグレード:特定の動きを改善する すべてのボットは、実行される前に移動を戻すため、スタン、ヒール、攻撃、シールドなどは、そのターンの後半に移動するボットには影響しません。たとえば、ボットAがボットBをスタンし、ボットBがターン順でボットAの後にある場合、ボットBは同じターンの後半に移動し、スタンは次のターンに発生します。 戦闘、農業、およびアップグレード: 各ボットの最大HPは100で、割り当てられたUIDは0〜99です。このUIDはラウンドごとに変化し、ボットがお互いを追跡する方法です。 ヒーリングは最も単純な動きの1つであり、レベルによって決まるHPの量を追加します(5 HPから開始)。ボットは100 HPを超えて回復することはできません。 UIDでボットを攻撃することもできます。レベル0で5 HPの基本ダメージがあります。ボットは、UIDを使用する次のターンをスキップしてスタンすることもできます。 ボットには追加のシールドHPがあり、制限はありません。このシールドHPは、他のボットからの直接攻撃によるダメージを吸収し、シールドによって追加されます。レベル0では、シールドは5シールドHPを追加します。 ファーミングでは、レベル0で5 HPのコストで5ゴールドを獲得します。この2 HPはシールドできません。ゴールドの唯一の用途は(勝ちを超えて)移動をアップグレードすることです。回復、攻撃、およびシールドの基本値は5 HPであり、農業は5ゴールドから始まります。これらの動きのそれぞれには、0から始まる個別のレベルがあります。これらの式は、HPまたは動きのゴールドの値を決定します(Lはレベルです)。 癒し: L + 5 攻撃: 1.25L + 5 シールド: 1.5L + 5 農業: 2L + 5 移動のアップグレードのコストは特定のレベルで同じであり、によって決定され2.5L² + 2.5L + 10ます。ここで、Lは現在のレベルです。ボットは、cost(currentLevel)これを決定するショートカットとして関数を使用できます。 ボットは25ゴールドから始まり、2移動をレベル1に、または1移動をレベル2にすばやくアップグレードできます。この開始ゴールドは、ボットの合計価値にはカウントされません。ボットを殺すと、その合計価値の半分が金になり、切り上げられます。2つのボットが同じターンに別のボットを殺すと、両方が報酬を受け取ります。 入出力: …

21
スタック取引所証券取引所-V3
注意:このチャレンジは終了しました:私はリーダーボードを更新しなくなり、受け入れられた回答を変更しません。ただし、必要に応じて、コントローラーを自由に実行し、リーダーボードを自分で更新できます。 チャットに参加してください! 前書き こんばんは、トレーダー!あなたはすべてゴルフ会社PPCGのトレーダーです。あなたの仕事は、できるだけ多くのお金を稼ぐことです。 チャレンジ できるだけ多くのお金を稼ぐことを目的として、Stack Exchange Stock Exchangeで株式を売買するプログラムを作成します。 ゲームプレイ すべてのプレイヤーは、自分の銀行で5株と100ドルで始めます。ゲームは常に10ドルの株価で始まります。 各ゲームには1000ラウンドがあり、最初のラウンドはラウンド1です。各ラウンドでは、プログラムに入力として4つの引数が提供されます。現在の株価、所有する株式数、所有する金額、およびラウンド番号(1から始まる)。 たとえば、私のプログラムがtest1.py、株価が100、保有株式数が、保有3金額が1200、ラウンド数がの576場合、私のプログラムは次のように実行されます。 python test1.py 100 3 1200 576 ラウンドでは、各プレイヤーに与えられる株価は同じになります。これはラウンドの終わりまで変わりません。 応答として、プレーヤーはコマンドを印刷する必要があります。次の2つのオプションがあります。 購入共有:このコマンドは次のように与えられているbn場所nあなたが購入したい株式数です。たとえば、100株を購入する場合、次のように出力します。 b100 株式を購入する場合、最大1000ドルの当座借越が許可されます。この当座借越を超える十分な株式を購入しようとすると(銀行の残高が$ -1000を下回ります)、破産と宣言されます。これは、すべての株式を失い、残高が50ドルに設定されることを意味します。 破産しても株価は指揮の影響を受けません。 (残高が$ -1000であれば、破産していません。ただし、残高が$ -1001であれば、破産しています) 売る株式:このコマンドは次のように与えられているsn場所nあなたが販売することを希望する株式数です。たとえば、100株を販売する場合、次のように出力します。 s100 所有する株式よりも多くの株式を売却することはできません。これを行おうとすると、リクエストは拒否され、ラウンドはスキップされます。 ラウンドをスキップして何もしない場合は、b0またはのいずれかを出力しますs0。 負の数の株式や整数以外の数の株式を売買しようとすると、リクエストは拒否されます。 5ラウンド後、各ラウンドの終わりに、すべてのプレーヤーに配当が支払われます。その価値は、最後の5ラウンドの平均株価の5%です。 どのように機能しますか? 当初の株価は10ドルです。各ラウンドの終わりに、式を使用して再計算されます: 新しい株価= 古い株価+ (購入した株式数- 売却した株式数)New Share Price=Old Share Price+(Number of shares bought−Number of shares …

6
マフィアを遊ぼう!
マフィア(ウェアウルフとも呼ばれます)は、おおよそ次のようにプレイするパーティーゲームです。 ゲームは0日目から始まりnますn。毎日が夜になります。毎晩夜nが来るとn+1。すなわちD0, N0, D1, N1, D2, N2... 0日目の夜明けに、ホストは特定の役割を満たすためにプレイヤーを密かに選択します。 一部のプレイヤーがマフィアになります。毎晩、すべてのマフィアがプレイヤーを選びます。翌日の夜明けに、ほとんどのマフィアが選んだプレイヤーが殺されます。それらはゲームから永久に削除され、その役割は公開されます。マフィアアライン。 一部のプレイヤーは警官になります。毎晩、各警官はプレイヤーを選択します。翌日の夜明けに、警官はプレイヤーのアライメントを認識します。村に沿って。 一部のプレイヤーは医者になります。毎晩、各医師はプレーヤーを選択します。このプレイヤーがマフィアが殺すことを選んだプレイヤーと同じ場合、その夜のマフィアの行動はキャンセルされます。村に沿って。 別の役割に選ばれていないプレイヤーはすべて村人です。村人には、町全体で共有されていない能力はありません。村に沿って。 0日目を除く毎日、町全体(つまり、すべての生きているプレイヤー)がプレイヤーに投票します。一日の終わりに、そのプレイヤーはゲームから削除され、その役割が明らかになります。(0日目は、誰もが日暮れまで冷えます。) いずれかの時点でマフィアが残っていない場合、村に所属するすべてのプレイヤーが勝者(死者を含む)でゲームは終了します。 いずれかの時点で、村に所属するプレイヤーがマフィアに所属するプレイヤーよりも多くない場合、ゲームはマフィアに所属するすべてのプレイヤーが勝利(死者を含む)して終了します。 このチャレンジの目標は、マフィアで他のボットに勝つためにボットを書くことです! 動作するボットの作り方 あなたが私に提供しなければならないのは、というファイルだけですrun。このチャレンジが行われるディレクトリ構造内で、ボットはここに住んでいます: start controller/ tmp/ players/ # You are here! some_bot/ # Let's pretend you're some_bot. to_server from_server players run # This is what you give me mafia-game-bot/ skynet/ このrunファイルは、実行されると、ボットにその働きをさせます。このファイルはコマンドライン引数などを必要としないことに注意することが重要です。として正確に実行され./runます。別の方法で実行する必要がある場合は、次のようなことを実行して回避する必要があります。 real_bot.py #!/bin/python2 # code …

5
ブロックビルディングボットの群れ!
コンテストは終了しました! イントロ これはインタラクティブなキングオブザヒルコンテストで、コントローラーは質問の下部にあるスタックスニペットに完全に含まれています。コントローラーは自動的に答えを読み取り、ゲームを通してプレイします。誰でもブラウザでいつでも実行できます。 このコンテストの仕組みは、レッドvsブルーピクセルチームバトルボットと非常によく似ています。プレイされているゲームを除き、グリッドベースではありますが、まったく異なります。各ゲームは1対1であり、チームはありません。各エントリーはそれ自体のために戦っていて、最終チャンピオンになるのは1人だけです。 コントローラーはJavaScriptを使用し、JavaScriptはほとんどのブラウザーがサポートする唯一のクライアント側スクリプト言語であるため、すべての回答もJavaScriptで記述する必要があります。 この仕様では、イタリック体のテキストは、ゲームのメカニックまたはプロパティの正式な用語を示すために使用されます。これらの用語は、ゲームのさまざまな部分を一貫性のある明確な方法で参照するために使用されます。 ゲームプレイ 基礎 この質問に対するすべての答えは、プレーヤーを表しています。ゲームは 2人のプレーヤー、間の競争であるP1およびP2。各プレイヤーは、0〜7の番号が付けられた8つのボットの群れを制御します。ゲームは、グリッド、下8列が壁(「ブロック」)から始まる128×64 セルアリーナ、その他の列が空気として開始します。グリッド境界の外側のセルは空気と見なされます。 グリッドのx座標の範囲は左の0から右の127までで、yの範囲は上が0から下が63までです。 サンプル開始グリッド: ボットは常にグリッドセルに揃えられたままで、複数のボットが同じセルを占有する場合があります。ボットはエアセルのみを占有できます。P1のボットは常に、壁の上の列の一番左の行0-7で始まり、P2のボットは常に右の行7-0で始まります。 ボットまたはセルの隣は、それと直接直交し対角にある8つのセルです。 ボットの視野(FOV)は、ボットを中心とした13×13セルの正方形です。セルまたは敵のボットは、少なくとも1つのボットのFOVにある場合、プレーヤーのFOVにあると言われます。 移動とアクション ゲーム中、各プレイヤーは1000回移動できます。P1が最初に移動し、次にP2、次にP1のように移動して、合計2000回移動し、ゲームが終了します。 移動中、各プレイヤーはゲームの状態、FOV内のグリッドセルおよび敵ボットに関する情報を受け取り、それを使用して各ボットが実行するアクションを決定します。 デフォルトのアクションはdo nothingです。この場合、ボットは移動したり、グリッドと対話したりしません。 他のアクションは、move、grab、およびplaceです。 次の場合、ボットは隣接するセルCのいずれかに移動できます。 Cは範囲外ではありません。 Cは空気(壁ではない)、 そして、Cの少なくとも1つの隣人は壁です。 成功すると、ボットはCに移動します。 次の場合、ボットは隣接セルCの1つを取得できます。 Cは範囲外ではありません。 Cは壁、 ボットはまだ壁を運んでいません。 成功すると、Cは空中になり、ボットは壁を運びます。 ボットはでき置くその隣接セルCの場合のいずれかに: Cは範囲外ではありません。 Cは空気、 どちらのプレイヤーのボットもCを占有しません。 ボットは壁を運んでいます。 成功すると、Cは壁になり、ボットはもはや壁を運ばなくなります。 アクションが失敗すると、何も行われません。 少なくとも1つの壁を運ぶボットが占有しているセルには、壁の色が付いた小さな正方形が描かれています。ボットは壁なしで始まります。 記憶 移動中、プレイヤーはメモリにアクセスして変更することができます。これは、最初から空の文字列であり、ゲーム全体にわたって持続し、戦略データの保存に使用できます。 ゴール 黄色の十字線のセルは目標で、ランダムな位置から始まります。各プレイヤーのスコアは0から始まります。プレイヤーのボットがゴールに移動すると、そのプレイヤーのスコアは1増加し、次のターンの前にゴールがランダムに再配置されます。ゲーム終了時に最高スコアのプレイヤーが勝ちます。スコアが等しい場合、同点です。 移動中に複数のボットがゴールに移動した場合、プレーヤーはまだ1ポイントしか獲得できません。 目標が500の移動で同じ場所にあった場合、ランダムに再配置されます。目標がランダムに配置される場合は常に、ボットが占有しているセルに配置されないことが保証されています。 プログラムするもの この関数の本文を作成します。 function myMove(p1, …

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