주의사항
해당 문서는 중요 변경 작업 중에 있습니다. 일부 문서에 텍스트가 빠져있거나, 불어로 플레이스홀더(placeholder) 자리차지만 되어 있을 수 있습니다.
앞에서 소개된 도전문제를 해결할 시간이 되었다.
while, if, else 등을 사용해서, 다양한 작업을 완수할 수 있는 프로그램을 작성한다. 이런 프로그램을 작성하면서, 다음 사항을 명심해야만 된다:
이제, 규칙 #1을 기억하라... 이번에는 아래 언급된 모든 도전과제를 해결했는지 확실히 한다.
중요
나중에 다시 해법을 찾을 수 있어, 다양한 해법을 저장했는지 확실히 한다.
정원에 씨를 뿌린 직후 발생한 상황을 나타내는 Harvest 3 세상을 선택한다. 당근 일부는 잘 발아 되었고, 몇몇 곳에서 씨앗 두개가 발아를 했고, 다른 곳에서는 발아를 하지 않았다. 리보그가 정원에서 김을 매는 것을 도와주세요. 두 개의 당근이 있는 곳이 있거나, 당근이 하나도 없는 곳이 있으면 안 됩니다. 과다한 당근은 뽑아내고, 빠진 곳은 씨를 뿌려 넣어야 된다.
직접 해보기!
위에서 기술된대로 프로그램을 작성하라.
김매는 것이 잘 진행됐고, 생육 계절은 끝나서 추수할 시간이 되었다. Harvest 1 와/혹은 Harvest 2 세상을 선택해서 리보그가 모든 당근을 모으게 한다. 두개 세상 모두에서 동작하는 단일 프로그램을 작성해야만 된다.
아름답도록 햇살이 가득한 날입니다. 리보그가 친구와 밖에서 놀고 있어요. 갑자기, 비가 내렸는데 리보그가 집의 모든 창문을 열어 놓고 나온 것을 기억해 냈습니다. 그래서 리보그는 황급히 집으로 돌아와서 집 앞 문턱에 멈췄는데, 어떻게 창문을 닫아야 할지 확신할 수 없었습니다
Do it!
명령어 build_wall() 와 wall_on_right() 혹은 wall_in_front(), 혹은 모두 사용하지만, not right_is_clear(), front_is_clear() 은 사용하지 말고, 리보그가 집의 모든 창문을 닫도록 도와주세요. 리보그가 작업을 마쳤을 때, 문 앞에 서서, 다시 돌아가서 밖에서 놀기 전 상황인 비가 그치기를 기다리면서, 비 내리는 것을 지켜보고 있을 것입니다. 세상은 Rain 1 이다.
리보그 친구 에드나(Erdna)는 Rain 2 세상에 나온 좀더 큰 집에 살고 있습니다. 비가 오기 시작했을 때, 에드나는 리보그와 함께 밖에서 놀고 있었습니다. 에드나가 집의 창문을 모두 닫도록 도와주세요.
시도해 보기!
도전과제는 리보그와 에드나 모두에게 작동하는 단일 프로그램을 작성하는 것이다. 마찬가지로 right_is_clear() 혹은 front_is_clear() 어떤것도 사용하지 않는다. 하지만, 약간 까다로울 것이다.
힌트
해당 지점에 창문이 있는지 알아내려면, 추가적인 단계가 필요하고, 결과에 따라서, 뒤로 돌고 뒤로 가서 해당 창문을 닫는다.
다시 해보기!
이번에는, 리보그와 에드나가 집에 창문을 닫는데 wall_on_right() 혹은 wall_in_front() 함수를 사용하는데 더해서, right_is_clear() 이나 front_is_clear() 함수를 사용하는 프로그램을 작성한다. 로봇이 밟는 단계 (move() 와 turn_left()) 횟수는 줄어야 되는데 이유는 직접 세상에 관한 더 많은 정보를 얻을 수 있기 때문이다.
지난밤에 바람이 정말 심하게 불었다. 리보그 집 밖에 쓰레기가 여기저기 널려 있다. 리보그 부모님이 리보그에게 차도(Storm 1)뿐만 아니라 장외시장으로 가는 길도 말끔하게 청소하라고 했다: Storm 2.
여러분 차례!
리보그는 모든 나뭇잎을 모아서 시작 지점의 북쪽에 있는 쓰레기 통에 담아 놓아야 하고, build_wall() 함수를 사용해서 뚜껑을 확실히 닫도록 한다. if 문과 while 문 둘중 하나에 있는 조건 carries_object() 를 사용해서 리보그는 물체(여기서 죽은 나뭇잎)를 갖고 있는지 판단할 수 있다.
리보그의 부모님은 아들의 처리한 일을 자랑스러워 하며, 지난 밤 폭풍에 날아간 뒷마당 나뭇잎 모두 주워 담으라고 했다. 상황은 Storm 3 에 나와 있다. 리보그는 모든 쓰레기를 주워서 쓰레기통에 넣어야 된다.
여러분 차례!
세가지 Storm 세상 모두에서 동작하는 프로그램을 작성하라.
Center 1 에서 Center 3 까지 세상을 둘러본다.
직접 해보기!
리보그 본인이 위치한 직사각형 방에 기하적인 중심에 토큰을 놓는 단일 프로그램을 작성하라. 가장 단순한 사례로 시작하고, 점진적으로 개선해서 더 복잡한 사례를 다루게 만든다. 이것이 더 도전적인 과제임에 주의한다.
힌트
토큰 두개를 소지한 리보그가 각 줄 끝지점에 토큰 한개를 놓게 하는 것이 유용하다는 것을 알게된다. 그리고 나서, 한쪽 끝에 토큰을 집고 한단계 옆으로 옮기를 반복해서 양쪽 토근이 같은 위치에 있게 해서, 중심 위치를 찾을 수 있다. (수평선을 따라) 일차원에서 어떻게 하는지 알게될 되면, 시작점으로 해당 지점을 사용해서 (수직선을 따라) 다른 지점을 따라 중앙을 찾을 수 있다.