生成迷宫并求解迷宫算法_迷宫行走算法

本文介绍了作者在解决在线招聘挑战时遇到的迷宫问题,以及采用的迷宫求解算法——wall follower。初始实现遇到死胡同问题,通过改进使用堆栈记录路径,解决了超时问题。最终,作者在Kotlin中使用Fuel库实现了这个算法,并成功完成挑战。
摘要由CSDN通过智能技术生成

生成迷宫并求解迷宫算法

上周,一位同事向我的团队指出了在线开发人员招聘的挑战。 当我发现它很有趣并且不需要透露自己的电子邮件时,我决定尝试一下,只是检查是否可以发送。

问题很简单,但并不容易:考虑一个有限大小的矩形迷宫。 必须在板上找到特定的单元-出口,从起点开始。 一个人有2个移动选项:一次在4个基点之一中移动一个牢房,或跳到任何以前访问过的牢房。 当然,如果没有障碍,那将不是迷宫:每个单元都提供有关4个相邻单元的信息,无论是未访问,被墙阻挡还是已经被探索。 最后一个约束是:每个迷宫都存活有限的时间。 如果在超时后仍未到达末端单元,则为失败。

在阅读了Wikipedia上有关迷宫求解算法的专门页面之后,我决定实现wall follower 。 这非常简单,基本上,您总是遵循左(或右)墙。

我的第一个实现就是这样做的。 这种解决方案的问题是,一旦到达死角,即一个单元有一个被访问的方向而所有其他方向都被阻塞,则一个单元必须逐个单元地移回去。 由于超时,此实现始终失败。

我第二次尝试变得更聪明。 我不想跳一个单元,而是考虑跳到最后一个单元,该单元提供了至少两个未探索的相邻单元之间的选择。 为了做到这一点,当我将一个单元格移入一个单元格时,将它们放在堆栈上。 当陷入死胡同时,我只需要弹出堆栈中的顶部单元格,然后一步就跳到它上面。 再次查询并更新,因为少了一个方向被认为是未开发的,此过程继续进行。

它碰巧是一个很好的解决方案:我成功了2次(也失败了几次),同时获得了秘密消息和您可以应用的页面URL。 太糟糕了,它在加拿大,但是很有趣。 为了使其更加有趣,我在Kotlin中使用Fuel库进行了开发。

翻译自: https://blog.frankel.ch/maze-walking-algorithm/

生成迷宫并求解迷宫算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值