Python/Python Challenge

[Python Challenge 5] 삐끌

Python Challenge 5의 url은 다음과 같다.

Python challenge 5 : http://www.pythonchallenge.com/pc/def/peak.html

 

peak hell

 

www.pythonchallenge.com


구성

무슨 사진이 떡하니 있다. 이번엔 특별한 상호작용도 없는 거 같다. 사진을 다운로드하여보면 사진 이름이 peakhell.jpg 이라는 점이 특이한 상황인 거 같다. 번역은 다음과 같다.

 

발음해봐

 

ㅋㅋㅋㅋ발음했다 포스팅 재목에


해결 아이디어

peakhell을 발음하면 피-켈이다. pickle이라는 모듈을 모듈 소개시간에 소개한 적이 있는데, 모르는 사람은 읽고 오기를 추천한다.

2021.04.11 - [분류 전체보기] - [Python] - 모듈탐구 pickle - 자료구조의 저장과 불러오기

 

[Python] - 모듈탐구 pickle - 자료구조의 저장과 불러오기

컴퓨터 세계에서 자주 사용되는 json이라는 표준이다. json은 Python을 자주 사용하는 사람이라면 아는 dictionary이라는 자료구조와 유사하게 생겼는데, 광범위하게 데이터 오브젝트를 인간이 읽을

tutoreducto.tistory.com

pickle은 파이선전용으로 자료를 직렬화 하기 위해 만들어진 모듈이다. 소스파일에 처음 보는 html 태그가 있다. 바로 <peakhell> 이라는 태그인데, src프로퍼티에 banner.p가 있다. 아마 이 banner.p에 우리 문제의 해결 key가 들어 있을 듯하다 다운로드하여 코딩 시간이다.

import pickle

if __name__=="__main__" :
  with open("banner.p","rb") as f :
    ans = pickle.load(f)

  print(ans)

출력 결과는 다음과 같다.

