본문 바로가기

PYTHON/python_challenge

Python Challenge level 9

Python Challenge level 9

2016.12.28.

우선 문제의 주석부분을 보면 좌표들이 있다.

앞 문제에 벌의 윤곽을 나타낸 것처럼 firstsecond를 더해서 좌표로 선잇기를 한 다음 그림을 나타내어야 하는 거 같다. 문제 이름도 connect the dots인 걸 보면.

그래서 주석에 이전 문제의 풀이를 보기 위해선 주어진 사이트로 가라고 적혀있는 것 같다.

그래서 사이트로 가보면 링크와 연결된 문장이 뜬다. 

 여기서 Put off by the bee부분을 보면 윤곽 그리는 부분이 나온다.

우선 이걸 보아 8번 문제에 있던 coords에 숫자들은 차례대로 x,y,x,y,...을 나타낸 것이다. 그러니 이번에 주어진 first 또한 x,y,x,y,...순서일 것이고 second도 마찬가지일 것이다.

코드의 앞부분에는 import Image,ImageDrawfirst = [146,399,163,403,...], second = [156,141,165,135,...]이 있다.

그리고 0,0으로 초기값이 설정된 dots란 변수에 firstsecond 모두 x,y,x,y...이므로 실제 좌표의 개수는 각 숫자 개수의 나누기 2만큼이므로 범위를 len(coords)/2로 두어 차례대로 dots[(x,y)]로 정리

first의 숫자들을 넣어 나온 좌표들은 firstdots, second의 숫자들을 넣어 나온 좌표들은 seconddots

여기서 firstdots[0][(146,399)]가 되고 firsrtdots[1][(163,403)]이 된다.

이렇게 firstdots[0][1]을 흰색으로 이어준다. seconddots도 마찬가지

그리고 실행을 했는데 오류가 떴다.

뭐가 범위에서 벗어난 건지 계속 생각해보니 [0][1]을 잇고 그다음에는 [1][2]를 잇고 이런 식이기 때문에 여기서 for의 범위를 firstdots의 개수만큼 해주는 게 아니라 1을 뺀 수만큼 돌도록 해야 한다. 즉 다음으로 넘어갈 때 이전 과정에서 배열 하나를 중복으로 같이 사용해서 선을 잇기 때문에 1을 빼 줘야한다.

근데 사실 이외에도 코드에 오타가 있어 몇 번 에러가 더 나왔다. 그래서 코드를 아래와 같이 수정한 후 실행시켰다.

실행결과 폴더 내 파일들을 확인했을 때 level9.jpg파일이 저장된 걸 확인할 수 있다.

사진을 확인해보았을 때

소가 있다.

그래서 cow라고 쳤는데

, 수컷이였구나 따라서 답은 bull




'PYTHON > python_challenge' 카테고리의 다른 글

Python Challenge level 8  (0) 2016.12.26
Python Challenge level 7  (0) 2016.12.23
Python Challenge level 6  (0) 2016.12.23
Python Challenge level 5  (0) 2016.12.22
Python Challenge level 4  (0) 2016.12.22