Python深度优先算法生成迷宫
作者:crystal_tyan 发布时间:2023-05-13 08:38:09
标签:Python,深度优先算法,迷宫
本文实例为大家分享了Python深度优先算法生成迷宫,供大家参考,具体内容如下
import random
#warning: x and y confusing
sx = 10
sy = 10
dfs = [[0 for col in range(sx)] for row in range(sy)]
maze = [[' ' for col in range(2*sx+1)] for row in range(2*sy+1)]
#1:up 2:down 3:left 4:right
operation = {1:(0,-1),2:(0,1),3:(-1,0),4:(1,0)}
direction = [1, 2, 3, 4]
stack = []
for i in range(2*sx+1):
if i%2 == 0:
for j in range(2*sx+1):
maze[i][j] = '#'
for i in range(2*sy+1):
if i%2 == 0:
for j in range(2*sy+1):
maze[j][i] = '#'
def show(graph):
for i in graph:
for j in i:
print j,
def showRouter(stack):
RGragh = [[0 for col in range(sx)] for row in range(sy)]
for (x, y) in stack:
RGragh[y][x] = 1
show(RGragh)
def generateMaze(start):
x, y = start
dfs[y][x] = 1
random.shuffle(direction)
for d in direction:
px, py = (x + y for x, y in zip(start, operation[d]))
if px < 0 or px >= sx or py < 0 or py >= sy:
pass
else:
if dfs[py][px] is not 1:
mx = 2*x + 1
my = 2*y + 1
if d == 1:
maze[my-1][mx] = ' '
elif d == 2:
maze[my+1][mx] = ' '
elif d == 3:
maze[my][mx-1] = ' '
elif d == 4:
maze[my][mx+1] = ' '
generateMaze((px,py))
generateMaze((0,0))
show(dfs)
show(maze)
来源:http://blog.csdn.net/crystal_tyan/article/details/42523861
0
投稿
猜你喜欢
- 本文列举了兼容 IE 和 FF 的换行 CSS 推荐样式,详细介绍了word-wrap同word-break的区别。兼容 IE 和 FF 的
- objectobject 是 Python 为所有对象提供的父类,默认提供一些内置的属性、方法;可以使用 dir 方法查看新式类以 obje
- 1. 什么是数据不平衡所谓的数据不平衡(imbalanced data)是指数据集中各个类别的数量分布不均衡;不平衡数据在现实任务中十分的常
- 上传完整django项目文件到服务器sftp ftp lrzsz都可以上传文件到服务器,看自己我django项目叫yunwei,主要app是
- 本文实例讲述了python实现从ftp服务器下载文件的方法。分享给大家供大家参考。具体实现方法如下:import ftplibftp = f
- 方法1: 将shell执行的结果保存到字符串def run_cmd(cmd): result_str='' process
- 本文实例讲述了Python实现运行其他程序的四种方式。分享给大家供大家参考,具体如下:在Python中,可以方便地使用os模块来运行其他脚本
- 调用jupyter notebook文件内的函数一种简单方法python开发环境jupyter notebook良好的交互式和模块化受到很多
- Elasticsearch是一个分布式、Restful的搜索及分析服务器,Apache Solr一样,它也是基于Lucence的索引服务器,
- 一、前言在写业务代码时候,有许多场景需要重试某块业务逻辑,例如网络请求、购物下单等,希望发生异常的时候多重试几次。本文分享如何利用Pytho
- 前言你有没有经常好奇一些音乐软件的频谱特效是怎么做的,为什么做的这么好看?有没有想试试自己提取音乐频谱并可视化展现出来?今天,咱就结合上次的
- 一、super( ) 的用途了解 super() 函数之前,我们首先要知道 super() 的用途是啥?主要用来在子类中调用父类的方法。多用
- 当我们想指定每一层的学习率时:optim.SGD([ &
- .data文件格式.data文件是用来存储数据的一种文件格式。之前通常数据是用逗号隔开或tab健隔开的格式,现在也可能是文本文件格式或二进制
- 本篇博客参考:1)DEM generation from laser scanner data using adaptive TIN mod
- 实现思路是用深度遍历,对图片进行二值化处理,先找到一个黑色像素,然后对这个像素的周围8个像素进行判断,如果没有访问过,就保存起来,然后最后这
- Python的装饰器(decorator)是一个很棒的机制,也是熟练运用Python的必杀技之一。装饰器,顾名思义,就是用来装饰的,它装饰的
- python的代码错误检查通常用pep8、pylint和flake8,自动格式化代码通常用autopep8、yapf、black。这些工具均
- 网页开发人员常常希望能够了解并掌握多种语言,结果是,学习一门语言的所有内容是棘手的,但是却很容易发现你并没有完全利用那些比较特殊却很有用的标
- 网上有许关于固定表格的标题行的文章,但是既要固定标题行又要固定标题列的却几乎没有。现我写下如下代码以供大家参考:<html> &