문제를 풀어보고 싶다면 여기로 처음 부분만 빼면 굉장히 단순한 구조로 되어있다. 마지막 별에 도달할 때 까지 초록색 발판이면 꺾고, 파란색 발판이면 직진하면 되기에. 하지만 처음에 저 빨간색 발판의 별을 어떻게 먹을 것인지가 문제다. F1은 처음에 빨간색 별을 먹는 역할이다. 옆으로 한칸을 간 다음에 별을 먹고 방향을 꺾은 뒤 F2를 호출한다. F2 역시 처음 시작 부분을 빠져나오는 역할이다. F2가 끝나면 우주선은 다시 처음 시작했던 파란색 발판 위에 오르고 F3를 호출한다. F3는 직진하며 초록색 발판의 경우 꺾는 역할이다. 무한 반복. [20/50]
파란색 발판에서 반대 방향으로 시작하는데, 먼저 방향을 돌리고, 직진 시킨 뒤, 빨간 발판이 나오면 계단 이동을 해야한다. F1은 방향을 전환하는 역할만 한다. 처음 시작할 때 우주선?의 방향을 뒤로 돌린 뒤에 F2를 호출한다. F2는 이후의 모든 작업을 수행하는데, 우선 파란색 발판일 때는 직진만 한다. 이후 빨간색 발판에 도착하면 방향을 90도 꺾는다. 그 다음 한 칸을 직진할 것이고, 이후 초록색 발판에 도착하면 또 반대로 90도를 꺾는다. 그렇게 계속 반복. [19/50]
가운데 빨간색 발판을 시작으로 4 방향으로 별이 존재하는 맵이다. 직진과 방향 전환 만으로 풀 수 있다. F1은 초록색 발판이 나오면 F2를 실행하고, 빨간색 발판이 나오면 방향을 90도 전환한다. F2는 한 칸을 전진 한 뒤에 방향을 한 바퀴 돌려 다시 중앙을 향하게 한다.
처음에 이 문제를 봤을 때는 굉장히 쉽게 풀 줄 알았다. 파란색 발판에서는 직진, 빨간색 발판일 때만 우회전을 하면 되니까. 엄청나게 단순하게 풀 줄 알았는데, 이게 답이 아니었다! 왜냐하면 처음 시작 지점 바로 뒤편에 별이 하나 있었기 때문이다. 결국은 처음 시작할 때 뒤로 돌아 별을 먹고 오던지, 아니면 쭉 가다가 초록색 지점에 도착하고 뒤로 돌아 가던지 선택해야 했다. 나는 처음 시작할 때 뒤로 돌아 별을 먹고 진행하는 방법을 선택했다. 깔끔한 정답은 아닐 거 같다는 생각이 든다. 하지만 그래도 풀었으니까.. ㅎㅎ 처음으로는 F1에서 뒤로 돌고 F3를 실행하고, F3는 별을 먹고 다시 뒤로 돈다. 그리고 F2 무한 반복.
아주 쉬운 문제는 아니다. F2, F3이 있는 만큼 어떤 함수를 어떻게 반복할 것인지가 관건이 된다. 두 칸 직진후 좌회전, 또는 우회전이 반복되는 구조라 다음과 같이 함수를 구성했다. F2: 직진 2번, 좌회전 한번 F3: 직진 2번, 우회전 한번 이게 유일한 답은 아니겠지만, 나는 이렇게 풀었다.