본문 바로가기

#WarGame/Python Challenge

Python Challenge # LV.11 (even)

반응형

출처) http://www.pythonchallenge.com/index.php

 

The Python Challenge

What people have said about us: "These sorts of things are in my opinion the best way to learn a language.", brberg at Media Cloisters "It's the best web site of the year so far.", Andy Todd at halfcooked "Addictive way to learn the ins and outs of Python.

www.pythonchallenge.com

 

 

www.pythonchallenge.com/pc/return/5808.html

[그림1. LV11 문제]

 

  • 파이썬 챌린지 레벨11 문제!
  • 흐릿한 그림만 주어졌다. 바로 페이지 소스를 확인해보았다.

 

[그림2. page source]

 

  • 제목을 보니 "odd even"이라고 적혀있다.
  • 뭔가 홀수 짝수를 나누어 푸는 문제인 것 같다.
  • 다시 그림을 자세히 보니 두개의 그림이 합쳐져 있는 것 같기도 하다. 
  • 그리고 격자무늬도 보인다.
  • 이미지 픽셀을 홀수 짝수로 나누어 보면 답이 나올 것 같다.

 

[그림3. pixel값 출력]

 

  • 첫번째, 세번째, 다섯번째.... 픽셀만 보면 뭔가 숫자가 단순하고 바뀌는 형태가 적다.
  • 코드에서 보면 x와 y는 0부터 시작이므로 짝수번째 픽셀만 뽑는 것 같다.
  • 짝수픽셀만 모아서 출력해보았다.

 

from PIL import Image 

image = Image.open('cave.jpg') 
even=Image.new('RGB',(image.size[0],image.size[1]))

for x in range(image.size[0]):
    for y in range(image.size[1]):
        if (x+y)%2 == 0:
            even.putpixel((x,y),image.getpixel((x,y)))

even.show()
even.save('even.jpg')

 

  • 이미지 크기만큼 새로운 이미지를 만들고 너비와 높이가 짝수가 되는 (x,y)좌표에 있는 픽셀의 색상값을 putpixel() 함수로 변경 후 getpixel()함수로 픽셀의 색상 값을 반환한다.
  • 아래 그림처럼 주어진 이미지에 격자를 크게 넣고 보면 핑크색 좌표에 있는 부분만 출력하여 새 이미지에 넣는 것이다.

 

[그림4. 짝수 좌표]

 

  • 출력하여 이미지를 저장하면 아래와 같은 이미지가 출력된다.
  • 이미지가 흐려 포토샵으로 밝기를 조정했더니 선명해졌고, 오른쪽 상단에 evil이라고 적혀있는걸 볼 수 있다.

 

 

[그림5. 최종 결과]

 

 

 

반응형