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

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

9
KOTH:TNTランチャレンジ
これは、Minecraftのミニゲームに触発されました。ルールは非常に簡単です。走り回ってジャンプし、踏み込んだブロックはすべて消えます。目標は、最後の1つになることです。 ボットは完全なプログラムである必要があります。コマンドライン引数として入力を受け入れる必要があります。入力は「世界」のマップになります。以下に例を示します。 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxx xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx x xxxxxxxxxxxxx@xxxxxxxxxxx xxxxxx1xxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxxxxxxx x x xxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxxxxx xxx xx3xxxxxxxxxx xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx …

14
コードボット4:関数型プログラミング
sheesh、これは本当に4番目ですか?昔からのすべての人にとって、中心的な課題は同じですが、カスタム言語の代わりにJavaを使用しています。興味のある方のために、過去3つの CodeBot チャレンジをご紹介します。 CodeBotsの目標は、ボットをできるだけバイラルにすることです。各ボットには旗があり、旗がどこにでもあることを確認する必要があります。 API ボットは標準化された「プロトコル」に従い、ボットは以下のステップを同期的に進行します。 IPAddress selectMessageRecipient() ボットが「フレンドリ」メッセージの送信先を選択できるようにします。 Message sendMessage() ボットが送信するメッセージの内容を選択できるようにします。 processMessage(IPAddress, Message) ボットが受信するメッセージごとに呼び出されます。 FunctionType selectFunctionToBlock()現在のターンで関数が上書きされるのをブロックします。手順7を参照してください。 IPAddress selectAttackTarget()ボットがDDOSを希望するユーザーを選択できるようにします。ボットが同時に3つのボットの標的になっている場合、DDOS攻撃は成功します。攻撃が成功した場合、各攻撃者はステップ6および7を実行できます。 readData(ReadonlyBot) ボットが脆弱なボットに保存されているデータを読み取れるようにします。 FunctionType selectFunctionToReplace()この挑戦の核心です。1つの機能(ここにリストされている8つのうち)を選択して、ボットからボットにコピーできます。その後、関数はtheirsの代わりに呼び出されます。複数のボットが同じ機能を選択した場合、ランダムなボットが成功します。 String getFlag()はゲームの終了時に呼び出され、送信に固有の文字列を返す必要があります。関数は常に同じ文字列を返す必要があります。ゲームの最後に最も多くのフラグが付いた提出が勝ちです。 ストレージ ストレージには、AddressBook、Log、Variablesの 3つの形式があります。 これらの形式のストレージは、関数が実行されているボットに対してローカルです(関数がコピーされた場合、これらの各オブジェクトの内容は異なります)。これらのオブジェクトはすべて、手動で変更または消去できます。これらのオブジェクトを取得するには、クラスにゲッターがあります(例:)getLog()。 アドレス帳は、リストに格納たIPAddressと、各AddressTypeにあなたがアドレスの種類を分類することができます。 AddressBookには常に少なくとも1つのアドレスが含まれます(クリアされた場合、ランダムなアドレスが追加されます)。アドレス帳をクリアして複数のIPアドレスを取得するは許可されていません。 ログはすべて実行されたアクションだけでなく、行動に関するデータのリストを格納します。また、成功したすべての攻撃の履歴も含まれます(ただし、どの機能が上書きされたかはわかりません) 変数オブジェクトを使用すると、文字列の名前に接続文字列変数を格納することができます。ゲームの開始時に、変数には単一の変数が含まれますID。これには、ボットタイプに固有のランダムに生成されたIDが含まれます。 他のアクセス機能もあります。 int getTurnNumber() 現在のターンの整数を返します bool functionsMatch(ReadonlyBot, FunctionType) ReadonlyBotの関数があなたのものと一致するかどうかをテストします IPAddress personalAddress() あなたのIPアドレスを返します 実装方法 Githubからコードを入手できます ボットを\botsフォルダーに追加してから、ボットへの参照を追加しますcontroller\CodeBotFactory.java ボットを拡張するcodebots.bot.CodeBotか、codebots.bots.DefaultCodeBot コントローラーを実行する場合は、Java 8が必要です。 …

