Kakuro · 思考的食粮
Kakuro(数和)是一种逻辑谜题,常被称为填字游戏的“数学转写”:数字 1–9 必须在横向和纵向的格串中凑出提示的和,并且同一串中绝不能出现重复的数字。
本文以英文撰写和编辑。此中文版本由机器翻译生成;凡涉及准确性之处,以英文原文为准。 阅读英文原文 →
当你打开一道新的 Kakuro 谜题,呈现在眼前的是一张看似简单的网格:一块由黑格和白格组成的棋盘。黑格是谜题的骨架,每个黑格可能带有一个或两个数字提示。黑格右上方的提示告诉你紧挨在它右侧开始的横向格串之和。黑格左下方的提示告诉你紧挨在它下方开始的纵向格串之和。白格是真正做功的地方,你必须在每个白格中填入一个 1 到 9 的数字,使每一条横向的“横列”格串和每一条纵向的“竖列”格串都满足各自的提示。这道谜题的精妙在于这种双重约束:每个白格都恰好位于一条横列格串与一条竖列格串的交叉处,所以你填在那里的数字必须同时满足两个提示。1
黑格不只是分隔符;它们是所有信息的来源。每个黑格带有一个横列提示和/或一个竖列提示,用零表示该方向没有提示。3 一个黑格可能只有横列提示,只有竖列提示,两者都有,或者两者都没有。谜题的几何结构决定了哪些白格在黑格右侧连成一串,哪些在其下方连成一串。这些格串才是谜题真正的约束。游戏引擎会明确存储所有格串,并为每个白格记录它属于哪条横列格串、哪条竖列格串。一条格串至少需要两个白格;夹在黑格之间的单个白格根本构不成格串。在游戏接受的每一种布局中,每个白格都恰好属于一条横列格串和一条竖列格串,由此形成一张纵横交错的约束网格,求解者必须在其中穿行。
Kakuro 的规则简单得优美,却又暗藏强大的威力。你必须在每个白格中填入一个 1 到 9(含)的数字,使每一条格串中的数字之和与对应提示相符,并且任何一条格串中都没有重复的数字。第二个条件,即“互不相同”的要求,正是 Kakuro 区别于单纯算术练习之处。如果只要求凑出提示的和,一条格串可能有许多种解。但互不相同的约束意味着,一条长度为三、提示为六的格串只能以某种顺序填入 1、2、3。一条长度为八、提示为 36 的格串必须使用除 9 以外的每一个数字,因为九个数字之和是 45。格串的和与长度之间的相互作用会立刻缩小可能性,常常缩小到只剩一组数字,而当你把交叉的格串也考虑进来时,有时甚至只剩一种排列。1
设想一个位于横列格串与竖列格串交叉处的白格。横列格串已经把这个格子的可能数字缩小到某个子集,竖列格串也独立地把可能性缩小到另一个子集。这两个子集的交集,就是你能填进这个格子的数字。这正是解 Kakuro 的核心机制:读提示,判断每条格串可能用到哪些数字组合,再让交叉点揭示哪个数字必须放在哪里。一条孤立看来模棱两可的格串,一旦考虑到它的邻居,往往就变得一清二楚。这道谜题奖励耐心和细致的追踪,因为在一个格子里填下的一个数字,可能沿着它所在的整条横列和竖列格串连锁传递,排除别处的可能性,并常常逼出新的填法。1
Kakuro 常被描述为填字游戏的数学转写。这个说法抓住了该谜题结构中某种本质的东西。在文字填字游戏中,你在白格里填入字母,使每条横向和纵向的词条都根据提示构成一个有效的单词。在 Kakuro 中,你在白格里填入数字,使每条横向和纵向的格串都根据提示构成一个有效的和。Kakuro 中的黑格与文字填字游戏中的黑格作用相同:它们标出词条之间的界限,并承载提示。不同之处在于,Kakuro 依靠的不是词汇和拼写,而是算术和互不相同的约束。这道谜题需要同样的横向思维、同样的模式识别,而当一个困难的区域豁然解开时,也会带来同样的满足感。1
Kakuro 这个名字本身来自日语。1 它是日语短语kasan kurosu(加算クロス)的缩写,意思是“加法交叉”。这正是对这道谜题的直接描述:一张填字游戏式的网格,其中的词条都是加法。这种谜题最早以“Cross Sums”(交叉和)之名出现在美国,这个名字是由 Dell Magazines 的 Jacob E. Funk 于 1966 年取的。这个较早的名字或许比日文名更具描述性,因为它直接告诉你该做什么:求出横向和纵向的和。然而 Kakuro 已成为国际上更通行的名字,也许是因为它更短、更好记。这道谜题的身份牢牢扎根于“加法交叉”这一概念,而每一道设计精良的 Kakuro 谜题都名副其实。
要制作一道既可解又有趣的 Kakuro 谜题,需要精心的构造。一道好的谜题必须恰好只有一个解,这就是回溯求解器登场的地方。游戏先用一个随机的有效解填满网格,然后运行回溯求解器,统计由此得出的提示允许多少个解,一旦找到两个解就立即停止。这项检查保证了解的唯一性;但它并不衡量这个解能否不经试错、仅凭纯粹推理得出。如果求解器找到不止一个解,这道谜题就会被弃用,并重新生成一道。求解器在每一步都检查格串内数字是否互不相同、部分和是否可行,以此剪枝搜索;它按格串分组访问格子,并优先处理最短的格串。这个顺序很重要,因为较短的格串可能的数字组合较少,因而能在搜索早期提供更多约束。3
游戏还会拒绝退化的布局。它的网格都是手工调校的,而且每一个都经过检查,确保每个白格都同时被一条横列格串和一条竖列格串穿过。一个只属于一条格串的白格——因为在另一个方向上它孤零零地夹在黑格之间,因而根本没有任何提示——就是退化的:只有一个和在约束它,这个格子几乎可以自由地取好几个数字,从而破坏唯一性。在有效的布局之内,生成器会不断尝试新的填法,直到找到一种其提示有唯一解的填法。这一过程确保你玩到的每一道谜题都经过验证,恰好只有一个解。生成器的确定性意味着同一个种子总会生成同一道谜题,这使得谜题可以测试、可以复现。这对每日谜题的形式很重要,因为你希望每个人都在解完全相同的谜题。3
玩 Kakuro 的本事,在于正确读懂提示,并理解它们对可能的数字组合意味着什么。长度为 2、提示为 3 的格串只能填 1 和 2。长度为 2、提示为 17 的格串只能填 8 和 9。这些是极端情况,提示和长度结合起来只给出唯一一组可能的数字。离这些极端越远,可能的数字组合就越多。长度为 3、提示为 10 的格串可以是 1-2-7、1-3-6、1-4-5、2-3-5,别无其他。Kakuro 的艺术,在于识别出一条格串何时已被缩小到唯一一组数字,然后利用这一信息去解开与之交叉的格串。1
另一个有用的技巧是看所有可能数字之和。数字 1 到 9 的总和是 45。因此长度为 9 的格串必须用上全部九个数字,和为 45。长度为 8 的格串必须恰好排除一个数字,而提示会告诉你是哪一个。长度为 7 的格串必须排除两个数字,而这两个被排除的数字之和等于 45 减去提示。这些数学关系能帮你迅速排除不可能的数字组合,集中精力于真正要紧的那些。练得越多,这些模式就越会成为你的第二天性,你解题的速度也就越快。1
Kakuro 玩起来之所以如此令人满足,在其最佳状态下,是因为每一步都能用逻辑来论证。没有猜测,没有试错,没有“这个数字也许放这里”。如果谜题设计得好,你填下的每个数字都是由提示和你已经推出的约束所迫。这是 Nikoli 传统的标志——Nikoli 是让 Kakuro 和许多其他逻辑谜题流行起来的日本出版商。Nikoli 以手工制作、由读者投稿的谜题著称,这些谜题都有唯一的、可通过逻辑推出的解。需要猜测的谜题不被视为合格的 Nikoli 谜题。正是这种对逻辑纯粹性的坚持,赋予了 Kakuro 智识上的魅力。2
解 Kakuro 的满足感,来自看着网格随着你运用逻辑推理而逐渐填满。在一个格子里填下一个数字,就排除了它所在整条横列和竖列格串中的可能性。这些排除可能迫使其他格子取特定的数字,进而排除更多的可能性,如此循环往复。正是这种连锁效应,让 Kakuro 感觉像一道谜题,而不仅仅是一连串算术题。这道谜题还能自我检验:如果你发现某个格子没有任何有效数字可填,你就知道自己在某处出了错。这种即时反馈的循环让你保持投入,并有动力去找到答案。1
Kakuro 的一大优势在于它的易上手。你不需要懂任何专门词汇或文化典故就能玩。你只需要会做一位数的加法,并理解“互不相同”这个概念。这使 Kakuro 成为各个年龄、各种背景的人都能享受的谜题。与此同时,这道谜题也有足够的深度,让资深玩家保持投入。玩得越多,你识别出的模式就越多,读提示的速度就越快,你的策略也就越精妙。这道谜题可以随你所愿,简单或复杂。3
在日本,它多年来一直是纸媒上最受欢迎的逻辑谜题,这一地位一直保持到 1992 年,那一年数独超越了它;此后在 Nikoli 的出品中,它的受欢迎程度一直仅次于数独。这种受欢迎程度说明了这道谜题的魅力:它有挑战性却公平,复杂却可以理解,解开时令人满足。它几十年来始终受欢迎,这本身就证明了其设计的品质以及它带给玩家的满足感。1
这一版 Kakuro 实现的特别之处在于它的确定性。谜题由一个带种子的随机数生成器生成,这意味着同一个种子总会生成同一道谜题。这使每日谜题的形式成为可能:同一天里每个人玩的都是完全相同的谜题。这也意味着谜题完全可测试,因为你可以用种子复现任何一道谜题。确定性是这款游戏设计中的一项关键特性,它确保了所有玩家之间的一致与公平。3
每日形式还给这道谜题增添了一份社群的意味。每个人都在解同一道谜题,这意味着你可以与其他玩家讨论策略和解法,而不必泄露答案。你可以谈论“右下角那个难缠的提示”,每个人都会确切知道你在说什么。这种共同的体验是 Kakuro 如此令人愉快的原因之一,因为你是一个更大的解谜者社群中的一员。1