介绍
您和一些仆人一起被困在荒凉的岛屿上,正在寻找宝藏。搜索时间越长,发现的宝藏越多。搜索的人越少,找到的人就越多。
由于物资有限,这位领导人决定每晚减少几个人,最多占四分之一。他决定不提前告诉任何人确切的死亡人数。
您控制着一个由5人组成的小组,他们将冒险逃出营地为您寻找宝藏。
目的
这项比赛的目的是积累尽可能多的财富。您的仆人每一次不尝试返回营地的回合,都会发现一定数量的宝藏。您的仆人可能会在不同时间返回营地。
工人停留在每一个转弯寻找宝藏的时候,工人都会发现1+R
宝藏,这R
是已经回到营地的工人人数(在所有机器人中)。僵尸程序不计入此计算。
在每天开始时,将选择一个n
从2
到的随机数()max(3, floor(num_live_players/4))
。(对于10名选手的第1天,这是2
对max(3,50/4)=12
。对于20名球员,第1天,这将是2
对max(3,100/4)=25
。)这个数字代表的球员谁将会留下来的那一天死亡的人数,并且不会给你的程序。
如果仆人是最后n
归还的人之一,他/她将死去并且无法将他/她发现的宝藏转移给您。此外,在接下来的冒险中,仆人将无法参加寻宝活动。
您的最终分数是每次冒险(控制者的奔跑)获得的平均宝藏量。
如果尝试在同一转弯返回营地的人多于空位,则随机数将确定谁进入和死亡。
从日出到日落,这个岛上的一天持续30转。由于夜间有许多危险的动物,因此日落之前无法归还意味着您将无法进入营地。
输入输出
您的程序应在整个模拟过程中运行。
在仿真开始时,INDEX I
将输入I
bot的索引(该索引从1开始计算)。
在每天的开始,START_DAY D/N
将输入到您的程序中,其中D
是天数(从开始1
),并且N
等于max(3, floor(num_live_players/4))
,这是该天可能死亡的最大人数。
每次转弯开始时,START_TURN T
都会输入到您的程序中,T
转弯编号(从开始1
)在哪里。
程序收到此消息后,它将以仆人的动作列表作为响应,每个动作用逗号隔开。
有效的动作是:
R
:尝试返回营地。S
:继续寻找宝藏。N
:仆人已经死亡或在营地。
输入无效的举动将被解释S
为该机器人还活着并且不在营地内,N
否则。
在每个回合结束时,将一个字符串传递给您的程序:
END_TURN [Turn #] [Bot 1 Moves] [Bot 2 Moves] ...
每个漫游器的仆人动作都以逗号分隔。
这些举动将是以下之一:
R
:成功返回该回合的营地。r
:未能返回该回合的营地。S
:仍在寻找宝藏。D
:死于较早的回合。N
:已经回到营地了。
在整个模拟过程中,机器人和仆人保持相同的顺序。
例如:
INDEX 2
....
END_TURN 8 N,N,N,N,N r,r,r,r,D D,D,D,N,R S,D,D,N,D
在这里,您是第二个bot(r,r,r,r,r
),它试图返回所有四个仍然活着的仆人(不幸的是,这四个仆人都失败了)。Bot 1的仆人全部回到营地。3号机器人有3名死者,其中一名又返回营地,另有5名成功返回家园的仆人。僵尸4号有一个仆人留下来(将要死,因为这是一天的最后一轮),一个仆人在营地里,还有三个死去的仆人。
在每个字符串之后,除非也输出了表示一天结束的字符串(请参见下文),否则程序将输出仆人的下一步动作,以逗号分隔。必须对所有仆人负责(N
如果已经在营地,D
或者已经死亡)。无效的举动将被视为S
仆人尚未在营地/死地中。例:
N,N,S,S,R
意思是:
Servant # | Action
1 | Do nothing.
2 | Do nothing.
3 | Stay put (keep looking for treasure).
4 | Stay put (keep looking for treasure).
5 | Try to return to camp.
一天结束时,应在最后一回合的END
字符串之后传递以下字符串,以通知每个人还活着:
END_DAY [Day #] [Bot 1 Status] [Bot 2 Status]
状态为A
(有效)或D
(无效)的逗号分隔列表。第二天从下一天开始。
当活着的仆人少于6人时,模拟结束。在模拟结束时,您的程序将收到以下输入:
EXIT
规则/细节
- 只有在行动所在的转弯处,您
S
才能找到宝藏。 - 模拟运行次数:1000次
- 您的程序确定移动的时间不应超过1秒。
- 您的程序不应提早退出;它将仅启动一次。
- 确保在每次输出后刷新输出缓冲区(如果适用)。
- 文件可能会写入到您的漫游器文件夹(
./players/BotName/
)中。僵尸程序名称就是您为僵尸程序命名的名称,所有非字母数字字符都被删除并用CamelCase编写。条目可以保存控制器运行之间的数据,因为运行是顺序进行的。 - 您的程序必须在收到后退出
EXIT
。 - 未能编译或引发错误或输出无效文本(不以逗号分隔的5个字符的格式)的程序可能会被排除在竞赛之外。每个输出之后都必须有一个换行符。
- 该控制器可以在GitHub上找到。
请提供机器人名称,语言+版本,代码和命令以进行编译(如果适用)并运行您的机器人。
例
程序输出的文本在此处以前缀>
。您的程序不应输出此字符。
INDEX 2
START_DAY 1/3
START_TURN 1
>S,S,S,S,S
END_TURN 1 S,R,S,S,S S,S,S,S,S
START_TURN 2
>S,S,S,S,S
END_TURN 2 S,N,S,R,S S,S,S,S,S
START_TURN 3
>R,R,S,S,S
END_TURN 3 R,N,R,N,R R,R,S,S,S
START_TURN 4
>N,N,S,S,S
END_TURN 4 N,N,N,N,N N,N,S,S,S
START_TURN 5
>N,N,R,R,R
END_TURN 5 N,N,N,N,N N,N,r,r,R
END_DAY 1 A,A,A,A,A A,A,D,D,A
START_DAY 2/3
START_TURN 1
>S,S,N,S,N
END_TURN 1 R,R,R,R,R S,S,D,D,N
END_DAY 2 A,A,A,A,A D,D,D,D,D
EXIT
上例的得分为:
Bot# Day 1 Day 2 Total
1 10 0 10
S1 1+2 0 3
S2 0 0 0
S3 1+2 0 3
S4 1 0 1
S5 1+2 0 3
2 20 0 20
S1 1+2 0 3
S2 1+2 0 3
S3 0 0 0
S4 0 0 0
S5 1+2+3+8 0 14
因此,获胜者是游戏者,机器人2。请注意,获胜者不必生存到绝对的终点。(还请注意,玩家可能会保留到第1天的30岁为止,因为直到玩家再送回一个机器人为止,训练营才会满员)。
分数
Bot Score
Bob 2939.422
Statisticians 2905.833
Morning Birds 1652.325
Evolved 1578.285
Slow Returners 1224.318
Wandering Fools 1065.908
Randomizers 735.313
Drunkards 0
Plague 0
日志可在GitHub上找到。每个试验的结果可在此Google电子表格中找到。