#1421. [ACSL] 2019-2020 Contest 4 Patolli

[ACSL] 2019-2020 Contest 4 Patolli

描述

给定ACSL Patolli游戏的网格棋盘,如下方所示,利用以下规则进行游戏。所有的规则必须按照列出的顺序执行。

  1. 本游戏需要2位玩家。每一位玩家有3枚棋子。

  2. 掷一个骰子,然后根据骰子掷得的点数(1-6)移动棋子。

  3. 棋子按照网格棋盘上的数字(递增)顺序进行移动。

  4. 掷骰子后,根据掷得的点数,如果一枚棋子恰好会落在一个已被占用的格上,那么该棋子需要保持在移 动之前的位置(保持位置不动)。

  5. 如果玩家棋子在移动路径中被对手棋子阻挡,可以通过对手棋子继续完成其步数移动(对手棋子所占位 置算一步)。

  6. 当棋子落到位置52上时,则完成其在网格棋盘上的移动,然后将这枚棋子从棋盘上移除。一枚棋子一次 移动不能超过位置52。如果移动步数要到位置52之外,则将棋子保持在之前的位置上。

  7. 掷骰子后,根据掷得的点数,如果一枚棋子会落到一个没有被占用的格上,且该格内的数字为质数,那 么该棋子需要前进(数字升序)6个格。但是,如果有其他棋子占用这其中的6个格,则该棋子需要停在 被占用的格之前。

  8. 掷骰子后,根据掷得的点数,如果一枚棋子会落在一个没有被占用的格上,且该格内的数字是一个大于 4的完全平方数,那么这颗棋子需要后退(数字降序)6个格。但是如果有其他棋子占用这其中的6个 格,则停在被占用的格之前。

  9. 掷骰子后,根据掷得的点数,如果一枚棋子会落在一个没有被占用的格上,且格内的数字既不是质数也不是完全平方数,那么需要确定这枚棋子在移动的过程中是否先经过至少一次水平移动,然后再进行至少一次垂直移动 (例如从6到8,11到13,26到28。。。但不是从2到4或者从30到32这种)。如果是这样,这枚棋子只能落在移动路径中骰子倍数的位置上,即使移动的步数小于骰子掷出点数。但是,如果在移动的路径中,骰子倍数的位置被其他棋子占用, 那么该棋子不进行移动。当在使用规则#9时,规则#7和#8将不适用。

对于此程序,只有一位玩家的一枚棋子将被移动。

使用示例输入#1解释规则。在位置 4, 6 和 8上都有对手玩家的棋子。本玩家的一枚棋子从位置 #1 开始移动 6 个格到位置 #7,但是7是一个质数,所以棋子应该移动到位置 #13, 但是会被位置8上对手玩家的棋子所阻挡,所以本玩家的棋子停在位置 #7。下一次掷得的骰子点数为3,因此移动3个格到位置 #10。下一次掷得的骰子点数为 5,但是本次移动需要至少经过1次水平移动(11到12),然后又经过1次垂直移动(12 到 13), 所以本玩家棋子必须要落在5的倍数的位置上,因此棋子会移动到位置#15上。下一次掷得的骰子点数为1,因此棋子会移动到位置 #16上。又因为在位置16上没有对手玩家的棋子,而16是一个完全平方数,所以棋子需要后退6个格到位置 #10。下一次掷得的骰子点数为 1,棋子移动到位置#11,而11是一个质数,所以棋子需要前进6个格到位置 #17。

输入输出格式

输入

共5行,每行输入的前3个数值是3枚对手棋子在棋盘上的位置。然后的一个数值是一枚玩家棋子的初始位置,第5个数r是掷骰子的次数,然后是骰子对应次数掷得的对应点数。

输出

对于每行输入,输出玩家棋子的最终位置数字。如果棋子落在位置#52上,则输出 GAME OVER。

样例

4 6 8 1 5 6 3 5 1 1
10 24 32 8 4 4 4 3 5
10 22 32 8 7 4 4 3 5 5 5 6
17 20 27 16 7 3 5 4 6 5 1 4
43 46 50 40 5 3 1 2 4 4
17
23
33
34
GAME OVER