3
簡易カーニングを実装する
前書き カーニングとは、テキストの文字間の間隔を調整することを意味します。例として、Top次の3つのグリフで書かれた単語を考えます。 ##### ..... ..... ..#.. ..... ..... ..#.. ..##. .###. ..#.. .#..# .#..# ..#.. .#..# .#..# ..#.. ..##. .###. ..... ..... .#... ..... ..... .#... グリフ間のギャップをドットで埋めて完了させることもできますが、ギャップはどうやら広すぎるように見えます。代わりに、グリフを左にスライドさせて、ほとんど触れないようにします。 #####........ ..#.......... ..#..##..###. ..#.#..#.#..# ..#.#..#.#..# ..#..##..###. .........#... .........#... これはずっと良く見える!のバーがTの左の境界線の上にあることに注意してくださいo。この課題では、このような長方形のグリフに簡単なカーニングプログラムを実装することがタスクです。 カーニングプロセス 二長方形の2次元文字配列考える.と#同じ形状を。単純なカーニングプロセスでは、最初に1列の.sを挟んで配列を並べて配置します。次に、#右と左の配列のいくつか#が直交または斜めに隣接するまで、右の配列のそれぞれを左に1ステップ移動します。カーニングの結果は、隣接するを導入する前のステップ#です。あなたの仕事は、このプロセスを実装することです。 例を見てみましょう: Inputs: ..### #.... #.... ..##. ...#. ...## ..### ....# Process: ..###....#. …
24 code-golf  grid  code-challenge  atomic-code-golf  code-golf  combinatorics  probability-theory  card-games  code-golf  number  geometry  code-golf  decision-problem  chess  code-golf  math  number  sequence  code-golf  string  regular-expression  code-golf  arithmetic  integer  code-golf  math  array-manipulation  code-golf  number  decision-problem  integer  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  decision-problem  graph-theory  binary-matrix  code-golf  string  parsing  code-golf  string  code-golf  morse  code-golf  code-golf  string  code-golf  ascii-art  cellular-automata  code-golf  binary  base-conversion  code-golf  arithmetic  decision-problem  integer  checksum  code-golf  matrix  linear-algebra  code-golf  code-golf  game  code-golf  sequence  binary  code-golf  combinatorics  optimization  code-golf  decision-problem  quine  code-golf  rational-numbers  bitwise  code-golf  string  permutations  code-golf  kolmogorov-complexity  unicode  code-golf  ascii-art  number  code-golf  number  integer  binary  base-conversion  code-golf  array-manipulation  code-golf  chemistry  code-golf  number  sequence  fibonacci  code-golf  matrix  optimization  code-golf  number  code-golf  math  number  sequence  code-golf  math  array-manipulation  matrix  linear-algebra  code-golf  kolmogorov-complexity  cops-and-robbers  cops-and-robbers  code-golf  tips  basic  code-golf  decision-problem  binary  tiling  game  king-of-the-hill  python  code-golf  c  code-golf  ascii-art  code-golf  string  kolmogorov-complexity  alphabet  code-golf  number  code-golf  string  code-golf  number  sequence  integer  code-golf  number  permutations  restricted-complexity  restricted-time 

8
KOTH:みんなトークンが大好き
このゲームでは、2人のプレイヤーがトークンの最も多くのポイントを食べるために競いますが、ひねりがあります!同じ色の行で複数のトークンを食べると、増え続けるボーナスが得られますが、気を付けないと、相手はあなたが望む前にあなたが望むトークンを食べることであなたの計画を妨害します! ルール: 1対1 n x nボード(5x5〜15x15のランダムサイズ) あなたとあなたの対戦相手は同じランダムなセルに出現します ボード全体で、値が1〜3の範囲のいくつかのセルでランダムに生成された数値になります。 2 *(ボードの幅)トークンが生成されますが、オーバーライドが存在する可能性があるため、偶然少ない可能性があります。 各数値は、赤、緑、または青の16進数RGB形式の3色のいずれかです。 ラウンドごとに、プレーヤー1が移動してボードが更新され、次にプレーヤー2が移動してボードが更新されます。そのため、各プレイヤーは、ボードの状態の変化に基づいて、前のプレイヤーがどのような動きをしたかを効果的に知ることができます。後述するように、これはゲームが終了するまで続きます。 ターンには6つのアクションがあります:UP、RIGHT、DOWN、LEFT、EAT、PASS 4つの移動コマンドは一目瞭然であり、自分のターンをパスできます。あなたが無意味な動きを返す場合、我々はあなたがパスを意味すると仮定します。ボードの端から移動しようとしても、移動しません。エッジはラップしません。 EATは、現在と同じスペースにいる番号を消費します 消費した数だけポイントを獲得できます 同じ色の2つの数字を連続して食べると、+ 1が得られます 同じ色の3つの数字を連続して食べると、+ 2になります 同じ色の行にm個の数字を食べると、+(m-1)が得られます これらのボーナスは累積的に追加されるため、m個の数字を連続して取得すると、異なる色を食べるまでに合計ボーナスがm *(m-1)/ 2になります。 ゲーム終了条件: すべての数字が消費されます 4 *(ボードの幅)ターンはいずれかのプレイヤーによって発生した効果的な食事なし(あなたがいないトークンなしで "EAT"と言うだけ)になりました(トークンは2 *(幅)で到達可能です)移動するため、両方のプレイヤーが単一のターゲットトークンを念頭に置いていない場合にのみ、この境界を超えます) AIが移動するのに要する時間は1秒未満です。そうでない場合、PASSが選択として想定されます。 トーナメントは、100または1000などの多数のラウンドを含むラウンドロビンになります。ランダムなボードが生成され、異なるボードの各注文ペアがそのボードで実行されます。トーナメントが完了したら、合計スコアで人々をランク付けします。あなたがゲームのプレイヤー2であっても、目標は可能な限り多くのポイントを獲得することです。 AIの提出:コントローラーがサポートする言語はJavascriptです。複数の提出が許可されています。誰もがこのようなオブジェクトのコンストラクタを送信します: function (player1) { this.yourMove = function (b) { return "MOVE"; } } 入力player1は、プレイヤー1であるかどうかを示すブール値です。コンストラクタにはyourMove関数が必要ですが、追加の関数や値をいくつでも持つことができます。グローバル変数を定義せず、オブジェクトに変数として配置するだけです。オブジェクトの新しいバージョンは、各マッチの開始時に作成され、 yourMove現在のボードを入力として、各ターンで呼び出され、有効なムーブを返す必要があります。 b入力は、yourMove、であるコピー現在のボードのあなたがそれらを自分で呼び出すことはできませんが、ここでのコンストラクタは、入力例を、以下のとおりです。 function token(color, …

9
チェストーナメント
これは、単純化されたルールを持つチェスKOTHです(チェス自体は既に複雑であるため、単純なプログラムでプレイしても簡単にはなりません)。現時点ではjava(バージョン8)に限定されていますが、ラッパークラスの作成はそれほど難しくありません(誰かがこれを行いたい場合)。 チェス盤 制御プログラムのチェス盤は、ICCF数値表記の修正バージョンを使用します。これはゼロベースです。つまり、左下のフィールドはposition 0,0であり、右上のフィールドはposition 7,7です。 変更されたルール 入場者は無視されます。 キャスリングはできません。 50手ルールは、(引き分けで試合終了を意味する)に自動的に適用されます。 クイーンへのポーンのプロモーションは、ボードの終わりに達すると自動的に行われます。 プレイヤーが移動するのに2秒以上かかる場合、ゲームに負けます。 無効な動きを返すと、ゲームに負けます。 勝つためには、敵の王を捕獲する必要があります。敵をチェックメイトするだけでは不十分です。 これにより、敵を捕まえることができるフィールドに王を移動させることもできます。 白がゲームを開始します。 白はフィールドの「下部」に配置され(y = 0)、黒は上部に配置されます(y = 7)。 ボット以外のリソース(インターネット、ファイル、他のボットなど)へのアクセスは禁止されています。 得点 勝つと3ポイント、引き分け1ポイント、0ポイントを失います。 各サブミッションは、他のサブミッションと10回対戦します(白で5回、黒で5回)。 コントローラ 制御プログラムはgithubで見つけることができます。 参加するには、playerパッケージ内にクラスを作成する必要があり、そのサブクラスである必要がありPlayerます。例として、 TestPlayerを見てください(これもスコアに含まれます)。 各ゲームで、コントローラーはプレーヤーの新しいインスタンスを作成します。その後、ターンごとに移動を返す必要があります。コントローラは、フィールドの 8x8配列を含むボードのコピーを提供します。フィールドには、その色、位置、および存在する場合はその部分に関する情報が含まれます。 コントローラはまた、のような、敵の選手についての情報を提供しますと。敵を呼び出すと失格になります。isCheckgetPieces()getMove() スコアボード 01)AlphaBetaPV:229 02)AlphaBeta:218 03)PieceTaker:173 04)チーズ:115 05)ThreeMoveMonte:114 06)StretchPlayer:93 07)DontThinkAhead:81 08)SimplePlayer:27 09)TestPlayer:13 コンテストは、コントローラーによって提供されるメソッドから利益を得ることができるため、回答の作成が容易になるため、Javaに限定されています。ただし、誰かがラッパーを作成する場合は、他の言語を含めます。

