イースターエッグハント
バニーが卵を見つける前にボットが卵を見つけます。ボットは幸せ。
概要
これは、イースターとイースターエッグハンティングの伝統に敬意を表して、王様の挑戦です!
ボットは、対角線を含むあらゆる方向に2つのスペースのビジョンを持ち、周囲に5x5の正方形を作成して見ることができます。卵を探しており、最も卵を見つけた人が勝ちます!
ボード
ボードはo
、イースターエッグである#
s、壁である*
s、他のプレイヤーであるs、および空のスペースであるsで構成されます。
- 辺の長さの正方形になります
(number of entries) * 3
。 - 壁に囲まれます。
- 壁の内側には、のランダムに配置された直線の壁の品揃えが
#
あり、2〜10のランダムな長さを持ちます。(number of entries) * 3
それらがあります。 - 卵はランダムに配置されます。
(number of entries) * 4
それらが存在し、空白()の正方形でのみ生成されます。
- ボード生成プロセスが適切に機能するには、少なくとも7つの全体が必要です。
以下に、テスト用のランダムボードを生成するJSFiddleを示します。以下に例を示し(number of entries) = 7
ます。
#####################
# o ##
# # o ##
# #o ###### ##
###### # ##
## o # # ##
## o# #o# o o##
## #o # # o # #
## # o # # # #
## ## # # o # #
## # # o # # #
## # o # ## # # #
## # # # #
# o # ## # #
# o oo ##o #
#o ####### oo ## #
# # # #
# o o o# #
# o #### o o#
# #
#####################
ボードが生成された後、各プレイヤーはランダムな正方形(空のスペース)に配置されます。
入力
入力は6行になります。最初の5行は視野です(ボードの境界外のスペースはで表されX
、中央のスペースは常に*
、あなたです)。6行目は空です(最初は)。
出力
3行を出力します。まず、移動したい方向:
1 2 3
8 YOU 4
7 6 5
(移動したくない場合、9はノーオペレーションです)、2番目、A
タック、C
オウンター、またはN
オシングのいずれか(これについてはすぐに説明します)、3番目の行は最大1024までの文字列ですこれがボットの記憶になります。任意の目的に使用することも、空白のままにすることもできます。このメモリは、次回の実行時にプログラムへの入力の6行目になります。
出力のそれ以降の行はすべて無視され、1行しかない場合、2行目は空白と見なされます。
引越し
次のプロセスを使用して、移動した場所を判別します。
- 移動したときに空のスペース(
)になった場合、プレイヤーはそのスペースに配置されます。
- 壁(
#
)になった場合、移動は無視され、ターンを失います。 - 卵(
o
)またはプレイヤー(*
)になった場合、この情報は保存され、全員が移動した後に使用されます。
全員が動いた後、あいまいさが解決されます。
同じスペースに着地した2人のプレイヤーがいる場合、戦いが発生します!ここで、A
/ C
/ N
が再生されます。攻撃はA
他のものを打つN
(通常の攻撃)、N
他のものはC
ウンターを打つ(何もC
打ち消せない)、そしてウンターが攻撃を打つA
(逆襲)。この戦いに勝ったプレイヤーは自分の広場に残り、負けたプレイヤーは元の広場に戻ります。同点の場合、両方のプレイヤーは元の場所に戻ります。
負けたプレイヤーまたは結ばれたプレイヤーが元の場所に戻り、そこに別のプレイヤーがいる場合、戦闘はなく、他のプレイヤーも元のスペースに戻ります。このスペースに別のプレーヤーがいる場合、そのプレーヤーは戻り、すべてのプレーヤーが異なるスペースに移動するまでこれが続きます。
1つのスペースに3人以上のプレイヤーがいる場合、それらはすべて元の位置に戻ります。
プレイヤーがまだ卵の上に立っている場合...
- プレイヤーがを選択した
A
場合、卵は破壊されます。 - プレーヤーがを選択した場合
C
、何も起こらず、プレーヤーは元のスペースに戻ります。 - プレイヤーがを選択した場合、プレイヤーは
N
卵を拾います!プレイヤーのスコアが1つ増加し、卵が削除されます。
言語
Windows、OSX、およびLinuxで自由に利用できる任意の言語を使用して、各参加者間の公平性を確保できます。コードを自由に実行できないが、ある形式にコンパイルまたはパッケージ化できる場合は、この形式も回答に含めてください。理想的には、コードをより一般的な言語(CoffeeScript-> JavaScript)にコンパイルできる場合は、そうしてください。
得点
スコアは、10回の実行から収集した卵の平均数になります。すべての卵が収集されるか、(number of entries * 25)
ターンが終了すると、実行は終了します。各マップのすべての卵に到達できることを手動で確認します(すべての卵に到達するまでマップを継続的に生成します)。
スコアボード
次のすべての条件が満たされると、スコアボードが追加されます。
- 正のスコアまたはゼロのスコア(ダウンボットされていない)を持つ少なくとも7つの有効なエントリが送信されました
- このチャレンジの作成から少なくとも48時間が経過しました(UTC 14:23)
ルールが不明確だった場合に明確化を追加する場合を除き、このコンテスト前の期間中、ルールは変更されません。スコアボードが作成されると、テストプログラムもここに投稿されるので、エントリをテストできます。このためのテストコードはまだ進行中ですが、再生可能で動作します。これがGitHubリポジトリです。
9
意味のある攻撃を受けることはありません。別のプレイヤー(B)がそのプレイヤーのスクエアに足を踏み入れて勝った場合、Aは元のスクエア(同じ)に戻ります。しかし、AとBの両方が存在するため、衝突が発生したため、Bは自分の広場に戻らなければなりません。したがって、結果は実際の戦闘とは無関係であり、Bは常に最初の正方形に戻り、Aは常に配置されたままです。それは私が他の皆のためのパスをブロックすることによって別の提出を助けることができる両方を書くことを可能にします。