银行被打乱了,所有当地的黑手党暴徒都有不寻常的不在场证明:他们在家里玩Connect 4!为了协助调查,要求您编写一个程序来验证所有被抓住的Connect 4板,以便检查位置是否确实是有效Connect 4游戏中的位置,并且没有匆忙组合在一起警察一敲门就一声。
连接4:玩家的规则,R
并Y
轮流将其颜色的方块拖放到7x6网格的列中。当玩家将砖块丢入列中时,它会下降以占据该列中的最低未填充位置。如果玩家设法在棋盘上获得四格相同颜色的水平,垂直或对角线,则他们获胜,游戏立即结束。
例如(R
从开始),以下是不可能的Connect 4位置。
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | |R| | | | |
| | |Y| | | | |
|R| |Y| | | | |
您的程序或功能必须插入Connect 4板并返回
- 虚假的值,指示该位置不可能或
- 数从1到7的字符串,表示的移动导致该位置的一个可能的序列(的列进行编号
1
以7
从左至右,因此该序列112
,例如,表示在列中的红色移动1
,接着一个黄色举动在列中1
,然后在列中进行红色移动2
)。只要您在解决方案中指定,就可以选择除1234567之外的其他列号。如果您想以其他格式返回列表;例如作为数组[2, 4, 3, 1, 1, 3]
,那也很好,只要很容易看到移动的方向即可。
您可以选择以任何合理的格式阅读棋盘,包括使用除R
和之外的字母Y
,但您必须指定哪个玩家先行。您可以假设该板将始终为6x7,带有两个播放器。
您可能假设所收到的职位至少在物理上可以在标准Connect 4板上创建;也就是说,将没有“浮动”的部分。您可以假定该板将是非空的。
这是代码高尔夫,所以最短的答案会获胜。有标准漏洞。
例子
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> 1234567 (one possible answer)
| | | | | | | |
|R|Y|R|Y|R|Y|R|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | |R| | | | | --> false
| | |Y| | | | |
|R| |Y| | | | |
| | | | | | | |
| | |Y| | | | |
| | |R| | | | |
| | |Y| | | | | --> 323333 (only possible answer)
| | |R| | | | |
| |Y|R| | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> false (this is the position arising after
| |Y|Y|Y|Y| | | the moves 11223344, but using those moves
| |R|R|R|R| | | the game would have ended once R made a 4)
| | | | | | | |
| | | | | | | |
|Y| | | | | | |
|R|Y| | | | | | --> 2134231211 (among other possibilities)
|R|R|Y| | | | |
|Y|R|R|Y| | | |
| | | | | | | |
| | | | | | | |
|Y| | | | | | |
|R|Y| | | | | | --> false (for example, 21342312117 does not
|R|R|Y| | | | | work, because Y has already made a diagonal 4)
|Y|R|R|Y| | |R|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> 112244553 or similar
|Y|Y| |Y|Y| | |
|R|R|R|R|R| | |