if (knitr:::is_latex_output()) {
::asis_output('\\url{....}')
knitrelse {
} ::include_graphics("fig/Around_01.gif")
knitr }
2 돌아다니기 (Around)
2.1 Around 1
- 문제 바로가기
- 리보그를 세상한바퀴 돌게 만드는 것이다.
- 로봇의 좌표 (x, y) = (1, 1) 라서 로봇의 최종위치를 한바퀴 돌아 반드시 (x, y) = (1, 1) 으로 이동시킨다.
- 난이도: 1
- 함수:
move()
,turn_left()
,put()
- 함수:
- 난이도: 2
- 함수:
move()
,turn_left()
,put()
- 테스트 함수:
front_is_clear()
,wall_in_front()
,object_here()
- 반복
while
,repeat
/for
루프와 제어if
문
- 함수:
2.1.1 실행결과
2.1.2 코드
4 :
repeat 9 :
repeat
move() turn_left()
2.2 Around 2
리보그가 토큰(token)을 가지고 다니는 점을 이용하여 리보그 세상을 한바퀴 삥 둘러 돌아다닌 후에 제자리로 돌아온 위치를 표식하고 이를 프로그램 종료 조건으로 설정한다.
- 문제 바로가기
- 리보그를 세상한바퀴 돌게 만드는 것이다.
- 로봇의 좌표 (x, y) 가 임의 랜덤으로 주어졌기 때문에 로봇의 최종위치를 한바퀴 돌아 반드시 (x, y) 랜덤 위치로 이동시킨다.
- 난이도: 3
- 함수:
move()
,turn_left()
,put()
- 테스트 함수:
front_is_clear()
,wall_in_front()
,right_is_clear()
,wall_on_right()
,object_here()
- 반복
while
,repeat
/for
루프와 제어if
문
- 함수:
2.2.1 실행결과
if (knitr:::is_latex_output()) {
::asis_output('\\url{....}')
knitrelse {
} ::include_graphics("fig/Around_02.gif")
knitr }
2.2.2 코드
def turn_right():
turn_left()
turn_left()
turn_left()
# 목표지점 표식
def drop_token():
"token")
put(
drop_token()
move()
while not object_here():
move()if wall_in_front() :
turn_left()if right_is_clear() :
turn_right() move()
2.3 Around 3
Around 2와 마찬가지로 토큰을 떨어뜨려 표식을 하고 자리를 한칸 이동한 후에 돌아다니는 작업을 수행한다.
- 문제 바로가기
- 리보그를 세상한바퀴 돌게 만드는 것이다.
- 로봇의 좌표 (x, y) 가 임의 랜덤으로 주어졌기 때문에 로봇의 최종위치를 한바퀴 돌아 반드시 (x, y) 랜덤 위치로 이동시킨다.
- 난이도: 4
- 함수:
move()
,turn_left()
,put()
- 테스트 함수:
front_is_clear()
,wall_in_front()
,right_is_clear()
,wall_on_right()
,object_here()
- 반복
while
,repeat
/for
루프와 제어if
문
- 함수:
2.3.1 실행결과
if (knitr:::is_latex_output()) {
::asis_output('\\url{....}')
knitrelse {
} ::include_graphics("fig/Around_03.gif")
knitr }
2.3.2 코드
def turn_right():
turn_left()
turn_left()
turn_left()
# 목표지점 표식
def drop_token():
"token")
put(
drop_token()
turn_left()
move()
while not object_here():
if right_is_clear():
turn_right()
move()elif front_is_clear():
move()else:
turn_left()
2.4 Around 4
본 문제를 해결하게 되면 앞선 Around 1,2,3번 문제도 작성한 프로그램으로 일반화시켜 해결할 수 있다.
- 문제 바로가기
- 리보그를 세상한바퀴 돌게 만드는 것이다.
- 로봇의 좌표 (x, y) 가 임의 랜덤으로 주어졌기 때문에 로봇의 최종위치를 한바퀴 돌아 반드시 (x, y) 랜덤 위치로 이동시킨다.
- 난이도: 5
- 함수:
move()
,turn_left()
,put()
- 테스트 함수:
front_is_clear()
,wall_in_front()
,right_is_clear()
,wall_on_right()
,object_here()
- 반복
while
,if/elif/else
문
- 함수:
2.4.1 실행결과
if (knitr:::is_latex_output()) {
::asis_output('\\url{....}')
knitrelse {
} ::include_graphics("fig/Around_04.gif")
knitr }
2.4.2 코드
def turn_right():
turn_left()
turn_left()
turn_left()
def turn_around():
turn_left()
turn_left()
# 목표지점 표식
def drop_token():
"token")
put(
drop_token()
turn_around()
move()
while not object_here():
if right_is_clear():
turn_right()
move()elif front_is_clear():
move()else:
turn_left()