您的地质学家哥们突然闯进办公室门,激动地睁大了眼睛,请您与他一起去他刚刚发现的地方。在途中,他解释说,他认为自己确实击中了金子。唯一的问题是,它被埋在地下非常不稳定的洞穴中。进行洞穴探险实在太危险了,因此他希望您对他的一个洞穴探险机器人进行编程,以在将其拉回之前收集尽可能多的黄金。他还提到自己已经探查了洞穴,发现了一些可能对机器人有害的野生生物,并且还把一些仍可以使用的设备丢到了那里。每个机器人都配备有两个手臂和一系列传感器。当您到达现场时,他告诉您他正在计划招募更多编码员,
现在,深入到细节。传感器将信息作为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的价格。因此,两个机器人将探索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-
第一行包含有关您的机器人的信息,其余是您的机器人可以看到的网格。如果您的机器人正对着洞穴的四壁之一,您将得到一个看起来更像这样的网格(在一直向西走的情况下):
---
}--
Y--
---
---
洞穴不会环绕,您的视野也不会环绕。洞穴的墙壁未标记,机器人收到的唯一表明它正在靠近墙壁的指示是其视野正在减弱。使用Revealer,您可能会得到以下信息:
--------C--
LW--------B
---K-N-----
--------BR-
-F---------
--B--Y---@N
-W@---F----
------K-F--
----@-}----
R@---G}--}-
--------G-R
输出:
每转一圈您将获得两个移动,并以以下格式输出:
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。狮子,C和蝙蝠随机移动
2b。狮子和enti将攻击与其直接相邻的所有物体(包括对角线)
2c。蝙蝠效果仅适用于与蝙蝠位于同一空间的机器人
2d。妮娜护士将在一个位置呆3转,然后跳到随机位置。
机器人移动
3a。如果您的机器人给出了无效的输出,它将不会移动
3b。您的机器人将尝试尽可能接近输出指定的空间(有关更多详细信息,请参见底部的注释)
3c。攻击a,狮子或蝙蝠会杀死它
3d。不带刀攻击另一个机器人会造成5点伤害,而带刀则造成10点伤害
规则:
坚持可以在OS X或Linux上运行的通用语言。
您可以选择将最多不超过1kb的数据写入文件
得分:
机器人只会在山洞中,直到只有一个遗留物,或者直到经过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
您的机器人将向下移动一个空间。它无法向北或向西移动,因此该移动无效。它可以向南移动(也可以向南移动),但不能向西移动。但是,如果您的机器人试图向东北移动,它将直接进入该空间(对角线移动是对角线移动,而不是程序上的移动)
排行榜
这些是4场比赛的平均得分。
The bot of Survival: 54.75
Coward: 52.25
Pufferfish: 50.00
Randombot: 50.00
Indiana Jones: 47.50
TheoremBot: 46.50