あなたの地質学者の友人は、オフィスのドアが飛び交うとき、ほとんど興奮して目を覚まし、発見した場所に彼と一緒に来るように頼みました。途中、彼は文字通り金を打ったと思っていると説明しています。唯一の問題は、屋根が非常に不安定な洞窟の地下深くに埋まっていることです。洞窟探検をするのは危険すぎるので、洞窟探検ロボットの1つをプログラムして、引き上げる前にできるだけ多くの金を集めるように求めています。彼はまた、洞窟を調査し、ロボットに害を及ぼす可能性のあるいくつかの野生生物を発見したこと、そしてまだ使用できるかもしれないいくつかの機器をそこに落としたことにも言及しました。各ロボットには2本のアームとさまざまなセンサーが装備されています。あなたが現場に到着すると、彼はより多くのコーダーを採用するつもりであると彼に話します、
さて、肝心なところまで。センサーは情報をASCII文字としてプログラムに渡します。以下は、各キャラクターの意味と、ボットが洞窟で遭遇する可能性のあるすべての説明のリストです。
Code Name/Description
Y Your bot
You do things
@ Other bots
They do other things
- Ground
This doesn't do things
C Centipede
These will bite you and leave a poison effect
The bite will cost 1 health
The poison effect will last for 3 turns, costing 2 health each turn
B Bats
If bats end up in the same space you are, your bot runs in a random direction during its turn rather than what you told it to do
L Lion (because reasons)
Lions deal heavy damage, 10 health, each time they attack
F Food
Eating this will give you 5 health
Can only be used once
W Water
Drinking this will cure poison effects early
Can only be used once
R Revealer
This will increase the range of your visibility to an 11x11 grid
The extra range will only be 75% correct, but the original range won't be effected
K Knife
You do twice as much damage to other bots if you have a knife
G Gold
The whole reason you're doing this in the first place
N Nurse Nina
She mend you good
Restores your health by 10 while you occupy the same space as her
} Boulder
You can't walk over boulders, and neither can anything else
P Pit
If you fall in a pit, you will be stuck for 3 turns
洞窟のサイズは、参加しているボットの数に応じて大きくなります。30x30から始まり、ボットごとに10x10が追加されます。したがって、2つのボットが50x50の洞窟を探索します。
ボットは20のヘルスから始まりますが、ヘルスの上限はありません。
入力:
STDINを介して次の形式で入力を受け取ります。
20,5,10,1,0,True,False <-health, number gold pieces, number of turns your bot has lasted, number of until the poison wears off, number of turns until you are no longer stuck in a pit, if you have a revealer, if you have a knife
-----
-G}--
--Y-L
-C---
---B-
1行目にはボットに関する情報が含まれ、残りはボットが表示できるグリッドです。ボットが洞窟の4つの壁のいずれかに対している場合は、次のようなグリッドが表示されます(西にずっといる場合)。
---
}--
Y--
---
---
洞窟は回りませんし、あなたのビジョンもしません。洞窟の壁はマークされていません。ボットが壁に近づいていることをボットが受け取る唯一の兆候は、そのビューが縮小されていることだけです。Revealerを使用すると、次のようなものが得られます。
--------C--
LW--------B
---K-N-----
--------BR-
-F---------
--B--Y---@N
-W@---F----
------K-F--
----@-}----
R@---G}--}-
--------G-R
出力:
ターンごとに2つの動きがあり、次の形式で出力します。
MNNANW <- Moves are groups of 3 characters representing the action and the direction
可能なアクションは次のとおりです。
M Move - Move your bot in the specified direction
A Attack - Attack the square in the specified direction
H Hold - Do nothing
可能な方向は次のとおりです。
NN - North (up)
NE - Northeast (up-right)
EE - East (right)
SE - Southeast (down-right)
SS - South
SW - Southwest
WW - West
NW - Northwest
動きは左から右に適用されます。
ターン:
次のように進行状況を変えます。
毒効果は、毒を受けたすべてのプレイヤーに適用されます
非ボットが移動して攻撃する
2a。ライオン、ムカデ、コウモリはランダムに動きます
2b。ライオンとムカデは、それに直接隣接するすべてのもの(対角線を含む)を攻撃します
2c。バットエフェクトは、それがバットと同じスペースにある場合にのみボットに適用されます
2d。ナースニーナは3ターンの間その場所に留まり、その後ランダムな場所にジャンプします。
ボットが移動する
3a。ボットが無効な出力を提供する場合、移動しません
3b。ボットは、出力で指定されたスペースにできるだけ近づこうとします(詳細については、下部のメモを参照してください)
3c。ムカデ、ライオン、またはバットへの1回の攻撃で殺す
3d。ナイフなしで別のボットを攻撃すると5ダメージ、ナイフで10ダメージを与えます
ルール:
OS XまたはLinuxで実行できる一般的な言語を使用してください。
オプションで、1 kb以下のデータをファイルに書き込むことができます。
得点:
トランスフォーマーは、残りが1つになるか、50ターン経過するまで、どちらか早い方になるまで、洞窟にいることはできません。ボットは、収集したゴールドコインの数とそれが何ターン続いたかの合計で判断されます。
ここでテストするためにコントローラーコードをダウンロードできますと同じディレクトリに「bots」というフォルダーを作成し、「bots」内にボットを配置します)実行するにはNumPyが必要です。自由に調べてみてください。ただし、混乱を免れなければなりません...
ランダムボットのコードは次のとおりです。
#!/usr/bin/python
import random as r
a = ['M','A','H']
d = ['NN','NE','EE','SE','SS','SW','WW','NW']
print(a[r.randint(0,2)]+d[r.randint(0,7)]+a[r.randint(0,2)]+d[r.randint(0,7)])
****ボットは常に出力で指定されている一般的な方向に移動しますが、岩や壁によって妨害されている場合、正確な方向は状況によって異なります。たとえば、ボットが壁にぶつかっている場合:
---
}--
Y--
---
---
そしてあなたの出力は
MNWMSW
ボットは1スペース下に移動します。北または西に移動できなかったため、その移動は効果がありませんでした。南に移動することはできましたが、西に移動できませんでした。ただし、ボットが北東に移動しようとした場合、ボットはその空間に直接移動します(斜めの移動は手順ではなく斜めです)。
リーダーボード
これらは4ゲームの平均スコアです。
The bot of Survival: 54.75
Coward: 52.25
Pufferfish: 50.00
Randombot: 50.00
Indiana Jones: 47.50
TheoremBot: 46.50