找回密码
 立即注册
搜索
热搜: 活动 交友
查看: 1134|回复: 0

字符串匹配棋型的思路

[复制链接]

8

主题

14

回帖

77

积分

版主

积分
77
发表于 2-9-2025 22:19:25 | 显示全部楼层 |阅读模式
如果拿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=["?"]#四三
#思考:四三在一条线上,其等价于非同一条线上的什么棋型呢?
#双四双三和四三判断的优先级?

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RealDevClub ( 沪ICP备2024093864号-1 )

GMT+8, 4-12-2025 09:51 , Processed in 0.059516 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表