鱼C论坛

 找回密码
 立即注册
查看: 17043|回复: 123

[技术交流] 通向终点的路不止一条!python迷宫。

  [复制链接]
发表于 2014-11-17 20:09:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 wei_Y 于 2014-11-24 19:53 编辑

2008121223547917.jpg


其实木有上面那么高端啦。。只是数字版。。

规则:


  1. 迷宫没有墙壁,但是每条边的路被坑包围。如果一个玩家掉在坑里的话,他们就丢失了。迷宫是用矩阵来表示(含有列表的列表): 1是坑,0的路径的一部分。 迷宫的大小是12×12,外界都是坑。玩家在点(1,1)开始。出口是在点(10,10)。 你需要找到通过迷宫的路径。 玩家只能通过四个方向移动 南(下 [1,0]),北(上 [-1,0]), 东(右[0,1]),西(左[0,-1])。这条路线被描述成由不同的字符组成的字符串:“S”=南,“N”=北,“E”=东,和“W”=西。
复制代码


迷宫:
One:
360截图20141117195541691.jpg


[
[1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,0,0,0,0,0,0,0,1],
[1,0,1,1,1,1,1,1,0,1,1,1],
[1,0,1,0,0,0,0,0,0,0,0,1],
[1,0,1,0,1,1,1,1,1,1,0,1],
[1,0,1,0,1,0,0,0,0,0,0,1],
[1,0,0,0,1,1,0,1,1,1,0,1],
[1,0,1,0,0,0,0,1,0,1,1,1],
[1,0,1,1,0,1,0,0,0,0,0,1],
[1,0,1,0,0,1,1,1,1,1,0,1],
[1,0,0,0,1,1,0,0,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1,1],
]











Two:

360截图20141117195840922.jpg
[

[1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,1,0,0,0,1,0,0,0,0,1],
[1,0,1,0,1,0,1,0,1,1,0,1],
[1,0,1,0,1,0,1,0,1,0,0,1],
[1,0,1,0,1,0,1,0,1,0,1,1],
[1,0,1,0,1,0,1,0,1,0,0,1],
[1,0,1,0,1,0,1,0,1,1,0,1],
[1,0,1,0,1,0,1,0,1,0,0,1],
[1,0,1,0,1,0,1,0,1,0,1,1],
[1,0,1,0,1,0,1,0,1,0,0,1],
[1,0,0,0,1,0,0,0,1,1,0,1],
[1,1,1,1,1,1,1,1,1,1,1,1],
]

three:

360截图20141117200007714.jpg

[
[1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,1,0,0,0,1,0,0,1],
[1,0,1,0,0,0,1,0,0,0,1,1],
[1,0,0,0,1,0,0,0,1,0,0,1],
[1,0,1,0,0,0,1,0,0,0,1,1],
[1,0,0,0,1,0,0,0,1,0,0,1],
[1,0,1,0,0,0,1,0,0,0,1,1],
[1,0,0,0,1,0,0,0,1,0,0,1],
[1,0,1,0,0,0,1,0,0,0,1,1],
[1,0,0,0,1,0,0,0,1,0,0,1],
[1,0,1,0,0,0,1,0,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1,1],
]

Four:

360截图20141117200155873.jpg


[
[1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,1,0,0,0,1,0,0,1],
[1,0,1,0,0,0,1,0,0,0,1,1],
[1,0,0,0,1,0,0,0,1,0,0,1],
[1,0,1,0,0,0,1,0,0,0,1,1],
[1,0,0,0,1,0,0,0,1,0,0,1],
[1,0,1,0,0,0,1,0,0,0,1,1],
[1,0,0,0,1,0,0,0,1,0,0,1],
[1,0,1,0,0,0,1,0,0,0,1,1],
[1,0,0,0,1,0,0,0,1,0,0,1],
[1,0,1,0,0,0,1,0,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1,1],
]
Five:

360截图20141117200440791.jpg

