文件名称:logic-puzzles:使用SBV和Z3解决Haskell中的逻辑难题
文件大小:28KB
文件格式:ZIP
更新时间:2024-05-29 16:54:51
Haskell
使用SMT求解器解决逻辑难题 解决Haskell中各种逻辑难题的一些示例。 这些示例使用Haskell中的SBV库,该库又使用Z3解算器。 这里解决的难题包括 数独 战舰 按数字绘画 正在安装 您将需要安装Z3。 我使用的是版,但无法使SBV与4.3.1版一起使用。 (我没有尝试过任何其他版本。此外,我认为SBV也可以与其他一些求解器一起使用,但我也没有尝试过这些版本。) Z3正常运行后,您可以安装所有Haskell依赖项并运行 cabal install cabal run 解释 这个想法是使用通用约束求解器来解决逻辑难题。 这使编写新难题的程序变得容易,因为您基本上只需要编写游戏规则,而不是求解游戏的算法即可。 此处需要权衡速度。 如果您为特定难题编写了专门的求解器,则求解器可能会快得多。 (也可以通过更好地表达规则来优化我在此处包含的SBV实现,但我并没有花很多时间。) 为了
【文件预览】:
logic-puzzles-master
----stack.yaml(2KB)
----LICENSE(1KB)
----src()
--------Akari.hs(5KB)
--------Sudoku.hs(3KB)
--------Hashiwokakero.hs(5KB)
--------PaintByNumbers.hs(3KB)
--------Solvers()
--------Util.hs(496B)
--------Battleship.hs(12KB)
--------Slitherlink.hs(9KB)
--------Main.hs(5KB)
----Setup.hs(46B)
----examples()
--------hashiwokakero()
--------sudoku()
--------slitherlink()
--------battleship()
--------akari()
----README.md(5KB)
----logic-puzzles.cabal(4KB)