小编don*_*h77的帖子

使用Prim算法实现随机生成的迷宫

我正在尝试使用Prim算法实现随机生成的迷宫.

我希望我的迷宫看起来像这样: 在此输入图像描述

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

在此输入图像描述

我目前坚持正确实现以粗体突出显示的步骤:

  1. 从充满墙壁的网格开始.
  2. 选择一个单元格,将其标记为迷宫的一部分.将单元格的墙添加到墙列表中.
  3. 虽然列表中有墙:
    • **1.从列表中选择一个随机墙.如果对面的细胞尚未进入迷宫:
        1. 使墙成为通道,并将对面的单元标记为迷宫的一部分.**
        1. 将单元格的相邻墙添加到墙列表中.
      1. 从列表中删除墙.

这篇关于迷宫生成的文章.

如何确定单元格是否是墙列表的有效候选者?我想改变我的算法,以便产生正确的迷宫.任何有助于我解决问题的想法都将不胜感激.

algorithm maze graph-theory minimum-spanning-tree

10
推荐指数
2
解决办法
6606
查看次数

Haskell没有使用'print'产生的实例

我想编写一个函数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)

haskell

6
推荐指数
1
解决办法
2502
查看次数

实现非确定性有限自动机(NFA)

我正在尝试开发一种在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但是我不确定.

java finite-automata nfa automaton automata-theory

4
推荐指数
1
解决办法
4184
查看次数