[
[1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,1,0,0,0,1,0,0,1],
[1,0,1,0,0,0,1,0,0,0,1,1],
[1,0,0,0,1,0,0,0,1,0,0,1],
[1,0,1,0,0,0,1,0,0,0,1,1],
[1,0,0,0,1,0,0,0,1,0,0,1],
[1,0,1,0,0,0,1,0,0,0,1,1],
[1,0,0,0,1,0,0,0,1,0,0,1],
[1,0,1,0,0,0,1,0,0,0,1,1],
[1,0,0,0,1,0,0,0,1,0,0,1],
[1,0,1,0,0,0,1,0,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1,1],
]


测试代码:

  1. def check_route(func, labyrinth):
  2.         MOVE = {"S": (1, 0), "N": (-1, 0), "W": (0, -1), "E": (0, 1)}
  3.         #copy maze
  4.         route = func([row[:] for row in labyrinth])
  5.         pos = (1, 1)
  6.         goal = (10, 10)
  7.         for i, d in enumerate(route):
  8.             move = MOVE.get(d, None)
  9.             if not move:
  10.                 print("Wrong symbol in route")
  11.                 return False
  12.             pos = pos[0] + move[0], pos[1] + move[1]
  13.             if pos == goal:
  14.                 return True
  15.             if labyrinth[pos[0]][pos[1]] == 1:
  16.                 print("Player in the pit")
  17.                 return False
  18.         print("Player did not reach exit")
  19.         return False
复制代码

带上写的函数和迷宫列表:

360截图20141117200620783.jpg


嘻嘻,能不能写粗来呢,各位试试吧。

我写的太菜了不贴上来丢人了。


大神写的:


游客,如果您要查看本帖隐藏内容请回复







评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
bevin + 5 + 5

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-1-24 15:29:44 From FishC Mobile | 显示全部楼层
懂了!!!!! 是这样的吧?
#迷宫算法
def checkio(data): #主函数
    result=[] #结果存放处
    dirs=[[0,1,'D'],[1,0,'R'],[0,-1,'U'],[-1,0,'L']] #方向定义
    def move(path,x,y,field): #移动函数
        field[y][x]=1 #把自己变成1, 防止无限递归
        if x==10 and y==10: #如果到终点了
            result.append(path) #将路径放入结果
        for d in dirs: #检查四个方向
            if field[y+d[1]][x+d[0]]==0: #如果某个方向为0
                move(path+d[2],x+d[0],y+d[1],field) #递归
    move('',1,1,data) #调用移动函数, 此时路径为空
    return result[0] #将结果路径返回, Done!

来自:鱼C论坛 iPhone客户端来自: iPhone客户端

评分

参与人数 1荣誉 +6 鱼币 +6 贡献 +2 收起 理由
wei_Y + 6 + 6 + 2 是这样的~。

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-21 21:02:19 | 显示全部楼层
看看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-18 10:08:03 | 显示全部楼层
最近碰到递归一直搞不出来,拜读一下大神作品
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-17 17:32:25 | 显示全部楼层
没看懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-16 23:01:47 | 显示全部楼层
学习学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-13 19:16:41 | 显示全部楼层
厉害
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-3 12:16:33 | 显示全部楼层

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-6-11 10:17:18 | 显示全部楼层
练习一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-15 17:17:40 | 显示全部楼层
谢谢  学习了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-14 19:32:51 From FishC Mobile | 显示全部楼层
谢谢楼主
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-14 17:41:48 | 显示全部楼层
为什么我在我的Python编译器里面编译完 没有任何显示
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-5 14:57:41 | 显示全部楼层
学习下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-29 15:03:38 | 显示全部楼层
果然大神!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-28 08:52:09 | 显示全部楼层
前来学习一下,谢谢楼主
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-28 01:26:05 | 显示全部楼层
果然是递归解法,思路差不多
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-28 01:23:25 | 显示全部楼层
我感觉可以用递归解法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-27 23:54:58 | 显示全部楼层
先留下标记,后期学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-27 23:34:33 | 显示全部楼层
好強大的一個題目喔
我要努力學習讓自己可以寫出來這樣的編程
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-21 11:43:13 | 显示全部楼层
初学者表示一脸蒙蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-29 14:20:43 | 显示全部楼层
谢谢分享
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-26 07:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表