让我们玩Meta井字游戏!
这是Meta tic-tac-toe 的山峰赛。井字游戏的规则如下:
井字游戏的所有常规规则均适用。
安排了九个板以组成一个主板。像这样:
0|1|2 || 0|1|2 || 0|1|2 ----- || ----- || ----- 3|4|5 || 3|4|5 || 3|4|5 ----- || ----- || ----- 6|7|8 || 6|7|8 || 6|7|8 ======================== 0|1|2 || 0|1|2 || 0|1|2 ----- || ----- || ----- 3|4|5 || 3|4|5 || 3|4|5 ----- || ----- || ----- 6|7|8 || 6|7|8 || 6|7|8 ======================== 0|1|2 || 0|1|2 || 0|1|2 ----- || ----- || ----- 3|4|5 || 3|4|5 || 3|4|5 ----- || ----- || ----- 6|7|8 || 6|7|8 || 6|7|8
板0指的是左上方的板,板1指的是顶部中板...像这样
0|1|2 ----- 3|4|5 ----- 6|7|8
如果我说的是第3块板,即第4块,则表示该板的中间砖位于左中。
您只能进入较小的木板之一。
如果您赢得了较小的棋盘之一,则整个棋盘都将计为您的牌。
如果其中一个木板在任何一个机器人赢得胜利之前就已被填满,则将其视为nobody牌。
谁赢了主板就赢了!
但是,有一个重要的转折。比方说,我在走板7,瓷砖2.上轮到你来,你可以只在板2.去然后让我们说你在板2去,瓷砖5.现在就轮到我了,我也只能在板5去。假设1号板已满。(没有更多的可用空间,或者我们其中一个已经赢得了第1局)现在,如果我进入第5局,图块1,则可以进入任何您想要的局。
这些规则可以视为:
- 您必须在与先前玩家所玩位置相对应的棋盘上进行游戏。
- 如果X在第2局比赛,则为5。O必须参加第5局比赛
- 如果目标板已满(平局)或已经获胜,则下一步操作不受限制。
- 即使采取了不受限制的举动,也可能不会有胜者的局参与其中。
如果这有点令人困惑,您可以在此处在线尝试。(请确保从“第一张图块获胜”切换为“连续3张图块”)
现在,这是挑战的规则。
您必须编写一个玩此游戏的机器人。
Bot 1是Xs,它先走。将使用以下命令行参数来调用它(括号中没有内容):
X (whose turn) --------- (board 0) --------- (board 1) --------- (board 2) --------- (board 3) --------- (board 4) --------- (board 5) --------- (board 6) --------- (board 7) --------- (board 8) --------- (master board) xx (last move)
第一个字符代表机器人是谁。在这种情况下,机器人1扮演X。接下来的9行引用9个棋盘。第11行是指主板。最后一步是“ xx”。现在,bot1必须打印两个介于0和8之间的数字。数字1是您的机器人正在移动的板,而数字2是该板上的磁贴。控制器将跟踪此动作。假设bot 1可以打印38。现在该板将如下所示:
| | || | | || | | ----- || ----- || ----- | | || | | || | | ----- || ----- || ----- | | || | | || | | ========================== | | || | | || | | ----- || ----- || ----- | | || | | || | | ----- || ----- || ----- | |X || | | || | | ========================== | | || | | || | | ----- || ----- || ----- | | || | | || | | ----- || ----- || ----- | | || | | || | |
bot2将使用以下参数调用:
O --------- --------- --------- --------X --------- --------- --------- --------- --------- --------- 38
现在,机器人2必须在板8中移动(因为机器人1在图块3中放置了x)。假设bot2可以打印84。现在该板看起来像这样。
| | || | | || | | ----- || ----- || ----- | | || | | || | | ----- || ----- || ----- | | || | | || | | ========================== | | || | | || | | ----- || ----- || ----- | | || | | || | | ----- || ----- || ----- | |X || | | || | | ========================== | | || | | || | | ----- || ----- || ----- | | || | | || |O| ----- || ----- || ----- | | || | | || | |
现在将使用以下参数调用bot1:
X --------- --------- --------- --------X --------- --------- --------- --------- ----0---- --------- 84
现在bot1必须在板4中移动。但是,bot1是一个顽皮的小机器人,并决定在板3中移动。它会显示'30'。董事会完全没有变化。主机器人会对此进行跟踪。现在,将使用以下参数调用bot2:
O --------- --------- --------- --------X --------- --------- --------- --------- ----0---- --------- xx
现在,bot 2可以随心所欲了(当然38和84除外)。这一直持续到有人连续赢得3个主板为止。然后,进行第二次对决,其中bot2为X并首先进入。
重复此过程,直到每个机器人都玩过其他机器人。
计分
评分方式如下:
每场比赛的获胜者都会获得100 + number of open spots
积分。这样,如果您的机器人迅速获胜,那就更有价值。每次您的漫游器无效动作时,它都会失去1分。如果在250轮之后没有一个机器人获胜,那么每个机器人将失去10分,我们继续进行下一轮。
一切都将放入包含以下内容的目录中
名为“
instructions.txt
此文件”的文本文件将如下所示:[Total number of bots that are competing] [bot1Name] [bot1 command to run] [bot2Name] [bot2 command to run] ...
每个漫游器的文件夹。该文件夹将保存您的程序(无论是脚本还是二进制文件)和一个名称为
data.txt
bot可以读写所需内容的文本文件。
技术规格和规则说明
任何试图从不在其文件夹内的任何地方读取/写入内容的漫游器都会被踢出游戏。
您的程序必须能够在运行优胜美地的Macbook上运行。当前支持的语言是python(2.7.9和3.4.2),C / C ++,objective-C,perl,ruby,bash,PHP,Java,C#,javascript和Haskell。还有很多,但是这些只是我现在能想到的。随着时间的流逝,我将添加更多内容。如果您想使用特定的语言进行比赛,请给我发消息或发表评论,如果可能,我会将其添加到列表中。
如果赢得了一个棋盘,但仍有空间,您仍然无法进入其中一个空位。
请注意,您提交的工作目录将是包含控制器和所有其他机器人的目录,而不是包含您的机器人的目录。
请与您的控制器机器人代码一起发布正确的命令进行编译(如果适用)并运行您的机器人。大多数操作将通过OS X终端完成,该终端与linux终端非常相似。
机器人必须在一秒钟内完成。不幸的是,我没有足够的能力向控制器机器人添加计时器。但是,我将手动为机器人计时。
结果!
好吧,我是对的。我忘了让控制器机器人检查主板是否已满。如果masterBoard已满,则每个动作都是无效的,但是它将继续调用bot,这可能就是为什么有这么多无效动作的原因。我已经解决了。以下是所有机器人的最新版本的官方结果。
Bot 1, goodRandBot, has 1 wins and made 0 illegal moves, for a total of 133 points.
Bot 2, naiveBot, has 3 wins and made 48 illegal moves, for a total of 361 points.
Bot 3, depthBot, has 5 wins and made 0 illegal moves, for a total of 664 points.
Bot 4, middleBot, has 1 wins and made 20 illegal moves, for a total of 114 points.
With 4 bots, This program took 477.471 seconds to finish.
深度机器人是卫冕冠军!至少目前如此。
XXX000---
?还是“没有人先赢得它就赢得了它”?