일요일에는 Maze 부분 못 풀었는데 정답 보기는 싫고 어떻게든 알아서 풀어보고자 했고,
퇴근하고 와서 다시 Maze 부분 붙들고 풀다가 풀었습니다.
뭐 만들 때 안 풀리면 하루 잠을 자고 다음 날 풀거나 산책하고 와서 풀거나, 커피 마시고 돌아와서 풀고, 수학 문제처럼 머리 속에 두고두고 있다가 어떻게 하다보면 풀리는 것 같습니다.
python 함수 move() 를 넣으면 움직이고, turn_left()하면 왼쪽으로 돕니다.
front_is_clear(), wall_in_front(), right_is_clear(), wall_on_right(), at_goal() 이 부분은 True / False 로 반환 받을 수 있습니다받는 부분입니다.
while로 루프 써서,
저 미로를 로봇이 도착지점까지 올 수 있도록 코드를 짜는 것이 요 미로 편이였습니다.
미로 풀기는 하단 링크에서 할 수 있습니다.
주어지는 미로 속에서 로봇이 잘 헤쳐나갈 수 있도록 많은 경우의 수를 고려해서 코드를 짜는 걸 알고리즘이라고 합니다.
로봇이 보는 곳은 동서남북 중 랜덤으로 방향이 정해집니다.
풀었던 코드:
이렇게 저렇게 풀어보다가 풀었던 코드는 이 방법이었습니다.
def turn_north():
while is_facing_north() != True:
turn_left()
def turn_west():
turn_north()
turn_left()
turn_left()
turn_left()
turn_west()
while at_goal() != True:
if front_is_clear() and wall_on_right():
move()
if wall_in_front() and right_is_clear():
turn_left()
turn_left()
turn_left()
move()
if wall_in_front() and wall_on_right():
turn_left()
if front_is_clear() and right_is_clear():
turn_left()
turn_left()
turn_left()
move()
elif front_is_clear():
move()
이 중에서 약간 핵심이라고 생각하는 조건이 front_is_clear() and right_is_clear()일 때 어느 방향으로 움직일 지 설정해 주는 거였습니다. 미로를 푸는 방법은 벽을 따라 오른쪽으로 쭉 돌다보면 나가는 곳이 보일테니 오른쪽으로 가도록 설정을 하고, 하지만 벽이 막혀 있다면 왼쪽으로 틀어주는 방법. 으로.
이렇게 저렇게 실험하 듯 짜다보니 코드가 정리되지 않았는데,
저 turn_left() 3번 쓰는 걸 함수로 묶는
def turn_right():
turn_left()
turn_left()
turn_left()
대략 어떻게 움직일지 동작하는 걸 구현했지만 좀 더 깔끔한 코드 리팩토링이 필요할 것 같네요.
깊이 우선 탐색, 넓이 우선 탐색 이런 걸 뭔가 몸으로 체득하듯이 코드를 짜는 것 같아서 저 사이트 정말 유용하다고 생각합니다.
문제는 답지 없이 꼭 풀고. 어떻게든 혼자 힘으로 풀어내는 걸 추천합니다 🤖🤖🤖🤖🤖
굳었던 머리가 말랑해지는?? 좋아지는 느낌도 듭니다.
치매 예방! 두뇌 회전!
(무슨 광고 같아ㅋㅋㅋㅋ)
답글 남기기