Playground 学习编程1-算法

本文介绍了一系列用于探索迷宫的算法,包括右手定则、调整算法等,并通过具体代码实现展示了如何利用这些算法来解决迷宫问题。从基本的绕墙行走,到复杂环境下的路径选择,逐步深入探讨了算法的设计与优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 右手定则

func navigateAroundWall() {
    if isBlockedRight {
        moveForward()
    }  else {
        turnRight()
        moveForward()
    }
}
func turnAround(){
    turnLeft()
    turnLeft()
}

while !isOnClosedSwitch{
    navigateAroundWall()
    if isOnGem{
        collectGem()
        turnAround()
    }
}
toggleSwitch()

2. 调整算法

func navigateAroundWall() {
    if isBlockedRight && !isBlocked {
        moveForward()
    }  else if !isBlockedRight {
        turnRight()
        moveForward()
    }  else if isBlocked {
        turnLeft()
    }
}
func turnAround(){
    //转身
    turnLeft()
    turnLeft()
}

while !isOnClosedSwitch {
    navigateAroundWall()
    if isOnGem {
        collectGem()
        turnAround()
    }
}
toggleSwitch()

3. 征服迷宫

func wonderWay() {
    if isBlockedRight {
        while isBlocked {
            turnLeft()
        }
    } else {
        turnRight()
    } 
    moveForward()
}

while !isOnGem {
    wonderWay()
}
collectGem()

4. 左转还是右转?

func button() {
    while isOnClosedSwitch { 
        if !isBlocked {
            toggleSwitch()
            turnRight()
        } else {
            toggleSwitch()
            turnLeft()
        }
    }
}

while !isOnGem {
    moveForward()
    button()
}
collectGem()

5. 向左走,向右走

func runWay() { 
    if isBlocked && isBlockedLeft { 
        turnRight()
    } else if isBlocked && isBlockedRight {
        turnLeft()
    }
}
func gemSwitch() {
    if isOnGem {
        collectGem()
    } else if isOnClosedSwitch {
        toggleSwitch()
    }
}
func frontBlock() {
    if isBlocked {
        turnLeft()
    }
}

while !isBlocked || !isBlockedLeft || !isBlockedRight  { 
    moveForward()
    gemSwitch()
    runWay()
    frontBlock()
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值