2011. 6. 22. 15:24

[ Problem ] - http://www.pythonchallenge.com/pc/def/oxygen.html

가운데 회색 바가 수상해 보인다. 해당 격자를 7픽셀 단위로 RGB값을 뽑아서 ASCII문자로 변환 해야 하는데

파이썬에는 내장된 이미지 라이브러리가 없음으로 Python Imaging Library (PIL)를 사전에 설치 하자.

   

♧ 처리 순서는 아래와 같다.

import Image, urllib, StringIO, re
# coding=utf8

# ① 이미지 파일 오픈.
u_img = urllib.urlopen("http://www.pythonchallenge.com/pc/def/oxygen.png").read()
img = Image.open(StringIO.StringIO(u_img))

# ② 이미지 길이와 회색바 위치 구함.
middle =  (img.size[1]/2)
width = img.size[0]

# ③ 7픽셀 단위로 RGB값 구함
pixels = [img.getpixel((x, middle)) for x in range(0, width, 7)]

# ④ pixels값의 R,G,B가 동일한 값만을 뽑아낸다.
ords = [r for r,g,b,a in pixels if r == g == b]

# ⑤ 뽑아낸 RGB값은 ASCII값으로 문자로 변환 출력.
result = ''.join(map(chr, ords))
print result

# ⑥ 출력된 결과의 또다른 ASCII값을 찾아 int형 변환->chr변환->출력.
print ''.join(map(chr, map(int, re.findall("\d+", result))))

[ 출력 결과 ]

smart guy, you made it. the next level is [105, 110, 116, 101, 103, 114, 105, 116, 121]

integrity

(※ 사용한 PIL의 모듈은 레퍼런스 문서를 참조)

   

[ Solution ] - http://www.pythonchallenge.com/pcc/def/integrity.html

(※ 문제에 대한 다양한 해결법은 링크 참조.)

Posted by devanix