|
如果拿0来表示空格,1来表示己方棋子,2来表示对手棋子,如何判断棋型?
棋盘的边界如何表示?
棋型是什么?
(hint:棋型是一个递归的定义,我们把走一步能变成冲四的棋型称作眠三,把可以被一颗对手子阻止,不然形成五连的棋型称作冲四)
思考:10101是什么棋型?活二如何定义?01110是活三吗?011100是活三吗?
如果同一条线上同时出现多个棋型怎么办?
01011011同时具有一个活三和一个冲四,但是其构成不了四三;
1011101同时具有两个冲四,但是构成得了双四。那这两种情况该如何区分呢?
(hint:棋型是一个递归的定义,不仅仅是单个棋型哦)
可供参考的一段代码:
line=["一个由0,1,2组成的列表"]
line_str="".join(map(str, line))#这里我们把line变成了一个字符串
patterns=[["01100","00110","01010","010010"],#活二
["001112","211100","010112","211010","011012"],#思考: 眠三只有这么几个吗?
["001110","011100","010110","011010"],#活三
["10111","11011","11101","011112","211110"],#冲四
["011110"],#活四
["11111"]]#五连
p44=["1011101","11011011","111010111"]#双四
p33=["?"]#双三
p43=["?"]#四三
#思考:四三在一条线上,其等价于非同一条线上的什么棋型呢?
#双四双三和四三判断的优先级?
|
|