Python Challenge 28의 Url은 다음과 같다
Python challenge 28 : http://www.pythonchallenge.com/pc/ring/bell.html
구성
들어가면 폭포사진을 볼 수 있다. 아래 번역은 다음과 같다.
"RING-RING-RING 크게 말해보세요"
G발음에 조금 강세를 두고 반복하면 "GREEN"이다. green.html로 이동하면 다음과 같은 페이지를 볼 수 있다.
어허; 다른 태그도 안보인다. 주석도 유의미하지 않고, 무슨 html이 헤더바디 다무시하고 저거 한줄 써있다.
해결 아이디어
일단 사진이 RGB픽셀이니, G만 다 빼보자
### 28_1.py from PIL import Image if __name__ == "__main__" : with Image.open("bell.png") as img : green = list(img.split()[1].getdata())
green을 조금만 볼까?
>>> green[:100] [55, 97, 73, 115, 120, 78, 60, 102, 76, 118, 114, 72, 59, 101, 119, 77, 92, 50, 30, 72, 53, 95, 133, 91, 93, 51, 110, 68, 112, 70, 66, 108, 140, 182, 163, 121, 66, 24, 59, 17, 25, 67, 62, 20, 26, 68, 67, 25, 85, 43, 60, 18, 53, 11, 3, 45, 3, 45, 0, 42, 5, 47, 9, 51, 22, 64, 37, 79, 35, 77, 66, 24, 25, 67, 36, 78, 84, 42, 70, 28, 69, 111, 72, 30, 62, 20, 27, 69, 34, 76, 27, 69, 181, 223, 194, 152, 108, 66, 73, 31]
겉보기에는 그냥 배열처럼 보일 수도 있지만, 홀짝을 짝지어서 보면, 42차이나 나거낭 -42의 차이를 볼 수 있다. 절댓값이 42가 아닌 배열을 빼보면 유의미한 결과를 알 수 있을 것이다.
### 28_2.py from PIL import Image if __name__ == "__main__" : with Image.open("bell.png") as img : green = list(img.split()[1].getdata()) first = green[0::2] second = green[1::2] ans_list = list() for f,s in zip(first,second) : if(abs(f-s) != 42) : val = abs(f-s) ans_list.append(chr(val)) print(''.join(ans_list))
출력결과는 다음과 같다.
whodunnit().split()[0] ?
whodunnit은 영미권의 수수께끼종류이다.(모듈이 있기는 한데, 우리 문제와 관련없다.) 범죄에서 가해자를 추적하는 추리 수수께끼인데, 여기서 가해자는 누가되는 걸까? 누가 우리를 이렇게 힘들게 하는 걸까??
안녕하세요 guido씨
Answer Url : http://www.pythonchallenge.com/pc/ring/guido.html
'Python > Python Challenge' 카테고리의 다른 글
[Python Challenge 30] 통신이상 오류있는가? (18) | 2021.07.06 |
---|---|
[Python Challenge 29] Shut up Mr.Drake (6) | 2021.07.06 |
[Python Challenge 27] 지퍼올리세요 (2) | 2021.06.26 |
[Python Challenge 26] 과거의 행실을 돌아보세요 (0) | 2021.06.06 |
[Python Challenge 25] 퍼즐맞추기 (0) | 2021.06.06 |