寻找复活节彩蛋活动
机器人在兔子找到鸡蛋之前先找到鸡蛋。机器人高兴。
总览
这是纪念复活节和追捕复活节彩蛋的传统之王挑战!
您的机器人在每个方向上都有两个空间的视野,包括对角线,在您周围创建了一个5x5的正方形,您可以看到。它正在寻找鸡蛋,发现鸡蛋最多的人将获胜!
董事会
棋盘将由o
s(代表复活节彩蛋),#
s(代表墙壁),*
s(代表其他玩家)和s(代表空白)组成。
- 这将是一个具有边长的正方形
(number of entries) * 3
。 - 它将被墙壁包围。
- 墙的内部将是各种随机放置的,的直线墙
#
,其随机长度在2到10之间(含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#
# #
#####################
生成棋盘后,将每个玩家放置在随机的正方形(空白空间)上。
输入值
您将需要六行输入。前五行是您的视野(板边界之外的X
空间将由表示,中间空间将始终是*
,您),而第六行将为空(最初)。
输出量
您将输出三行。首先,您要移动的方向:
1 2 3
8 YOU 4
7 6 5
(9是一个空操作,如果你不想动),第二,一个A
ttack,C
ounter,或N
othing(这将在不久的深度来解释),以及THRID线将是最长的任何字符串到1024这将是您的机器人的记忆。您可以将其用于任何用途,也可以保留为空白。然后,该内存将成为下一次运行时程序输入的第六行。
输出的所有其他行都将被忽略,如果只有一行,则第二行被认为是空白。
移动
以下过程用于确定您的移动位置:
- 如果在移动时最终进入空白处(
),则将播放器放置在该空白处。
- 如果您碰壁(
#
),您的举动将被忽略,并且您掉头了。 - 如果您遇到的是鸡蛋(
o
)或玩家(*
),该信息将被存储并在每个人移动后使用。
每个人都搬走后,歧义得到解决。
如果有两个玩家降落在同一空间上,则会发生战斗!这就是A
/ C
/ N
也发挥了作用。A
ttack次N
othing(普通攻击),N
othing次C
ounter(你不能计数器无),以及C
ounter次A
ttack(反击)。赢得这场战斗的玩家将留在自己的方块上,失败的玩家将回到他们开始时的原始方块。如果出现平局,两个玩家都回到原处。
如果失去或受束缚的玩家返回原来的位置,并且那里有另一位玩家,则不会打架,另一位玩家也将恢复到原来的位置。如果此空间中有其他玩家,则该玩家将返回,然后继续进行,直到所有玩家都位于不同的空间中。
如果在一个空间中有三个或三个以上的玩家,他们都将恢复到原始位置。
如果还有玩家站在蛋上...
- 如果玩家选择
A
,鸡蛋将被销毁。 - 如果玩家选择
C
,则什么也不会发生,并且玩家将恢复到其原始空间。 - 如果玩家选择
N
,则玩家拿起鸡蛋!玩家的分数增加一,鸡蛋被移除。
语言能力
您可以使用Windows,OSX和Linux上免费提供的任何语言,以确保每个参赛者之间的公平。如果该代码不是可自由运行的,但可以编译或打包成一种格式,请在答案中也包含此格式。理想情况下,如果您可以将代码编译成更通用的语言(例如CoffeeScript-> JavaScript),请这样做。
计分
您的得分将是您在十次运行中平均收集到的卵数。当收集到所有卵或(number of entries * 25)
轮流过去时,运行结束。我将手动确保可以到达每个地图的所有鸡蛋(通过不断生成地图直到所有鸡蛋都可以到达)。
计分板
满足以下所有条件时,将添加一个记分板:
- 至少提交了七个得分为正或为零(未投票)的有效条目
- 自发起挑战以来,至少已经过去了48小时(UTC 14:23)
在比赛前的这段时间内,规则将不会更改,除非在规则不清楚的地方增加说明。一旦记分牌成立,测试程序也将发布在此处,以便您可以测试您的条目。测试代码仍在进行中,但是它是可播放的并且有效。这是GitHub仓库。
9
,那么他就永远不会受到有意义的攻击。如果另一个玩家(B)踩到该玩家广场并获胜,则A将移回其原始广场(相同)。但是现在发生了冲突,因为A和B都在那儿,所以B必须回到自己的正方形。因此,结果与实际战斗无关,B始终移回初始方格,而A始终保持原状。这样一来,我就可以编写这两者,通过阻塞其他人的路径来帮助其他提交。