본문 바로가기
Coding/Swift

Playgrounds 코딩 배우기 1 > 조건 코드 > 박스 안에서

Swift Playgrounds 코딩 배우기 1 > 조건 코드 > 박스 안에서

 

목표 : 둘러싸인 격자의 아이템 처리하기

 

조건 : 함수, 루프, 조건식을 사용해야 한다.

 

 

나는 반시계 방향으로 한바퀴 도는 것을 택했다. 

이때 현위치를 제외한 경로에 있는 블록에 순서를 붙이면

1,2,4,6 번 블록에서 turnLeft() 를 사용하게 되는데 이를 반복문을 이용하여 코드를 짤 수 있다. 

총 8번의 진행중에서

1,2,4,6은 turnLeft()가 있고

3,5,7,8은 turnLeft()가 없다. 

 

이것을 반복이 가능하도록 다듬으면 

첫번째로 방문하는 블록(1)은 반복에서 제외하고,

마지막으로 방문하는 블록(8)은  결과에 영향을 미치지 않지만 turnLeft()를 넣는다.

 

그럼

2,4,6,8 은 turnLeft()가 있고,

3,5,7은 turnLeft()가 없고... 짝수,홀수로 나눠진다. 

그 특성을 조건문을 이용하여 적용해주면 된다. 

 

 

전체코드_

func collectOrToggle() {
    if isOnClosedSwitch {
        toggleSwitch()
    } else if isOnGem {
        collectGem()
    }
}

moveForward()
collectOrToggle()
turnLeft()

for i in 1 ... 7 {
    if i % 2 == 1 {
        moveForward()
        collectOrToggle()
        turnLeft()
    } else {
        moveForward()
        collectOrToggle()
    }
}