前言
故事剧情基于力扣的题目 1728. 猫和老鼠 II 与 题解。
每一局的网格布局、双方最大跳跃距离、最优策略与双方移动过程都由作者设计,部分剧情内容由 AI 生成,作者在 AI 生成内容的基础上创作完整的游戏剧情。
开篇:规则重启与迷宫挑战
阳光透过窗棂洒在 Jerry 的奶酪储藏室,Tom 正用爪子扒拉着一张皱巴巴的羊皮纸——那是上次图论迷宫冒险的地图。“这次可不一样,笨猫!”Jerry 吱溜溜地爬上书架,甩下一叠画着方格的纸,“我们要在网格迷宫里玩 5 5 5 局生死时速,每局都有新花样!”
游戏规则如下。
-
每局游戏的网格迷宫中,每个单元格都是地板或墙壁,其中有三个地板单元格分别是 Tom 的初始位置、Jerry 的初始位置与食物的位置。
-
每局游戏由 Jerry 先移动,Tom 后移动,双方轮流移动。每次移动时可以选择向四个方向跳跃到一个地板单元格或停留在原地,不能跳跃过墙或跳出网格。双方各有最大跳跃距离,每次移动的跳跃距离不能超过各自的最大跳跃距离。任意一方都可以跳跃过对方玩家的位置。
-
游戏结束的条件如下。
-
若 Tom 和 Jerry 在同一个单元格,则 Tom 胜。
-
若其中一个玩家先到达食物,则先到达食物的玩家胜。
-
若 Jerry 不能在 1000 1000 1000 次移动内到达食物,则 Tom 胜。
-
每局迷宫的诞生过程充满博弈。
-
确定网格布局。Tom 和 Jerry 各自设计网格布局,要求网格布局中至少有 5 5 5 个地板单元格,墙单元格不超过所有单元格的三分之一,且所有地板单元格都连通。两个玩家设计网络布局之后,等概率地随机选择其中一个玩家设计的网格布局作为该局游戏的网格布局。
-
确定食物位置。首先由 Tom 提出食物的三个候选位置,然后由 Jerry 删除其中的一个位置,最后由 Tom 在剩余的两个位置中选择一个位置作为食物的位置。
-
确定两个玩家的初始位置。首先等概率地随机选择两个玩家的确定初始位置的顺序,然后两个玩家根据随机结果的顺序依次选择对方玩家的初始位置,要求两个玩家的初始位置与食物位置分别位于三个不同的单元格。
-
确定两个玩家的最大跳跃距离。两个玩家的最大跳跃距离都随机生成,为小于网格边长的正整数。
随着 Jerry 按下玩具钟的按钮,冒险正式开始!
游戏的完整过程
第 1 1 1 局: 4 × 4 4 \times 4 4×4 迷宫的闪电突围
网格布局和最大跳跃距离
["..F.","..##",".#.C","M..#"] \texttt{["..F.","..\#\#",".\#.C","M..\#"]} ["..F.","..##",".#.C","M..#"]
Tom 的最大跳跃距离是 3 3 3,Jerry 的最大跳跃距离是 1 1 1。
游戏剧情
开局 Jerry 在 ( 3 , 0 ) (3, 0) (3,0),Tom 在 ( 2 , 3 ) (2, 3) (2,3),食物在 ( 0 , 2 ) (0, 2) (0,2)。
Jerry 眼珠一转,率先窜到 ( 2 , 0 ) (2, 0) (2,0)。Tom 虽有长跳跃,但是被墙壁阻挡,只能从 ( 2 , 3 ) (2, 3) (2,3) 跳至 ( 2 , 2 ) (2, 2) (2,2)。
“想抓我?早着呢!”Jerry 猛地蹦到 ( 1 , 0 ) (1, 0) (1,0),躲到安全区。Tom 试图追赶,但是由于两侧是墙壁,只能跳到 ( 3 , 2 ) (3, 2) (3,2),撞得墙角的灰尘簌簌落。
Jerry 趁机挪到 ( 1 , 1 ) (1, 1) (1,1),离食物只剩一格。Tom 追到 ( 3 , 0 ) (3, 0) (3,0)。
Jerry 像弹簧般窜到 ( 0 , 1 ) (0, 1) (0,1)。Tom 发挥长跳跃优势,跳到 ( 0 , 0 ) (0, 0) (0,0),爪子几乎擦到 Jerry 的尾巴。
“想阻止我到达食物?不可能!”Jerry 最后一跃扑向 ( 0 , 2 ) (0, 2) (0,2) 的食物。“叮!”食物闪光的瞬间,Tom 的爪子刚扫到空地板。
Jerry 胜!Tom 对着空食物格龇牙,胡须气得直颤。
第 2 2 2 局: 5 × 5 5 \times 5 5×5 迷宫的陷阱狩猎
网格布局和最大跳跃距离
["#..##","....C","#...#","..#..","F..#M"] \texttt{["\#..\#\#","....C","\#...\#","..\#..","F..\#M"]} ["#..##","....C","#...#","..#..","F..#M"]
Tom 的最大跳跃距离是 1 1 1,Jerry 的最大跳跃距离是 4 4 4。
游戏剧情
开局 Jerry 在 ( 4 , 4 ) (4, 4) (4,4),Tom 在 ( 1 , 4 ) (1, 4) (1,4),食物在 ( 4 , 0 ) (4, 0) (4,0)。
Jerry 仗着长跳跃,“嗖”地窜到 ( 3 , 4 ) (3, 4) (3,4),以为能直捣黄龙。不料 Tom 虽跳得近,却步步紧逼:从 ( 1 , 4 ) (1, 4) (1,4) 挪到 ( 1 , 3 ) (1, 3) (1,3),Jerry 的去路被封锁。
Jerry 跳到 ( 3 , 3 ) (3, 3) (3,3)。Tom 跟到 ( 2 , 3 ) (2, 3) (2,3),彻底堵住 Jerry 的逃脱之路。
Jerry 见 Tom 已经位于和自己的相邻单元格,只能逃回 ( 3 , 4 ) (3, 4) (3,4)。Tom 进一步紧逼,挪到 ( 3 , 3 ) (3, 3) (3,3)。
Jerry 无奈回到起点 ( 4 , 4 ) (4, 4) (4,4),Tom 知道 Jerry 无路可逃,追到 ( 3 , 4 ) (3, 4) (3,4)。
Jerry 发现相邻的两个单元格都不可到达, ( 3 , 4 ) (3, 4) (3,4) 被 Tom 占据, ( 4 , 3 ) (4, 3) (4,3) 是墙壁,只能选择停留在原地不动。Tom 扑到 ( 4 , 4 ) (4, 4) (4,4),爪子精准扣住 Jerry 的尾巴。
Tom 胜!它得意地甩着尾巴,Jerry 却趁机从爪缝里溜走,啃了口边上的假奶酪。
第 3 3 3 局: 6 × 6 6 \times 6 6×6 迷宫的神奇魔术
网格布局和最大跳跃距离
["F.##MC","#.#...","#.#..#","...#.#",".###..","......"] \texttt{["F.\#\#MC","\#.\#...","\#.\#..\#","...\#.\#",".\#\#\#..","......"]} ["F.##MC","#.#...","#.#..#","...#.#",".###..","......"]
Tom 的最大跳跃距离是 1 1 1,Jerry 的最大跳跃距离是 3 3 3。
游戏剧情
开局 Jerry 在 ( 0 , 4 ) (0, 4) (0,4),Tom 在 ( 0 , 5 ) (0, 5) (0,5),食物在 ( 0 , 0 ) (0, 0) (0,0)。
Jerry 一个三级跳到 ( 3 , 4 ) (3, 4) (3,4),把 Tom 甩在身后。Tom 只能挪到 ( 1 , 5 ) (1, 5) (1,5)。
Jerry 跳到 ( 5 , 4 ) (5, 4) (5,4),到达底部开阔区。Tom 挪到 ( 1 , 4 ) (1, 4) (1,4)。
Jerry 跳到 ( 5 , 1 ) (5, 1) (5,1)。Tom 挪到 ( 2 , 4 ) (2, 4) (2,4)。
Jerry 跳到 ( 5 , 0 ) (5, 0) (5,0)。Tom 挪到 ( 3 , 4 ) (3, 4) (3,4)。
之后 Jerry 转向,直逼食物。后续移动如下。
Jerry 跳到 ( 3 , 0 ) (3, 0) (3,0)。Tom 挪到 ( 4 , 4 ) (4, 4) (4,4)。
Jerry 跳到 ( 3 , 1 ) (3, 1) (3,1)。Tom 挪到 ( 5 , 4 ) (5, 4) (5,4)。
Jerry 又一个三级跳到 ( 0 , 1 ) (0, 1) (0,1)。Tom 拼命追到 ( 5 , 3 ) (5, 3) (5,3)。
Jerry 一个鹞子翻身,从 ( 0 , 1 ) (0, 1) (0,1) 跃到 ( 0 , 0 ) (0, 0) (0,0),到达食物。
Jerry 胜!Tom 对着墙上的爪印唉声叹气。
第 4 4 4 局: 7 × 7 7 \times 7 7×7 迷宫的迷雾追逐
网格布局和最大跳跃距离
["#..#...","##.#...",".C...#.","..###..","M##...#","#F.#...",".....#."] \texttt{["\#..\#...","\#\#.\#...",".C...\#.","..\#\#\#..","M\#\#...\#","\#F.\#...",".....\#."]} ["#..#...","##.#...",".C...#.","..###..","M##...#","#F.#...",".....#."]
Tom 的最大跳跃距离是 3 3 3,Jerry 的最大跳跃距离是 1 1 1。
游戏剧情
开局 Jerry 在 ( 4 , 0 ) (4, 0) (4,0),Tom 在 ( 2 , 1 ) (2, 1) (2,1),食物在 ( 5 , 1 ) (5, 1) (5,1)。
Jerry 小步挪到 ( 3 , 0 ) (3, 0) (3,0)。Tom 一个三级跳到 ( 2 , 4 ) (2, 4) (2,4)。
Jerry 挪到 ( 3 , 1 ) (3, 1) (3,1),Tom 又跳到 ( 1 , 4 ) (1, 4) (1,4)。
在 7 × 7 7 \times 7 7×7 的网格中,Jerry 的最大跳跃距离过小导致吃了大亏。Jerry 预见到自己不可能在 Tom 之前到达食物,如果强行前往食物反而可能被 Tom 抓住,于是不再争取胜利,而是在起点附近徘徊。
Jerry 挪到 ( 3 , 0 ) (3, 0) (3,0),Tom 跳到 ( 1 , 6 ) (1, 6) (1,6)。
Jerry 挪到 ( 3 , 1 ) (3, 1) (3,1),Tom 跳到 ( 3 , 6 ) (3, 6) (3,6)。
Jerry 挪到 ( 3 , 0 ) (3, 0) (3,0),Tom 跳到 ( 3 , 5 ) (3, 5) (3,5)。
Jerry 挪到 ( 3 , 1 ) (3, 1) (3,1),Tom 跳到 ( 5 , 5 ) (5, 5) (5,5)。
Jerry 挪到 ( 3 , 0 ) (3, 0) (3,0),Tom 跳到 ( 5 , 4 ) (5, 4) (5,4)。
Jerry 挪到 ( 3 , 1 ) (3, 1) (3,1),Tom 跳到 ( 6 , 4 ) (6, 4) (6,4)。
Jerry 挪到 ( 3 , 0 ) (3, 0) (3,0),Tom 跳到 ( 6 , 1 ) (6, 1) (6,1)。
Jerry 挪到 ( 4 , 0 ) (4, 0) (4,0),Tom 跳到 ( 5 , 1 ) (5, 1) (5,1),到达食物。
Tom 胜!它朝各个方向寻找 Jerry,却根本没有看到 Jerry 的身影,原来 Jerry 回到了起点。
第 5 5 5 局: 8 × 8 8 \times 8 8×8 迷宫的终极逃亡
网格布局和最大跳跃距离
["#...#...",".M#.....",".###.#..",".##..#..","..##.###","...#....",".##.##.F","..C..#.."] \texttt{["\#...\#...",".M\#.....",".\#\#\#.\#..",".\#\#..\#..","..\#\#.\#\#\#","...\#....",".\#\#.\#\#.F","..C..\#.."]} ["#...#...",".M#.....",".###.#..",".##..#..","..##.###","...#....",".##.##.F","..C..#.."]
Tom 的最大跳跃距离是 2 2 2,Jerry 的最大跳跃距离是 1 1 1。
游戏剧情
开局 Jerry 在 ( 1 , 1 ) (1, 1) (1,1),Tom 在 ( 7 , 2 ) (7, 2) (7,2),食物在 ( 6 , 7 ) (6, 7) (6,7)。
Tom 认为自己的最大跳跃距离虽然只有 2 2 2,但是毕竟超过 Jerry 的最大跳跃距离,所以能凭借最大跳跃距离的优势追上 Jerry。
Jerry 挪到 ( 0 , 1 ) (0, 1) (0,1)。Tom 追到 ( 7 , 0 ) (7, 0) (7,0)。
Jerry 挪到 ( 0 , 2 ) (0, 2) (0,2)。Tom 追到 ( 5 , 0 ) (5, 0) (5,0)。
Jerry 挪到 ( 0 , 3 ) (0, 3) (0,3)。Tom 追到 ( 3 , 0 ) (3, 0) (3,0)。
Jerry 挪到 ( 1 , 3 ) (1, 3) (1,3)。Tom 追到 ( 1 , 0 ) (1, 0) (1,0)。
Jerry 挪到 ( 1 , 4 ) (1, 4) (1,4)。Tom 追到 ( 1 , 1 ) (1, 1) (1,1)。
Jerry 挪到 ( 2 , 4 ) (2, 4) (2,4)。Tom 追到 ( 0 , 1 ) (0, 1) (0,1)。
Jerry 挪到 ( 3 , 4 ) (3, 4) (3,4)。Tom 追到 ( 0 , 3 ) (0, 3) (0,3)。
Jerry 挪到 ( 4 , 4 ) (4, 4) (4,4)。Tom 追到 ( 1 , 3 ) (1, 3) (1,3)。
Jerry 挪到 ( 5 , 4 ) (5, 4) (5,4)。Tom 追到 ( 1 , 4 ) (1, 4) (1,4)。
Jerry 挪到 ( 5 , 5 ) (5, 5) (5,5)。Tom 追到 ( 3 , 4 ) (3, 4) (3,4)。
Jerry 挪到 ( 5 , 6 ) (5, 6) (5,6)。Tom 追到 ( 4 , 4 ) (4, 4) (4,4)。
Jerry 挪到 ( 5 , 7 ) (5, 7) (5,7)。Tom 追到 ( 5 , 6 ) (5, 6) (5,6)。
Jerry 挪到 ( 6 , 7 ) (6, 7) (6,7),到达食物。Tom 眼睁睁地看着 Jerry 从自己旁边逃脱。
Jerry 胜!整个迷宫响起奶酪铃铛的脆响,Tom 累得瘫在地上,尾巴却被 Jerry 系上了“失败者”的蝴蝶结。
游戏结果与甜蜜奖励
5 5 5 局游戏结束,Jerry 以 3 3 3 胜 2 2 2 负的战绩赢得最终胜利!作为奖励,迷宫中央突然降下一个巨大的奶酪蛋糕,上面插着写有“机智王者”的小旗子。Jerry 抱着蛋糕转圈,Tom 则气鼓鼓地甩尾巴,却被 Jerry 塞了一块奶油——“下次再战呀,笨猫!”
夕阳下,两个小身影追逐着跑向奶酪蛋糕,网格迷宫的投影渐渐淡去,只留下地板上若隐若现的爪印和奶酪屑。下一次的冒险,又会在怎样的数学迷宫里展开呢?