5
キングオブザヒル:Speed Clue AI
スピードの手がかり Cluedo / Clueは、説得力のある控除ゲームプレイコンポーネントを備えたクラシックなボードゲームです。Speed Clueは、カードのみを使用してこのコンポーネントを強調する3〜6プレーヤーのバリエーションです。その結果、標準のCluedoとSpeed Clueの唯一の違いは、サイコロの出目や他のプレイヤーの提案に翻弄されて特定の部屋に到着するのを待つのではなく、ゲーム内にいる各プレイヤーが自分のターンで好きな提案をすることができるということです。以前にCluedoをプレイしたことがない場合、または2つのバージョンの明確な違いを確認したい場合は、ここで完全なSpeed Clueルールセットを見つけることができます。 ゴール 2014年5月15日00:00 GMTより前にSpeed ClueをプレイするAIプログラムを作成して送信します。その後、すべての法的エントリを使用してトーナメントを開催します。AIがトーナメントで最も多くのゲームに勝った参加者が挑戦に勝ちます。 AI仕様 サーバーでゲームをプレイするためにTCP / IP接続を介してアプリケーションプロトコルを厳密に使用する限り、使用するテクニックを使用して、選択したほぼすべての言語でAIを作成できます。すべての制限の詳細な説明はここで見つけることができます。 遊び方 コンテストGitHubリポジトリをフォークすることから始めます。entriesStackExchangeユーザー名を使用して命名されたディレクトリの下にディレクトリを追加し、 そのフォルダでコードを開発します。エントリを送信する準備ができたら、リビジョンを使用してプルリクエストを行い、このサイトでエントリを発表するためのこれらの指示に従ってください。 core始めるためにディレクトリにいくつかのコードとJARを提供しました。材料の大まかなガイドについては、私のサイトを参照してください。さらに、他のプレーヤーは、エントリーに加えてヘルパーコードを送信して、起動と実行を支援します。エントリを調査するために時間をかけてください。送信する前に、他のエントリに対して自分のエントリをテストすることを忘れないでください! 結果 Place | User | AI | Result ------+--------------+--------------------+------------------------------------------------------- 1 | gamecoder | SpockAI | 55.75% 2 | Peter Taylor | InferencePlayer | 33.06% 3 | jwg | CluePaddle | 20.19% …

