使用递归

时间:2015-06-21 10:51:17

标签: algorithm haskell

我有11个列表(大小~36),64位数字。一个组合 - 每个列表一个元素将形成一个包含11个元素的列表。我需要找到这样的组合,即xor所有11个元素的操作将产生幻数(FFFF FFFF FFFF FFFF十六进制格式)。 '野蛮力量'使用理解列表来创建所有可能的组合,然后迭代直到达到条件是不实际的:可能的组合数量很大。

当我尝试在8x8板上解决2D拼图时会出现此问题。有11个数字和64位数字(二进制​​形式)表示该板上的图形和位置。这就是为什么有11个列表,每个数字都有可能的位置。当它们之间没有交叉时,所有数字都能很好地适应电路板。

我有命令式编程背景,但我觉得Haskell能够以比#34; spaghetti"更可读和易懂的方式解决这个问题。命令式语言解决方案。

1 个答案:

答案 0 :(得分:3)

set-cover包提供了解决此类问题的解决方案。