每日算法 — 使用java实现六角棋(Hex):六向邻居建模与并查集连通判定
一、游戏规则与算法问题的转化 六角棋(Hex)是 1952 年由丹麦数学家 Piet Hein 发明、后由 John Nash 独立提出的二人完全信息博弈。棋盘由边长 N 的菱形六角网格构成,共 N × N...
每日算法 — 使用java实现墙棋(Quoridor):位图状态压缩与A星最短路
一、规则抽象:墙棋是"带动态障碍的网格最短路" 墙棋(Quoridor)1997 年由 Mirko Marchesi 设计,是少数能把最短路算法讲透的桌面博弈: 棋盘 9 ×...
每日算法 — 使用java实现找套牌(SET):GF(3)三重判定与枚举剪枝
一、游戏规则:一张牌有四个属性 找套牌(SET)是 1991 年由 Marsha Falco 设计的卡牌游戏,规则简单得可以用一句话说完,但它的数学结构却非常漂亮。 一副 SET 共 81...
每日算法 — 使用java实现数字黑洞:Kaprekar变换的状态转移图与环检测
一、一个让小学生着迷的数字现象 1949 年,印度数学家 D. R. Kaprekar 发现了一个奇特的数字变换:...
每日算法 — 使用java实现抢三十:巴什博弈必胜态推导与记忆化搜索
一、一个三分钟能学会、但很少有人能说清为什么的游戏 「抢三十」是流传极广的双人游戏: 两人轮流报数,每次可以报 1 个、2 个或 3 个数(连续递增),谁先报到 30...
每日算法 — 使用java实现抽乌龟:未知手牌概率推断与期望风险配对
一、规则里藏着一个推断问题 抽乌龟(Old...
每日算法 — 使用java实现狐狸与鹅:静止搜索与强制吃子链延伸
一、一个"不对称对抗"的经典残局 狐狸与鹅(Fox and Geese)是一类历史悠久的对称棋盘上的不对称对抗游戏:13 只鹅围堵 1...