做題感悟(PlayGrounds隨機寶石遍布各處)


做PlayGrounds隨機寶石遍布各處這關時,總想着用while循環一次搞定,但是沒有關鍵點和規律可找,一直鑽牛角尖,說明還是不能很好的貫通知識,最后還是用笨方法,一步一步寫,最后簡化代碼,發現規律,完成答題,感悟是:如果沒有思路就用一步一步去做題,沒有捷徑就勤奮點

 

 

let totalGems = randomNumberOfGems

var gem = 0

pinkPortal.isActive=false

bluePortal.isActive=false

func move(){moveForward();if isOnGem {collectGem()

    gem+=1

    }

}

func zhuanshen() {

    turnLeft();turnLeft()

    

}

for i in 1 ... 2 {

    if i==2{move()}

    move()

    move()

    turnLeft()

    move()

    zhuanshen()

    move()

    move()

    zhuanshen()

    move()

    turnLeft()

    pinkPortal.isActive=true

    bluePortal.isActive=true

    move()

    move()

    move()

    zhuanshen()

    move()

    pinkPortal.isActive=false

    bluePortal.isActive=false

    move()

    move()

    move()

    zhuanshen()

    move()

    pinkPortal.isActive=true

    move()

}用的for循環遍歷作出來的題,但缺點很明顯,不能做步數多的,也不符合算法的適用性,還需要在思考

 

let totalGems = randomNumberOfGems

var gem = 0

var y=0

 

func move(){moveForward();if isOnGem {collectGem();gem+=1}}

while gem<randomNumberOfGems{

    if isBlocked{turnLeft();if isBlocked {turnLeft();y+=1;moveForward()}}

    if y==2{if !isBlockedLeft || !isBlockedRight{turnLeft()};

        y-=2;

        pinkPortal.isActive=true

        bluePortal.isActive=true

    }

    else {pinkPortal.isActive=false

        bluePortal.isActive=false

    }

    move()

用while循環做出來了,多思考找到每一步要改變的獨有的特點,比如轉兩次要開起傳送門,當左邊/右邊無阻擋時轉彎,真的鍛煉思維


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM