LISP大挑战已经发布过三季了,第一季圆周率受到大家的热捧,第二季光路计算也吸引了不少人的关注。本打算将八皇后作为第三季的,临时决定启用了个高难度的完美正方形,现在估计是很少人挑战第三季了。这次将八皇后问题作为第四季大挑战,应该能吸引不少高手参与,这次希望能见到高效率的算法。 八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。下图是八皇后问题的一个解: 八皇后问题一共有 92 个互不相同的解。如果将旋转和对称的解归为一种的话,则一共有12个独立解。很奇怪吧?为什么不是12×8=96个解。
本期LISP大挑战就是求出八皇后问题的12个独立解。
风为什么不挑战92个互不相同的解而要挑战独立解?就是因为判断旋转和对称也需要有效率的算法。
由于八皇后问题的解法很多,大家可以到网上查找其它语言的算法。本次大挑战的优胜者将是LISP程序效率最高的那位。
|