15
セミパリンドロームパズル
回文とは、それ自体が逆の言葉です。 今ではパリンドロームのように見えるかもしれないがそうではない単語がいくつかあります。たとえば、単語 はパリンドロームsheeshで sheeshはありません。その逆はhseehsどちらが異なるかを考えshてみましょう。しかし、単一の文字と考えると、逆はになりsheeshます。この種の単語をセミパリンドロームと呼びます。 具体的には、単語をいくつかのチャンクに分割して、チャンクの順序が逆になったときに元の単語が形成される場合、単語はセミパリンドロームです。(sheeshこれらのチャンクはsh e e sh)単語の両方の半分からの文字を含むチャンクも必要ありません(そうでない場合、すべての単語はセミパリンドロームになります)。たとえば、元の単語の両側の文字を含むチャンク()があるrearため、セミパリンドロームではありません。奇数の長さの単語の中心文字は単語のどちら側にもないと考えます。したがって、奇数の長さの単語の場合、中心文字は常に独自のチャンクになければなりません。r ea rea あなたの仕事は、正の整数のリストを取得し、それらがセミパリンドロームかどうかを判断することです。コードは、入力がセミパリンドロームの場合とそうでない場合の2つの一貫した等しくない値を出力する必要があります。ただし、コードのバイトシーケンスはセミパリンドロームそのものでなければなりません。 回答はバイト単位でスコアリングされ、バイト数が少ないほど優れています。 テストケース [] -> True [1] -> True [2,1,2] -> True [3,4,2,2,3,4] -> True [3,5,1,3,5] -> True [1,2,3,1] -> False [1,2,3,3,4,1] -> False [11,44,1,1] -> False [1,3,2,4,1,2,3] -> False より多くのテストケースを生成するプログラム。 恐ろしいことは、これらが一般化されたスマランダチェ回文に似ていることを指摘した。したがって、さらに読みたい場合は、1つの場所から始めてください。

