5  토큰

5.1 토큰 이동 1

5.1.1 실행결과

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

5.1.2 코드

move()
take()
move()
put()
move()

5.2 토큰 이동 2

  • 문제 바로가기
  • 선행 지식
    • 기본 함수 : move(), put(), take()
  • 난이도: 1
  • move_until_done() 함수를 제작해서 if문을 사용하게 되면 조금더 깔끔하게 목적을 달성할 수 있다.

5.2.1 실행결과

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

5.2.2 코드

def move_until_done():
    move()
    if object_here():
        take()
        move()
        put()
        
repeat 5:
    move_until_done()

5.3 토큰 이동 3

  • 문제 바로가기
  • 선행 지식
    • 기본 함수 : move(), put(), take()
    • 테스트 조건: object_here(), at_goal()
    • 반복과 제어조건: while 루프와 부정(negation)
  • 난이도: 3

5.3.1 실행결과

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

5.3.2 코드

def move_until_done():
    move()
    if object_here():
        take()
        move()
        put()
        
while not at_goal():
    move_until_done()

5.4 토큰 이동 4

  • 문제 바로가기
  • 선행 지식
    • 기본 함수 : move(), put(), take()
    • 테스트 조건: object_here(), carries_object(), at_goal()
    • 반복과 제어조건: while 루프, if 문과 부정(negation)
  • 난이도: 5

5.4.1 실행결과

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

5.4.2 코드

def collect_all():
    if object_here():
        take()
    move()

def put_down_all_and_move():
    while carries_object():
        put()
    move()
    
while not at_goal():
    if object_here():
        collect_all()
    elif carries_object():
        put_down_all_and_move()  
    else:
        move()

5.5 토큰 이동 5

토큰 이동 5를 일반화하여 토큰이 있는 곳과 그렇지 않는 곳도 리보그가 이동하여 목적을 달성할 수 있도록 한다.

  • 문제 바로가기
  • 선행 지식
    • 기본 함수 : move(), put(), take()
    • 테스트 조건: object_here(), carries_object(), at_goal()
    • 반복과 제어조건: while 루프, if 문과 부정(negation)
  • 난이도: 5

5.5.1 실행결과

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

5.5.2 코드

def collect_all():
    if object_here():
        take()
    move()

def put_down_all_and_move():
    while carries_object():
        put()
    move()
    
while not at_goal():
    if object_here():
        collect_all()
    elif carries_object():
        put_down_all_and_move()  
    else:
        move()