6  비바람 창문 닫기

6.1 창문 닫기 1

6.1.1 실행결과

if (knitr:::is_latex_output()) {
  knitr::asis_output('\\url{....}')
} else {
  knitr::include_graphics("fig/Rain_01.gif")
}

6.1.2 코드

def turn_around():
    turn_left()    
    turn_left()

def close_window():
    repeat 6:
        move()
    build_wall()    

def go_to_home():
    turn_around()    
    repeat 5:
        move()

close_window()        
go_to_home()

6.2 창문 닫기 2

  • 문제 바로가기
  • 선행 지식
    • 기본 함수 : move(), turn_left(), build_wall()
    • 테스트 조건: right_is_clear(), wall_on_right(), at_goal()
    • 반복 및 제어: while 루프, if
  • 난이도: 5
  • 참고: 러플 - 비가 와요

6.2.1 실행결과

if (knitr:::is_latex_output()) {
  knitr::asis_output('\\url{....}')
} else {
  knitr::include_graphics("fig/Rain_02.gif")
}

6.2.2 코드

def turn_right():
    turn_left()
    turn_left()
    turn_left()

    
def move_to_goal():
    move()
    turn_right()

move_to_goal()
move() 

while not at_goal():
    if front_is_clear():
        move()
    if wall_in_front():
        turn_left()
    if right_is_clear():
        turn_right()
        build_wall()
        turn_left()

6.3 창문 닫기 3

  • 문제 바로가기
  • 선행 지식
    • 기본 함수 : move(), turn_left(), build_wall()
    • 테스트 조건: right_is_clear(), wall_on_right(), at_goal()
    • 반복 및 제어: while 루프, if
  • 힌트: 우회전할지 창문을 닫을지 리보그를 한번더 이동시키면 2가지 경우가 존재한다.
  • 난이도: 8
  • 참고: 러플 - 비가 와요

6.3.1 실행결과

if (knitr:::is_latex_output()) {
  knitr::asis_output('\\url{....}')
} else {
  knitr::include_graphics("fig/Rain_03.gif")
}

6.3.2 코드

def turn_right():
    turn_left()
    turn_left()
    turn_left()
    
def move_to_goal():
    repeat 3:
        move()
    turn_right()

move_to_goal()
move() 

def go_back():
    turn_left()
    turn_left()
    move()
    turn_left()
    turn_left()
    
def close_window():
    turn_right()
    build_wall()
    turn_left()

while not at_goal():
    if wall_in_front():
        turn_left()
    if front_is_clear() and right_is_clear():    
        move()
        if right_is_clear():
            go_back()
            turn_right()
        elif not right_is_clear():    
            go_back()            
            close_window()
    move()