15
証券取引所KoTH
株式市場はすべて知識のスピードにかかっています。以前の課題とは異なり、現在の株価はランダムではありません。ゲームをプレイする人によって決定されます。 低価格の株を他の誰よりも早く特定できるなら、あなたは自分でお金を稼ぐプログラムを書いた。 価格は人々が株を取引している量を指し、値はゲームの終了時に株が価値がある量を指します。 各プレイヤーは、各株の1000、および0の相対的な自己資本で始まります。 各株式には秘密の価値があり、ゲーム終了時のスコアは(stockValue for each ownedStock) + netWorthです。純資産はマイナスになる可能性があります。Nプレーヤーゲームでは、N株があります。 手順: ゲームは次の手順に従います。 単一の株式の秘密の価値が与えられます。 XのY株を$ Zで販売することを申し出ます すべてのプレーヤーにオファーが与えられ、それぞれが受け入れるものを選択できます すべてのプレーヤーは、受け入れられたオファーについて通知されます 手順2に戻る 各ステップの詳細を以下に示します。 void secretValue(int stockType, int value): あなたが学ぶ価値は、他のプレイヤーには明らかにされません。 値が間にある0と1000 低い値は高い値よりも発生しやすい(2乗均一分布) Offer makeOffer(List<Stock> currentStock) 戻っnullて申し出を行うことはできません。 Offer acceptOffer(List<Offer> offers) あなたnullはそれらのどれも受け入れずに戻ることができます 利用可能なオファーがない場合、これは呼び出されません 受け入れた場合、純資産は$ Z(マイナスになる可能性があります)低下し、XのY株を受け取ります。売り手とは逆のことが起こります。 オファーを受け入れると、交換はすぐに行われ、オファーは削除され、追加のプレーヤーは受け入れられなくなります。 void acceptedOffers(List<Offer> offers) 受け入れられたオファーも含まれます 静的変数またはファイルへの書き込みは許可されていません。(ゲームからゲームへの永続的なデータはありません)深刻でない競合者は許可されます。 インターフェース: public final class Stock { …

7
キングペン!(ドットとボックス)
これはドットとボックス(別名、ペンザピッグ)のキングオブザヒルチャレンジです。ゲームは簡単です。あなたの番では、空のフェンスに線を引くだけです。正方形を完成するたびにポイントを獲得します。また、私たちはチャンピオンシップルールに従ってプレーしているため、自分のターンで少なくとも1つのスクエアを完了すると、追加のターンが得られます。これはラウンドロビントーナメントで、各ボットは9x9グリッドで12回、お互いのボットを2回プレイします。ChainCollectorが共同チャンピオンAsdfのミンチ肉を作る2つのヘビー級タイタンの間のこの試合をチェックしてください: ルール 移動ごとに0.5秒の制限時間。 他のボットと干渉しません。 ランダム性のためにPigPen.random()およびPigPen.random(int)を使用します。 ファイルへの書き込みはありません。 ボットとそのすべての永続データは、対戦相手が変わるたびにリセットされます(12ラウンドごと)。 ボット すべてのボットはPlayer.javaを拡張します。 package pigpen; public abstract class Player { public abstract int[] pick(Board board, int id, int round); } Board主にPenクラスへのアクセスを提供するゲームボードでありid、playerID(1番目または2番目の場合roundはあなたに伝えます)は、同じ対戦相手(1または2)に対してどのラウンドをプレイしているかを示します。戻り値はです。int[]最初の要素はpenID(1から始まる)で、2番目の要素はfenceID(0から始まる)です。Pen.pick(int)この戻り値を生成する簡単な方法を参照してください。プレーヤーとJavaDocの例については、Githubページを参照してください。正方形グリッドのみを使用しているため、六角形に関連する関数とフィールドは無視されます。 実行方法 Githubからソースをダウンロードします。 コントローラーボットを作成し(必ずを含めてくださいpackage pigpen.players)、src/フォルダーに入れます。 でコンパイルしjavac -cp src/* -d . src/*.javaます。実行java pigpen.Tournament 4 9 9 false(グリッドサイズを調整するために最後の2つの数値を変更できます。最後の変数はtrue、pp_recordソフトウェアを使用する場合にのみ設定する必要があります。) スコア チェーンコレクター:72 Asdf:57 レイジーボーン:51 フィニッシャー:36 = LinearPlayer:18 = …

6
ホットポテトセールスマン
点のリストが与えられたら、すべての点を訪れて開始点に戻る最短経路を見つけます。 巡回セールスマン問題として計算/それを近似する多くの方法があり、コンピュータサイエンスの分野ではよく知られています。非常に大きなポイントのグループについては解決されていますが、最大のもののいくつかは完了するまでに多くのCPU年を要します。 じゃがいもに火傷しないでください。 Hot Potatoは、2人以上のプレーヤーが音楽を再生しながら「じゃがいも」を一周するゲームです。オブジェクトは、次のプレーヤーにすばやく渡すことです。音楽が停止したときにジャガイモを保持している場合、あなたは外出している。 Hot Potato Salesmanのオブジェクトは次のとおりです。 100個の一意のポイントのセットが与えられた場合、それらのポイントをより良い順序で返します(さらに下に定義されているように短い合計距離)。これにより、問題は次のプレーヤーに「渡されます」。彼らはそれを改善し、次のようにそれを渡す必要があります。プレーヤーがそれを改善できない場合、彼らは外に出て、一人のプレーヤーが去るまでプレイを続けます。 これが「総当たり戦」の競争にならないようにするために、次の規定があります。 ジャガイモを渡すのに1分以上かかることはありません。1分が経過するまでに短い解決策を見つけて合格しなかった場合は、外出します。 25ポイントを超える位置は変更できません。正確には、>= 75ポイントは受け取った位置と同じでなければなりません。どちらを変更するかは問題ではなく、変更する量だけです。 プレイヤーが1人しか残っていない場合、そのプレイヤーがそのゲームの勝者となり、1ポイントを獲得します。トーナメントは5*nゲームで構成されnます。ここで、プレイヤーの数です。各ゲーム、開始プレイヤーが回転し、残りのプレイヤーの順番がシャッフルされますます。最後にポイントが最も多いプレイヤーがトーナメントの勝者です。トーナメントが1位タイで終了した場合、新しいトーナメントはそれらの競技者のみでプレイされます。同点がなくなるまでこれが続きます。 各ゲームの開始プレーヤーは、特定の順序で疑似ランダムに選択されたポイントのセットを受け取ります。 ポイントはx,y、デカルトグリッド上の整数座標のペアとして定義されます。距離は、マンハッタン距離を使用して測定され|x1-x2| + |y1-y2|ます。すべての座標は[0..199]範囲内にあります。 入力 入力は単一の文字列引数で与えられます。現在のプレイヤー数(m)と100ポイントを表す201個のコンマ区切り整数で構成されます。 m,x0,y0,x1,y1,x2,y2,...,x99,y99 これらのポイントの順序は現在のパスです。合計距離は、各ポイントから次のポイントまでの距離を加算することによって取得されdist(0,1) + dist(1,2) + ... + dist(99,0)ます()。合計距離を計算するときは、開始することを忘れないでください! でmはないことに注意してくださいゲームを開始したプレイヤーの数で、まだ参加しているプレイヤーの数で。 出力 出力は入力と同じ方法でマイナスで与えられmます。新しい順序でポイントを表すコンマ区切りの整数を含む単一の文字列。 x0,y0,x1,y1,x2,y2,...,x99,y99 制御プログラムは、1分間だけ出力を待機します。出力を受信すると、次のことを確認します。 出力は整形式です 出力は、から構成のみ及び全ての入力で100点、本 >=75 ポイントは元の位置にあります パスの長さが前のパスより短い これらのチェックのいずれかが失敗した(または出力がなかった)場合、あなたは退出し、ゲームは次のプレイヤーに進みます。 制御プログラム このリンクで制御プログラムを見つけることができます。制御プログラム自体は決定論的であり、ダミーのシードとともに投稿されます1ます。スコアリング中に使用されるシードは異なるため、吐き出す順番やポイントのリストを分析しようとしないでください。 メインクラスはTourneyです。これを実行すると、引数として与えられた競技者との完全なトーナメントが行われます。それは各ゲームの勝者と最後に集計を吐き出します。2つのSwapBotを使用したサンプルトーナメントは次のようになります。 Starting tournament with seed 1 (0) SwapBot wins …

24
ogl-edocfチャレンジ
入力 範囲のASCII文字で構成される空でないシャッフルされた文字列。[ 32..126 ][32..126][32..126] 出力 出力は、入力文字列に連続した回転を適用することにより取得されます。 [a-zA-Z]入力文字列の各文字()について、左から右へ: 文字が大文字の場合、その前のすべての文字を左に1ポジションだけ回転します 文字が小文字の場合、その前のすべての文字を1つ右に回転します 例 入力:「Cb-Ad」 最初の文字は「C」です。左に回転する必要がありますが、この「C」の前に文字はありません。したがって、回転するものは何もありません。 次の文字は「b」です。「C」を右に回転します。単一の文字であるため、変更されません。 文字「-」は文字ではないため、回転をトリガーしません。 次の文字は「A」です。「Cb-」を左に回転すると、「bC Ad」が得られます 4番目の最後の文字は「d」です。「b-CA」を右に回転させると、「Ab-C d」が得られます したがって、予想される出力は「Ab-Cd」です。 ルール 入力は、文字列または文字の配列として受け取ることができます。これは、言語に応じて、同じである場合とそうでない場合があります。 文字列の代わりに文字の配列を出力することもできます。 これはogl-edocf code-golfです テストケース "cbad" -> "abcd" "ACBD" -> "ABCD" "Cb-Ad" -> "Ab-Cd" "caeBDF" -> "aBcDeF" "aEcbDF" -> "abcDEF" "ogl-edocf" -> "code-golf" "W o,ollelrHd!" -> "Hello, World!" "ti HIs …
22 code-golf  string  code-golf  string  code-golf  string  parsing  brainfuck  code-challenge  python  hello-world  error-message  code-golf  string  code-golf  number  integer  counting  subsequence  code-golf  string  cipher  code-golf  array-manipulation  arithmetic  integer  matrix  code-golf  math  sequence  code-golf  restricted-source  pi  popularity-contest  cops-and-robbers  polyglot  popularity-contest  cops-and-robbers  polyglot  code-golf  file-system  king-of-the-hill  code-golf  number  sequence  integer  rational-numbers  string  code-challenge  source-layout  code-golf  ascii-art  king-of-the-hill  code-golf  array-manipulation  sorting  code-golf  string  code-golf  restricted-source  source-layout  tips  math  code-challenge  permutations  logic-gates  code-golf  number  random  integer  code-golf  math  code-golf  math  number  decision-problem  king-of-the-hill  python  board-game  code-challenge  brainfuck  busy-beaver  code-golf  number  cops-and-robbers  polyglot  obfuscation  answer-chaining  code-golf  number  integer  conversion  code-golf  string  parsing  code-golf  ascii-art  number  king-of-the-hill  javascript  code-golf  source-layout  radiation-hardening  code-golf  array-manipulation  matrix  code-golf  string  graph-theory  code-golf  array-manipulation  decision-problem  code-golf  string  ascii-art  code-golf  string  code-golf  array-manipulation 

3
Scrappers v0.1:Mer兵プログラマー
都市が凶悪犯や泥棒によって圧倒されている荒廃した戦争で荒廃した世界では、文明は以前は無人の風景に散らばっていた小さな孤立した産業協同組合の形でそれ自体を改革しました。これらのコミュニティの存在は、「スクレイパー」と呼ばれるmerc兵労働者のチームに依存しており、彼らは小屋に売るための貴重な材料を手付かずの領域で探します。これらの材料がますます不足するにつれて、廃棄はますます困難で危険な職業になっています。壊れやすい人間の労働者は、ほとんどが「ロボット」と呼ばれるリモートロボットスタンドインに置き換えられており、典型的なmerc兵は武装した溶接機よりも熟練したプログラマである可能性が高くなります。廃棄における人間の存在が減少するにつれて、merc兵グループ同士の尊敬もまた減りました。ボットは、スクラップを収集するだけでなく、それを守るために装備されており、場合によってはそれを強制的に取得します。ボットプログラマーは、ライバルスクラッパーをしのぐための新しい戦略をたゆみなく考案し、攻撃的なボットを増やし、コミュニティの壁の外に飛び出す人間にとっては別の危険をもたらします。 (ええ、ロゴは陽気に切り取られます) Scrappersへようこそ! これはスクラップ収集と工場が実装されていない初期バージョンのスクレイパーです。基本的には「撃つ」ことです。 あなたは、ライバルのスクレーパーグループを勝ち抜くためにボットをリモートで実行するプログラムを作成するmerc兵プログラマです。ボットは、把持と切断、攻撃用具を装備した多くの付属物に囲まれた、電源とシールドジェネレーターを中心にしたクモのような機械です。発電機は、ティック(スクレーパーの時間単位)ごとに12の電力ユニット(pu)を生成できます。あなたは、この力がボットの3つの主要なニーズにどのように分配されるかを制御します:移動、シールド、および火力。 スクレイパーボットは非常に機敏なマシンであり、遭遇する障害物の上、下、および周囲を簡単に移動できます。したがって、衝突はプログラムで考慮する必要のあるものではありません。整数で処理する限り、移動に使用できる12puのすべて、一部、またはすべてを自由に割り当てることができます。ボットの移動関数に0puを割り当てると、ボットは動かなくなります。2puを割り当てると、ボットはティックごとに2距離単位(du)移動でき、5puは5du / tickになり、11puは11du / tickになります。 ボットのシールドジェネレーターは、体の周りに偏向エネルギーの泡を投影します。シールドはポッピングする前に最大1ダメージまで撓むことができるため、シールドジェネレーターがシールドを元の位置に戻すのに十分な電力を生成するまでボットを露出したままにします。ボットが利用できる12puのすべて、一部、またはどれもをシールドに割り当てることは自由です。ボットのシールドに0puを割り当てることは、ボットがシールドを生成しないことを意味します。2puを割り当てると、ボットは12ティックのうち2ティック、または6ティックごとに1回、新しいシールドを生成できます。5puでは、12ティックごとに5シールドの再生成が行われます。 溶接レーザーに電荷を蓄積することにより、ボットは短距離で損傷ビームをかなりの精度で発射できます。シールドの生成と同様に、ボットの発射速度はレーザーに割り当てられたパワーに依存します。ボットのレーザーに0puを割り当てることは、ボットが発砲しないことを意味します。2puを割り当てると、ボットは12ティックごとに2発を発射できるようになります。ボットのレーザーは、物体に遭遇するか、無用に分散するまで移動するため、友好的な火に注意してください。ボットは非常に正確ですが、完全ではありません。精度に+/- 2.5度のばらつきがあるはずです。レーザービームが進むにつれて、その粒子は、ビームが十分な距離で効果的に無害になるまで、大気によって徐々に偏向されます。レーザーは、ポイントブランクの範囲で1ダメージを与え、移動するボットの長さごとにダメージを2.5%減らします。 Scrapperボットは基本的な機能を処理するのに十分な自律性を備えていますが、プログラマーであるあなたに依存してグループとして役立つようにします。プログラマーとして、各ボットに対して次のコマンドを発行できます。 MOVE:ボットが移動する座標を指定します。 ターゲット:電力割り当てが許可されたときに狙いを定めて発砲するボットを特定します。 パワー:移動、シールド、火力の間でパワーを再配分します。 テクニカルゲームの詳細 あなたが精通する必要がある3つのプログラムがあります。ゲームエンジンは重いリフターで、プレーヤープログラムが接続することをTCPのAPIを提供します。プレイヤープログラムはあなたが書くものであり、ここでバイナリを使用したいくつかの例を提供しました。最後に、レンダラーはゲームエンジンからの出力を処理して、戦闘のGIFを生成します。 ゲームエンジン ここからゲームエンジンをダウンロードできます。ゲームが起動されると、ポート50000(現在は構成不可)でプレーヤー接続のリッスンを開始します。2つのプレーヤー接続を受信すると、READYメッセージをプレーヤーに送信し、ゲームを開始します。プレーヤープログラムは、TCP APIを介してコマンドをゲームに送信します。ゲームが終了すると、scrappers.jsonという名前のJSONファイル(現在は構成できません)が作成されます。これは、レンダラーがゲームのGIFを作成するために使用するものです。 TCP API プレーヤープログラムとゲームエンジンは、改行で終了するJSON文字列をTCP接続でやり取りすることで通信します。送信または受信できるJSONメッセージは5つだけです。 レディメッセージ READYメッセージは、ゲームからプレーヤープログラムに送信され、一度だけ送信されます。このメッセージは、プレーヤープログラムにプレーヤーID(PID)が何であるかを伝え、ゲーム内のすべてのボットのリストを提供します。PIDは、どのボットが味方か敵かを判断する唯一の方法です。以下のボットフィールドの詳細。 { "Type":"READY", // Message type "PID":1, // Player ID "Bots":[ // Array of bots { "Type":"BOT", "PID":1, "BID":1, "X":-592, ... }, ... ] …

30
最初に0ではなく、個別の数字でランダムなn桁の数字を取得します
私はこの質問を読み、それがいい挑戦になると思った。 仕事 入力0<n<10で乱数を生成する 正確にn桁 最初ではない 0 そう f(n)>10**(n-1)-1 個別の数字 受賞基準 これはコードゴルフなので、最短のコードが優先されます。 ランダム ランダムに均等に分散されるということです。そのため、プログラムの観点からは、考えられる各数字には同じチャンスがあります。あなたが書いている言語が奇妙な乱数ジェネレーターを持っているなら、それを使用しても大丈夫です。 例 ランダムに選択する値のリストn=2は次のとおりです。 [10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, …
22 code-golf  number  random  grid  game  king-of-the-hill  javascript  code-golf  arithmetic  statistics  code-golf  math  code-golf  math  code-golf  string  palindrome  code-golf  string  interactive  code-golf  quine  polyglot  code-golf  string  stack-exchange-api  code-golf  number-theory  decision-problem  code-golf  tips  code-golf  string  internet  code-golf  graphical-output  image-processing  fractal  code-golf  ascii-art  geometry  hexagonal-grid  code-golf  string  restricted-source  hello-world  code-golf  game  code-golf  cipher  code-golf  permutations  cops-and-robbers  permutations  cops-and-robbers  code-golf  internet  stack-exchange-api  code-golf  ascii-art  random  code-golf  tips  code-golf  ascii-art  code-golf  code-golf  kolmogorov-complexity  code-golf  string  unicode  code-golf  number  sequence  primes  palindrome  code-golf  game  decision-problem  code-golf  math  geometry  code-golf  graphical-output  interactive  code-golf  set-partitions  code-golf  number  arithmetic  restricted-source  code-golf  decision-problem  python  recursion  code-golf  ascii-art  code-golf  source-layout  code-golf  function  recursion  functional-programming  code-golf  game  combinatorics  permutations  code-golf  string  file-system  code-golf  string  hashing  code-golf  stack-exchange-api  code-golf  string  code-golf  math  number  arithmetic  polyglot 

9
キングオブザヒル-嘘つきのサイコロ
嘘つきのサイコロはかなりシンプルなサイコロゲームです。ルールにはいくつかの異なるバリエーションがありますが、最もよく知っているバージョンは次のとおりです。 各プレイヤーは5d6で始まります ラウンドの終わりにサイコロを集計する場合を除き、各プレイヤーは自分のサイコロを見ることができますが、どの敵のものも見ることはできません 任意のラウンドの開始時に、すべてのプレイヤーは現在持っているサイコロを転がします 次に、1人のプレーヤー(通常、これは前のラウンドの勝者または前回開始したプレーヤーの左側のプレーヤーのいずれかです。このKotHには前者を使用します。ランダムなプレーヤーが最初のラウンドを開始します)テーブルに特定の数字がいくつあるかを推測します(ONES ARE WILD) 入札は右側に続き、毎回高くなります(たとえば、3 5、3 6、4 2はすべて3 4よりも高くなりますが、3 3はそうではありません。4が高くなりますが、1に入札するとおそらく不利益); いずれかのプレイヤーがその前のプレイヤーを嘘つきと呼ぶまで この時点で、すべてのプレイヤーはサイコロを公開し、テーブルで最後に入札した数をすべてカウントします 合計が入札よりも低い場合、入札を行ったプレーヤーは、彼らを嘘つきと呼んだプレーヤーにダイスを与えなければなりません。そうでなければ、入札者を嘘つきと呼んだプレーヤーは、入札者にダイスを与えなければなりません彼らが少なくとも彼が入札した数と同じ数であれば、正確な数である必要はありません) あなたがサイコロを使い果たすと、あなたは失う 最後のプレイヤーが勝ちます 例えば: プレイヤー1には1,1,2,4,6があります プレイヤー2には1,2,2,3,5があります プレイヤー3には1,3,3,4,6があります プレイヤー1:3つのシックス。 プレイヤー2:4 2。 プレイヤー3:フォースリー。 プレイヤー1:5 2。 プレイヤー2:6 2。 プレイヤー3:6人のスリー。 プレーヤー1:6人の4人。 プレイヤー2:うそつき! 彼らはサイコロを公開し、(サイコロがワイルドであるため)サイコロとフォーを数えます。 実際には、正確に6つのフォーがあります。 したがって、プレイヤー2はプレイヤー1にダイスを与えます。 彼らはリロールし、プレイヤー1は次のラウンドを開始します。 このゲームをプレイするにはボットを作成する必要があります。次の抽象Javaクラスを実装する必要があります。 public abstract class Player { public Player() {} public String toString() { …

13
最速の西の銃、キングオブザヒルチャレンジ
これは、ラウンドロビンでのキングオブザヒルチャレンジです。西の最高のガンマンを見つけるのは戦いです! このコンテストに参加するには、2つの機能を作成する必要があります。最初の1つは、ガンマンの属性を設定し、2つ目は、ガンマンのメインロジック関数です。 属性関数 function () { var bot = { name: "testBot", numbOfBullets: 7, reloadSpeed: 1, shotsPerTurn: 1, moveSpeed: 2 } return bot } 属性関数には、いくつかの規則に従って設定する必要がある5つの変数が含まれます(例外はname任意の文字列です)。ガンマンに正確に合計15ポイントを費やす必要があります。15ポイントすべてを費やしていないガンマンは資格がありません。属性の仕組みは次のとおりです。 numbOfBullets -銃の弾数を定義します。 の初期値と最小値numbOfBulletsは1です。追加の弾丸ごとに1ポイントかかり、最大16個の弾丸に15ポイントが費やされます。 reloadSpeed -ガンマンが弾丸を使い果たした後に銃をリロードするのに必要なターン数を定義します。 基本値と最大値は4で、最小値は1です。この属性を1減らすと、2ポイントかかります。 shotsPerTurn -ガンマンが1ターンで撃てる回数を定義します。 基本値と最小値は1です。1ずつ増加するごとに3ポイントかかるため、ラウンドごとに最大6ショット、15ポイントを使用できます。上記のこの属性を上げるとnumbOfBullets、銃が保持できる以上の弾丸を撃つことができないため、逆効果です。 moveSpeed -ガンマンが1ターンで実行できるスペースの数を定義します。 基本値と最小値は1です。1ずつ増加するごとに3ポイント、最大6スピード、15ポイントが消費されます。ガンマンは、最大の移動速度まで、ターンごとに左または右に走ることができます。彼はまた、彼にボーナスを与えることができます(これについては後で説明します)。 上記の関数の例では、弾丸に6ポイント、リロード速度に6ポイント、動きに3ポイントを費やしています。 主な機能 function main(bulletsLeft, yourShots, enemyShots, yourMovement, enemyMovement) { var shots = []; …

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