Python/Python Challenge

[Python Challenge 14] 빙글빙글

Python Challenge 14의 Url은 다음과 같다

Python challenge 14 : http://www.pythonchallenge.com/pc/return/italy.html

 


구성

페이지에는 사진이 2개 있다. 위에 보이는 나선빵은 italy라는 이름을 가지고 있고, 아래 바코드 같은 사진은 wire.png라는 이름을 가지고 있다. 별다른 상호작용을 보이지 않으니 주석을 보자

가운데 주석으로 100*100 = (100+99+99+98) 이라는 글이 쓰여있다. 


해결 아이디어

가운데 식으로 부터 다음을 생각할 수 있다.

즉 빙글빙글 돌면서 그림을 채우는 것이다. 채울 대상은 wire.png이다. 다운로드하여보면 10000*1의 크기로 된 사진이다.

### 14.py

from PIL import Image

if __name__ == "__main__" :

    with Image.open("wire.png") as img :
        tar = Image.new('RGB',(101,101))
        length = img.width

        dx = [1,0,-1,0]
        dy = [0,1,0,-1]
        direction = 0
        x = 100
        y = 99
        cur_x = 0
        cur_y = 0
        index = 0

        while(x+y>0) :
            if(direction%2==0) :
                for i in range(x) :
                    tar.putpixel((cur_x,cur_y),img.getpixel((index,0)))
                    cur_x += dx[direction]
                    index += 1
                x -= 1
            else :
                for i in range(y) :
                    tar.putpixel((cur_x,cur_y),img.getpixel((index,0)))
                    cur_y += dy[direction]
                    index += 1
                y -= 1
            direction = (direction + 1)%4

        tar.save("new_wire.png")

출력된 사진 new_wire.png는 다음과 같다.

 

허어... 커여어.... 찾았다.

Answer Url : http://www.pythonchallenge.com/pc/return/cat.html