Lobsters | 原文链接 | 2026-09-15 收录

四乘四数独只有十二种解:以及找最小子集的一个技巧

来源: baldino.dev — 2026-09-14

概述

作者从「4×4 数独到底有多少种解」这个问题出发展开了一篇算术漫游。数字本身没有意义,交换符号不会改变谜题结构,因此在把 1-4 的排列视为同构之后,原本 288 个合法填法只剩 12 种本质上不同的解:288 恰好是 12 乘以 4!。接着他把问题转向谜题:枚举所有可能的起始局面会得到 85632 个有效谜题,按置换归并后是 3568 个;其中最小谜题(去掉任意一个已知数字解就不再唯一)的总数,因解的结构不同而分成两档——192 个解只对应 304 个最小谜题,另外 96 个解对应 284 个。文章最后给出一个实用技巧:用位掩码枚举候选子集时,先把每个子集映射成掩码,再按位计数筛选上下界,就能把搜索空间压下来,无需逐一暴力验证。作者也诚实地留下警告:这段 Python 跑完要约两到三分钟,仓库名就叫「糟糕的 Python 代码」。

核心要点

金句

只要你不介意置换,就有 12 种本质不同的 4×4 解、288 个填法,而合法起始局面只有 85632 个——按置换算则仅剩 3568 个。
返回 Lobsters 首页