2010.05.20 10:56 WarGame


간만에  Python Challenge 포스팅을 하네요

문제 풀이 바로 들어갑니다




소스를 보면..







Title 은 Walk around 고

왠 빵 사진이 있고

그 아래 핵심 문제로 보이는 이상한 바코드 같은 사진이 있습니다

이름은 wire.png. Size 는 100* 100 이군요

위에 주어진 힌트 Remember 를 참조해볼때

저 wire.png 를 수정하는게 아마 이 문제에서 원하는 거겠죠

처음엔 다소 난해할 수 있는데

위의 빵 사진을 주의깊게 보시면 곧 이해하실 수 있을 겁니다

빵 사진이 나선형을 그리고 있는것과 remember  부분을 캐치 하셨다면

문제 풀이도 훨씬 쉬어집니다

wire.png 를 받아보면 사실 실제 그림파일은 10000*1 이라는 것을 알게 됩니다

이 파일을 나선형으로 고치면 답이 나오지 않을까요?

remember 에서의 숫자는 이동하는 칸 수라고 보시면 이해하시기 수월하실겁니다

바깥에서부터 안쪽으로 계속 나선을 그리면서 들어가게 되는 형식이죠

그러니까

100, 99, 99 , 98 , 98 , 97 , 97 이런식으로 2회당 1번 1씩 줄어들도록 짜야 합니다

물론 방향은 1회당 1번씩 바꾸구요

이를 바탕으로 소스 코드를 짜면...



Posted by LinkC

2010.04.07 19:24 WarGame




주석도 없고 사진 설명도 없습니다

제목은 odd even

뭔가 감이 오는데요

사진의 Pixel 을 홀, 짝으로 나누어보면

답이 나올 것 같은 느낌이 마구마구 드는군요

가로 , 세로가 모두 홀, 짝 2개씩으로 나눠지니까

총 4개의 그림이 생기겠군요


답을 확인할 수 있습니다

좀 신기하네요 :D

아무튼 다른 그림도 확인해봤는데

x,y가 홀이나 , 짝으로 같을 경우엔 정답 화면이

x,y가 서로 다른경우엔 다음과 같은 사진이 뜨는군요




2로 나눠준것 떄문에 그런가 싶어서 다시 해봤는데도 결과는 동일합니다

얻어오는 픽셀 정보가 다른데도 픽셀 수가 많다보니 같게 보이는 거겠죠

아무튼 전 문제보단 훨씬 간결하군요

어때요 참 쉽죠?

Posted by LinkC

2010.03.31 20:26 WarGame

level 9 문제입니다



페이지의 Title 은 Connect the dots입니다

점들을 연결하면 특정 문자나 그림 같은게 나오는 형식이겠죠

소스를 보면 힌트가 있습니다




first , second 를 주는데 표기 방식은 저번 문제의 벌 링크와 비슷해서 눈치채기 쉬웠습니다

first 와 second 개수가 다르므로 x,y 좌표가 떨어져있는거 같진 않고

아마 first 와 second를 혼합하면 답을 알 수 있을 형식일겁니다

먼저 fisrt와 second 모두  구조는  [ 1st Dot.x , 1st Dot y , 2nd Dot x, 2nd Dot y, ...... ]

이렇게 이루어 지겠죠

이제 각 점을 이용해 그리는 함수만 찾으면 됩니다

저번에 받은 PIL 를 뒤적거려보면

Draw Line 기능을 가진 함수가 있습니다

좌표를 리스트로 받으니 1번째부터 4번째까지 넘겨주면 되겠군요

이를 반복문으로 돌리고

총 정리를 해보면

1. 빈 이미지 파일 생성 [ RGB  모드 , 500 * 500 이면 적당 ]

2. First , Second 리스트를 이용해 Draw Line 호출

3. 그린 파일 저장

이를 소스로 나타내면




다른 풀이를 봤는데

map 과 lamda 를 이용해서 풀었더군요

map 은 첫번째 함수를  두번째 인자에 일괄 적용하는 함수이고

lambda는 일시적인 함수 생성 이라고 보시면 되는데

이를 이용해서 first 와 second를 각각 2개의 쌍을 짓는 리스트로 만들어냅니다

그리고 이 작은 리스트는 각각 x와 y를 나타내고 이를 그리면 되는거죠





다음은 첫번째와 두번째 점을 찍었을때 나타나는 그림입니다

문제 만드신분 참 수고하셨다는 생각이 ..


Posted by LinkC

2010.03.30 10:14 WarGame


it's in the air. look at the letters.


이 말만 있습니다 -.-

소스보기해도 아무것도 안보이고

쿠키를 보니 wikiticket 이던가 이상한 쿠키가 잡혔는데

Firebug로 보니 또 안잡히더군요

아무튼 그걸로 삽질좀 하다보니 이게 아니더라 싶었습니다 -.-

공기에 있는것.

질소? 산소?

nitrogen, oxygen

산소가 정답이군요

이제서야 문제가 나옵니다만...



....

갈수록 문제가 꼬아져나오는군요

좀전의 문제 힌트  look at the letters...

아무래도 여기에 정답이 숨어져있는 것 같습니다

HexEditor 로 열어서 pass, hint, next 찾아봤습니다만 아무것도 건질 수 없었습니다

흠..

그 회색바에 글자가 있는거 같긴 한데

이미지뷰어로 보다 보니 RGB 값이 하단에 나옵니다

보니까 낯익은 범위의 숫자만 보이는군요

아무래도 ASCII 값인거 같습니다

초반 몇개만 집어서 확인해볼까요?

115.. 109.. 97... 114.. 116

smart

아무래도 제대로 짚은거 같군요

남은걸 일일히 손으로 하는 방법도 있겠습니다만

Python을 이용해 푸는게 깔끔하겠죠

먼저 , image에 관련된 모듈을 찾기 위해서 구글링을 해봤는데

Python Image Library [ PIL ] 가 있더군요

각종 image에 관한 함수들을 제공해줍니다

http://www.pythonware.com/products/pil/

설치를 하고 우리의 목적에 맞는 함수들을 찾아야겠죠

우리가 원하는 건

1. Image 파일 오픈

2. Image 파일 내의 특정 부분 RGB 값 얻어오기

3. 얻어온 RGB값의 chr 형 변화


이정도 입니다

PIL에서 해야 하는건 위 2개 정도 되겠죠

open 함수를 이용해서 파일을 열고

파일 내의 픽셀 값을 읽어오되 세로가 45 px 인 부분을 쭉 읽어들이면 될 것 같습니다

이 px 값은 그림판에서 간단히 확인하실 수 있습니다

또는 image 모듈의 size 를 이용하면 너비, 높이를 쉽게 알 수 있습니다

먼저 간단히 소스를 짜서 결과 값을 보도록 하죠




RGB와 255 값을 리턴해주고 모두 7번씩 반복되는군요

이걸 다시 문자로 바꾸면 되겠죠








저걸 다시 바꿔주시면 답이 나옵니다 :D

이걸 또 소스로 자동화 시켜볼까요

좀 복잡합니다

105,110 이부분은 일단 문자열로 인식되므로 정규표현식을 이용해서

추출한 다음에 int 형으로 형변환을 해주고 [ ASCII 로 변환 ] , 이를 다시 chr 형으로 변환 시켜서

join으로 합쳐야 합니다

Posted by LinkC
이전버튼 1 이전버튼

블로그 이미지
LinkC

태그목록

Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

공지사항

Yesterday73
Today48
Total320,221

달력

 « |  » 2018.10
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

최근에 받은 트랙백

글 보관함


. .