Search Results for 'python/python challenge'

3 POSTS

  1. 2012.05.25 python challenge 2
  2. 2012.05.22 python challenge 0
  3. 2012.05.22 python challenge 1

python challenge 2

Posted 2012. 5. 25. 23:54

2번째 문제다.

 

 

 

 

recognize the characters. maybe they are in the book,
but MAYBE they are in the page source.

 

영어를 해석해보면 문자를 찾으라. 그리고 아마도 그 문자들은 책에 있을 것이다. 하지만 그들은 페이지 소스에 있을 것이다....

 

아 뭔 개소리;; 결국 말장난. 걍 페이지 소스보기에 있다 하지;;

 

 

 

 

쨋든 페이지 소스를 보면 특수문자 작렬이다...정말 보기 싫어지는 문자들이다..

 

먼저 저 문장들을 가져온다. 직접 긁어도 되지만 파이썬으로 한번 가져와보자.

 

import urllib
web = urllib.urlopen("http://www.pythonchallenge.com/pc/def/ocr.html")

 

이 코드를 보면 import urllib 를 해준다. urllib 는 웹에 관해 쓸모있는 몇가지 기능들을 제공해준다.

 

한가지 예시만 보면 base64 인코딩과 디코딩 기능을 지원해주는 것도 있다.

 

base = urllib.base64

print base.b64decode(base.b64encode("aaaaaaaaa"))
aaaaaaaaa

 


urllib.urlopen 은 웹페이지를 가져올수 있다.

web.read() 를 해보자

 

 

 

 

웹 페이지를 긁어왔다.

 

이것 말고도 나머지 기능들이 있으나 직접 알아보자;; 다음에 시간나면 알아 볼 예정이다,,

 

쨋든 뒤에 주석부분을 가져와야 한다. index 함수를 쓸건데 코드는 맨 뒤쪽에 위치해 있으므로 문자열의 오른쪽 부터 찾이 위하여 rindex 를 쓸 것이다. 

 

import urllib
import string
web = urllib.urlopen('http://www.pythonchallenge.com/pc/def/ocr.html')
S = web.read()

data = S[S.rindex('<!--'):S.rindex('-->')]
print data

 

이렇게 해보면 <!-- 부터 --> 까지 걸러준다.

 

그리고 for 문으로 알파벳을 찾는다.

 

for el in data:
    if el.isalpha():

 L+=el

 

print L

 

난 이렇게 무식하게? 한거같은데 이 글을 보는 사람은 한번 다른 방법도 연구해보고 댓글좀,,ㅋ

 

 

 

 

 

 

'python > python challenge' 카테고리의 다른 글

python challenge 0  (0) 2012.05.22
python challenge 1  (0) 2012.05.22

python challenge 0

Posted 2012. 5. 22. 16:20

파이썬을 배우고 과제가 나왔다.

파이썬 챌린지 1번을 풀어오랬다

python challenge 를 구글에 검색하면 맨 처음 나오는 사이트에 들어가서

Click here to get challenged

이 문장을 클릭해보자


 

Hint: try to change the URL address.


이런 이상한 사진과 함께 힌트가 나온다.
이것만 보고 답은,,,이미 알꺼같다.
c언어만 한 난 2를 38번 곱하고 싶다.ㅋ아님 math.h 에 있는 pow 도,,ㅋ

근데 파이썬은 훨씬 간단한 방법이 있다.

>>> 2**38
274877906944L

저기서 L 이 붙는 이유는 int 형을 넘어서 long 형 변수다.
근데 파이썬에서 long형은 단순히 long 이 아니라 무한이란다.....ㄷㄷ

파이썬에서는 거기다가 복소수도 된다는거,,,

 


다른 방법으로는

>>> pow(2,38)
274877906944L

>>> 1 << 38
274877906944L

위에껀 c언어에도 있으니 대충 알수 있을꺼 같다.
근데 맨 밑에꺼는 모르겠다..

실험을 해보면 아마도 1* 2^38 인거같다.

ex)
요건 3 * 2^3 승
>>> 3 << 3
24

요건 5 * 2^2 승
>>> 5 << 2
20

따라서 a << n 이건 a*2^n 으로 볼수 있겠다.. 신기하다.




그리고 나의 궁금증 a >> n 은 뭘까

>>> 1024 >> 1
512
>>> 1024 >> 2
256
>>> 96 >> 2
24

감이 왔다 ㅋ

이번에는 a / 2^n 이다 ㅋㅋ

 

'python > python challenge' 카테고리의 다른 글

python challenge 2  (0) 2012.05.25
python challenge 1  (0) 2012.05.22

python challenge 1

Posted 2012. 5. 22. 15:01

 

 


파이썬 챌린지 1을 풀었다..

푼지는 좀 됬는데 지금 올리는,,,

everybody thinks twice before solving this.

g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj. 

 

 

일단 문제는 이렇다..

다행인지 불행인지 모르겠지만 난 처음에 시저함호라는걸 미리 알고 있었다.,.만약 모르고 있었더라면 좀더 생각했을텐데..
 
거기다 보너스로 그림까지도 알파벳이 2칸씩 옮겨지는 힌트를 주고 있다.

파이썬 챌린지를 풀고나서 답은 꼭 봐야된다고 생각한다. 적어도 사람들과 공유정도는 해야겠지,,

왜냐하면 문제가 원하는 답이 분명 있는데 우리는 그 방법대로 안하고 훨씬 돌아가는 경우가 있기 때문이다.

내가 저 문자를 2칸씩 밀기 위해서 쓴 방법이다.

a="g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."

b=""

temp=0

for i in a:

temp=ord(i)

if 97<=temp<=122:
    temp+=2
if temp>122:
        temp
-=26

b+=chr(temp)

 

print b






 

 

 

 

 

 


i hope you didnt translate it by hand. thats what computers are for. doing it in by hand is inefficient and that's why this text is so long. using string.maketrans() is recommended. now apply on the url.





읽어보면 maketrans() 를 쓰란다

찾아보니 번역 테이블을 반환? 이렇게 쓰인다고 한다.

그러니까 먼저 테이블을 만들고 또 translate() 라는 함수가 있다고 한다 ㅜ
이 함수는 translate(s,table) 이렇게 쓰일수 있다.
그러니까 문자열 s 에 있는 것을 table 에 맞춰 바꿔준다는 것이다. 만약 s에 'a' 라는 문자가 있는데
테이블을 보니까 a 문자가 있던 자리에 c 가 있으면 a를 c로 바꿔주는 것이다.

따라서
import string => 이게 필요하다.maketrans랑 translate 를 쓰려면
text = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq lmu ynnjw ml rfc spj."
string.translate(text,table)




'python > python challenge' 카테고리의 다른 글

python challenge 2  (0) 2012.05.25
python challenge 0  (0) 2012.05.22