본격적으로 코딩을 접하기 전 스탠퍼드에서 만든 카렐 게임이라는 게 있다길래 한번 해봤는데
처음엔 간단한 것들만 나와서 쭉쭉 진행해가다 8-5에서 막혔다.
한 번도 겹치지 않고 가는 건 줄 알고 코드를 쓰고 지우고 1시간 정도 반복하다 검색해보니 main이 실제 코드 동작이고 function이 코드 조건을 설정해 길이를 단축할 수 있다는 것을 알게 됐다.
조건을 설정하고 repeat로 반복해보니 두 번째 조건(8x8)은 달성했으나 첫 조건(5x5)엔 맞지 않아서
짝수, 홀수 모두 적용되려면 repeat 말고 while을 써서 해야 하나 고민하다 또다시 검색해보니 leftIsClear를 넣은 코드 발견했고,
'가장 윗 줄에 가면 moveup 후 카렐 기준으로 왼쪽이 막혔으니 leftIsClear의 조건이 맞지 않아 while문이 종료되는구나'를 깨닫고 마지막에 putBeeperLine를 넣어 마무리했다.
계속 고민하다 막혀서 검색의 도움을 받긴 했지만 집중해서 고민도 하고 더 깔끔한 코드를 짜려고 애쓰는 과정들이 내가 평소에 즐겨하는 계획, 검토 과정과 비슷하게 느껴져서 꽤 재미있었다.
근데 화면을 너무 뚫어져라 보고 있어서 눈이 건조해졌다.
<사용한 코드>
function main() {
while(leftIsClear()) {
putBeeperLine();
reset();
moveup();
}
putBeeperLine();
}
function putBeeperLine(){
putBeeper();
while(frontIsClear()) {
move();
putBeeper();
}
}
function reset(){
turnAround();
while(frontIsClear()) {
move();
}
}
function moveup(){
turnRight();
move();
turnRight();
}
댓글