[[(' ', 95)], [(' ', 14), ('#', 5), (' ', 70), ('#', 5), (' ', 1)], 
[(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 15), 
('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 15), ('#', 4), 
(' ', 71), ('#', 4), (' ', 1)], [(' ', 15), ('#', 4), (' ', 71), 
('#', 4), (' ', 1)], [(' ', 15), ('#', 4), (' ', 71), ('#', 4), 
(' ', 1)], [(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)],
[(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)], [(' ', 6), 
('#', 3), (' ', 6), ('#', 4), (' ', 3), ('#', 3), (' ', 9), ('#', 3), 
(' ', 7), ('#', 5), (' ', 3), ('#', 3), (' ', 4), ('#', 5), (' ', 3), 
('#', 3), (' ', 10), ('#', 3), (' ', 7), ('#', 4), (' ', 1)], [(' ', 3), 
('#', 3), (' ', 3), ('#', 2), (' ', 4), ('#', 4), (' ', 1), ('#', 7),
(' ', 5), ('#', 2), (' ', 2), ('#', 3), (' ', 6), ('#', 4), (' ', 1),
('#', 7), (' ', 3), ('#', 4), (' ', 1), ('#', 7), (' ', 5), ('#', 3), 
(' ', 2), ('#', 3), (' ', 5), ('#', 4), (' ', 1)], [(' ', 2), ('#', 3), 
(' ', 5), ('#', 3), (' ', 2), ('#', 5), (' ', 4), ('#', 4), (' ', 3),
('#', 3), (' ', 3), ('#', 4), (' ', 4), ('#', 5), (' ', 4), ('#', 4),
(' ', 2), ('#', 5), (' ', 4), ('#', 4), (' ', 3), ('#', 3), (' ', 5),
('#', 3), (' ', 3), ('#', 4), (' ', 1)], [(' ', 1), ('#', 3), (' ', 11),
('#', 4), (' ', 5), ('#', 4), (' ', 3), ('#', 3), (' ', 4), ('#', 3), 
(' ', 4), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 4), (' ', 5),
('#', 4), (' ', 2), ('#', 3), (' ', 6), ('#', 4), (' ', 2), ('#', 4),
(' ', 1)], [(' ', 1), ('#', 3), (' ', 11), ('#', 4), (' ', 5), ('#', 4),
(' ', 10), ('#', 3), (' ', 4), ('#', 4), (' ', 5), ('#', 4), (' ', 2), 
('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 3), (' ', 7), ('#', 3), 
(' ', 2), ('#', 4), (' ', 1)], [('#', 4), (' ', 11), ('#', 4), (' ', 5),
('#', 4), (' ', 5), ('#', 2), (' ', 3), ('#', 3), (' ', 4), ('#', 4), 
(' ', 5), ('#', 4), (' ', 2), ('#', 4), (' ', 5), ('#', 4), (' ', 1), 
('#', 4), (' ', 7), ('#', 3), (' ', 2), ('#', 4), (' ', 1)], [('#', 4),
(' ', 11), ('#', 4), (' ', 5), ('#', 4), (' ', 3), ('#', 10), (' ', 4),
('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 4), (' ', 5), ('#', 4), 
(' ', 1), ('#', 14), (' ', 2), ('#', 4), (' ', 1)], [('#', 4), (' ', 11),
('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 3), (' ', 4), ('#', 4),
(' ', 4), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 4), (' ', 5), 
('#', 4), (' ', 1), ('#', 4), (' ', 12), ('#', 4), (' ', 1)], [('#', 4), 
(' ', 11), ('#', 4), (' ', 5), ('#', 4), (' ', 1), ('#', 4), (' ', 5),
('#', 3), (' ', 4), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 4),
(' ', 5), ('#', 4), (' ', 1), ('#', 4), (' ', 12), ('#', 4), (' ', 1)],
[(' ', 1), ('#', 3), (' ', 11), ('#', 4), (' ', 5), ('#', 4), (' ', 1), 
('#', 4), (' ', 5), ('#', 3), (' ', 4), ('#', 4), (' ', 5), ('#', 4), 
(' ', 2), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 3), (' ', 12), 
('#', 4), (' ', 1)], [(' ', 2), ('#', 3), (' ', 6), ('#', 2), (' ', 2), 
('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 3), (' ', 4), ('#', 4),
(' ', 4), ('#', 4), (' ', 5), ('#', 4), (' ', 2), ('#', 4), (' ', 5),
('#', 4), (' ', 3), ('#', 3), (' ', 6), ('#', 2), (' ', 3), ('#', 4), 
(' ', 1)], [(' ', 3), ('#', 3), (' ', 4), ('#', 2), (' ', 3), ('#', 4),
(' ', 5), ('#', 4), (' ', 3), ('#', 11), (' ', 3), ('#', 4), (' ', 5), 
('#', 4), (' ', 2), ('#', 4), (' ', 5), ('#', 4), (' ', 4), ('#', 3),
(' ', 4), ('#', 2), (' ', 4), ('#', 4), (' ', 1)], [(' ', 6), ('#', 3), 
(' ', 5), ('#', 6), (' ', 4), ('#', 5), (' ', 4), ('#', 2), (' ', 4),
('#', 4), (' ', 1), ('#', 6), (' ', 4), ('#', 11), (' ', 4), ('#', 5),
(' ', 6), ('#', 3), (' ', 6), ('#', 6)], [(' ', 95)]]

SHIT! 진정하자. 파일 이름이 banner임을 기억하자. " "와 "#"로 이루어진 것을 보면 이는 ASCII art일 가능성이 농후하다. 그도 그럴 것이 2차원 배열로 이루어진 이 자료구조 원소들의 1번째 인덱스의 합은 전부 95로 동일하다. 같은 길이의 행이라는 것을 암시하는 것이다. 코딩 타임이다.

import pickle

if __name__=="__main__" :
  with open("banner.p","rb") as f :
    ans = pickle.load(f)

  for i in range(len(ans)) :
    for j in range(len(ans[i])) :
      print(ans[i][j][0]*ans[i][j][1],end="")
    print("")

출력 결과는 다음과 같다. 잘려서 사진으로 올린다.

찾았다.

Answer Url : http://www.pythonchallenge.com/pc/def/channel.html