我花了一个小时没解出来,然后写了 30 行代码,算法用不到 1 毫秒解完了。

这道题就是著名的”斑马谜题”(又叫爱因斯坦谜题):五个人住一排房子,每人国籍不同、职业不同、宠物不同、饮料不同、房子颜色不同,给你一堆线索,问——谁养斑马?

1962 年发表在 Life International 杂志上,据说只有 2% 的人能解出来。

这篇文章介绍一种完全不同的做法:把谜题翻译成 XCC 问题,让舞蹈链算法自动求解。不用画表格,不用推理,只需要把”什么是合法答案”描述清楚。

然后我们反过来——让算法自动出一道新的逻辑推理题。

Read more


最近做了一件拖了很久的事情——给博客换了个域名。新地址是 blog.morefreeze.top,旧的 morefreeze.github.io 会自动跳转过来,不影响之前收藏的链接。

Read more


你一定见过这种东西:

C A N T O R
G A U S S .
E U L E R .
A B E L . .
. . . . . .
. . . . . .

一个字母方格,藏着若干单词——横着、竖着,有时候斜着。找到它们是游戏,但出这道题才是有趣的工程问题:给你几个单词,怎么把它们都塞进格子里?

这件事比看起来难。单词可以斜放,可以反向,两个单词可能在某个格子相交——相交处的字母必须相同。暴力枚举所有摆法代价太大,还容易遗漏。

这篇文章介绍一种优雅的做法:把”出谜题”变成一个填色游戏,然后用舞蹈链算法自动求解。顺带揭露一个很容易写错的细节——以及 Knuth 用来修复它的一个小技巧。

Read more