我正在尝试使用Prim算法实现随机生成的迷宫.
我希望我的迷宫看起来像这样:

但是我从我的程序生成的迷宫看起来像这样:

我目前坚持正确实现以粗体突出显示的步骤:
- 从充满墙壁的网格开始.
- 选择一个单元格,将其标记为迷宫的一部分.将单元格的墙添加到墙列表中.
- 虽然列表中有墙:
- **1.从列表中选择一个随机墙.如果对面的细胞尚未进入迷宫:
- 使墙成为通道,并将对面的单元标记为迷宫的一部分.**
- 将单元格的相邻墙添加到墙列表中.
- 从列表中删除墙.
如何确定单元格是否是墙列表的有效候选者?我想改变我的算法,以便产生正确的迷宫.任何有助于我解决问题的想法都将不胜感激.
我想编写一个函数toTree,它将值列表转换为二叉树:
data Tree a = Leaf | Branch a (Tree a) (Tree a)
tree = Branch 6 (Branch 3 Leaf Leaf) (Branch 9 Leaf Leaf)
split :: [a] -> ([a], [a])
split lst = splitAt (((length lst) + 1) `div` 2) lst
toTree :: [a] -> Tree a
toTree (x: xs) = Branch x (toTree xm) (toTree xl) where (xm, xl) = split xs
toTree [] = Leaf
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么我会收到此错误 toTree [1,2,3]
No instance for (Show (Tree a0)) arising from a …Run Code Online (Sandbox Code Playgroud) 我正在尝试开发一种在Java中执行非确定性有限自动机的模拟.第一个命令行参数是定义机器的文本文件.第二个参数是输入字符串.如果它接受字符串,则打印到标准输出"accept",然后是可以结束的接受状态列表.如果它拒绝,则输出"reject",然后输出所有可能的结束状态列表.
例如,文字:
state 1 start
state 2
state 7 accept
transition 1 0 1
transition 1 1 1
transition 1 0 2
transition 2 0 2
transition 2 0 1
transition 2 1 1
transition 2 0 7
transition 7 0 7
transition 7 1 7
Run Code Online (Sandbox Code Playgroud)
看起来像:

输入字符串为10将输出
reject 1 2
Run Code Online (Sandbox Code Playgroud)
并输出一个输入字符串000
accept 7
Run Code Online (Sandbox Code Playgroud)
我需要建议使用什么数据结构.我想过使用hashmaps和sets但是我不确定.