if (knitr:::is_latex_output()) {
::asis_output('\\url{....}')
knitrelse {
} ::include_graphics("fig/Hurdle_01.gif")
knitr }
4 장애물 넘기
4.1 장애물 1
- 문제 바로가기
- 선행 지식
- 기본 함수 :
move()
,turn_left()
- 기본 함수 :
- 힌트:
jump()
함수를 작성해서 프로그램 코드를 단순화시킬 수 있다. - 난이도: 2
- 참고: 리보그 세상 - 추가된 추수 도전과제
4.1.1 실행결과
4.1.2 코드
turn_right():
def turn_left()
turn_left()
turn_left()
jump_over_hurdle():
def move()
turn_left()
move()
turn_right()
move()
turn_right()
move()
turn_left()
# jump_over_hurdle()
repeat 6:
jump_over_hurdle()
4.2 장애물 2
- 문제 바로가기
- 선행 지식
- 기본 함수 :
move()
,turn_left()
- 조건 / 테스트 :
at_goal()
혹은 부정(negation) - 반복:
while()
- 기본 함수 :
- 난이도: 3
4.2.1 실행결과
if (knitr:::is_latex_output()) {
::asis_output('\\url{....}')
knitrelse {
} ::include_graphics("fig/Hurdle_02.gif")
knitr }
4.2.2 코드
turn_right():
def turn_left()
turn_left()
turn_left()
jump_over_hurdle():
def move()
turn_left()
move()
turn_right()
move()
turn_right()
move()
turn_left()
# jump_over_hurdle()
while not at_goal():
jump_over_hurdle()
4.3 장애물 3
- 문제 바로가기
- 선행 지식
- 기본 함수 :
move()
,turn_left()
- 조건 / 테스트 :
at_goal()
,front_is_clear()
,wall_in_front()
, 혹은 부정(negation) - 반복과 제어:
while()
루프와if
문
- 기본 함수 :
- 난이도: 4
4.3.1 실행결과
if (knitr:::is_latex_output()) {
::asis_output('\\url{....}')
knitrelse {
} ::include_graphics("fig/Hurdle_03.gif")
knitr }
4.3.2 코드
turn_right():
def turn_left()
turn_left()
turn_left()
jump_over_hurdle():
def # move() <-- 일반화를 위해 제거
turn_left()
move()
turn_right()
move()
turn_right()
move()
turn_left()
# jump_over_hurdle()
while not at_goal():
if front_is_clear():
move()
wall_in_front():
elif jump_over_hurdle()
4.4 장애물 4
- 문제 바로가기
- 선행 지식
- 기본 함수 :
move()
,turn_left()
- 조건 / 테스트 :
at_goal()
,front_is_clear()
,wall_in_front()
, 혹은 부정(negation) - 반복과 제어:
while()
루프와if
문
- 기본 함수 :
- 난이도: 4.5
- 장애물 4 프로그램은 장애물 1, 2, 3 프로그램도 정상 동작시킬 수 있어야 한다.
4.4.1 실행결과
if (knitr:::is_latex_output()) {
::asis_output('\\url{....}')
knitrelse {
} ::include_graphics("fig/Hurdle_04.gif")
knitr }
4.4.2 코드
turn_right():
def turn_left()
turn_left()
turn_left()
jump_over_hurdles():
def # 장애물 위쪽 올라가기
if wall_in_front():
turn_left()
while not right_is_clear():
move()
# 장애물 위를 넘어가기
turn_right()
move()
turn_right()
# 장애물 내려오기
while front_is_clear():
move()
# 다시 경주자세로 자세 갖추기
turn_left()
while not at_goal():
if front_is_clear():
move()
wall_in_front():
elif jump_over_hurdles()