Lecture/컴퓨터프로그래밍및실습/DoubleBeepers

Retired DISLab
이동: 둘러보기, 찾기

문제) 첫번째 그림에서와 같이 비퍼가 쌓여있을 때 그 수를 두 배 증가시키는 방법은?

DoubleBeepers1.jpg    DoubleBeepers2.jpg

import stanford.karel.SuperKarel;
 
 
public class DoubleBeepers extends SuperKarel {
 
    public void run() {
        move();
        DoubleBeepersInPile();
        moveBackward();
    }
 
    private void DoubleBeepersInPile() {
        while (beepersPresent()) {
            pickBeeper();
            putTwoBeepersNextDoor();
        }
        movePileNextDoorBack();
    }
 
    private void putTwoBeepersNextDoor() {
        move();
        putBeeper();
        putBeeper();
        moveBackward();
    }
 
    private void movePileNextDoorBack() {
        move();
        while (beepersPresent()) {
            moveOneBeeperBack();
        }
        moveBackward();
    }
 
    private void moveOneBeeperBack() {
        pickBeeper();
        moveBackward();
        putBeeper();
        move();
    }
 
    private void moveBackward() {
        turnAround();
        move();
        turnAround();
    }
 
    public static void main(String[] args) {
        String[] newArgs = new String[args.length + 1];
        System.arraycopy(args, 0, newArgs, 0, args.length);
        newArgs[args.length] = "code=" + new SecurityManager(){
            public String className() {
                return this.getClassContext()[1].getCanonicalName();
            }
        }.className();
        SuperKarel.main(newArgs);
    }
}

개인 도구
이름공간
변수
행위
둘러보기
구성원
연구
연구실
기타
도구모음
인쇄/내보내기