小草根的博客... » 日志 » [Python Challenge] Python Challenge
[Python Challenge] Python Challenge
NGloom 发表于 2008-07-31 12:12:00
在网上找到一个关于一个叫做Python Challenge的网站,
上面的题目都是要需要一些编程工作才能解决的,当然是推荐用Python来解决喽.
每个问题解决出来后,就可以看到一些关于这个问题的solution,相当不错的..
大家有兴趣一起玩一下,网址如下:
http://www.pythonchallenge.com/
好些题目还是有些BT的,至少我是没有想出来,google上的答案也就是到11关左右(自己参考了蛮多的 :P)
我把答案备份在这里了,看看最后能闯到第几关^_^
==============================================================================
Challenge 0: http://www.pythonchallenge.com/pc/def/0.html
顺便说一下,好多题目都是要认真观察那个url地址的,还有一些网页源文件里的提示信息,因为好些提示是以网页注释的形式存在的.
当你找到一个challenge的答案时,一般只要把那个网页de/和.html之间的内容用你找出的答案代替就可以了,如果你给出的答案是正确的,网页会转到下一个challenge并且你还会权限去看这一关的答案
这一关的提示:Hint: try to change the URL address.
该改成多少呢,看图片2**38
所以说是warmup,程序如下:
print 2**38
==============================================================================
challenge 1: http://www.pythonchallenge.com/pc/def/map.html
看图片提示:
K->M
O->Q
E->G
所以 x -> (x-97+2)%26 + 97 x in [a-z]
程序如下:
import string
s = "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. "
a = list(s)
b = []
c = string.ascii_lowercase# a-z
for i in a:
if i in c:
i = chr((ord(i)-97 +2)%26 + 97)
b.append(i)
print "".join(b)
#不过答案里有些更好的解法@@
=====================================================================================
challenge 2: http://www.pythonchallenge.com/pc/def/ocr.html
嗯,提示里说要看page source,所以就不用看那本模糊不清的书了,反正什么也看不出来 .
看到source page那一大段的东西了吧.目标就是 find rare characters in the mess below:
嗯,我把那大段的东西保存在source.txt中,程序如下:s = open("source.txt").read()
a = []
for i in range(258):
a.append(0)
for i in s:
a[ord(i)] += 1
for i in range(len(a)):
if a[i] and a[i] < 10:
print chr(i),
#这样其实并不能将答案按原来的顺序显示出来,
#所以最后我其实按字母的排列组合找到答案的,
英文水平比较差,所以还是找了蛮久的.
equality....
==================================================================================
challenge 3: http://www.pythonchallenge.com/pc/def/equality.html
这关也是需要从source page里找东西,
不过线索是:One small letter, surrounded by EXACTLY three big bodyguards oneach of its sides.
那3个大保镖应该是指三个大写字母吧:
import re
s = open("source.txt").read()
a = []
result = re.findall(r"[a-z][A-Z]{3,3}([a-z])[A-Z]{3,3}[a-z]",s)
print "".join(result)
====================================================================================
challenge 4: http://www.pythonchallenge.com/pc/def/linkedlist.php
看source page 和提示,然后点击那个图片
程序如下:
import urllib2
import re
add = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing="
no = "12345"
while 1:
url = urllib2.urlopen(add+no)
content = url.read()
print content
no = re.search(r"the next nothing is (\d+)",content).group(1)
# 程序跑起来看着点.. 有个小trick在里面.
=============================================================================
challenge 5: http://www.pythonchallenge.com/pc/def/peak.html
说实话,这个真的没有想到...
这个peak hell 怎么听起来很像pickle吗,而且pickle也没用过,怎么可能想得出.
这个是参考人家的答案搞出来的..
哦,那个banner.p是个是一个下载来的东西,怎么下载自己想想.
下来完了用pickle反序列化.程序如下:
import pickle
f = open("banner.p")
content = pickle.load(f)
s = ""
for i in content:
for j in i:
s = s + j[0] * j[1]
s = s + "\n"
print s
==========================================================================================
challenge 6:http://www.pythonchallenge.com/pc/def/channel.html
source page里有一个zip的提示..嗯.. 但是zip那个页面仍然只是一个提示"yes,get the zip"
这个其实我没有想出来,下载那个channel.zip吧.
和那个linkdelist很像的,跑下试试,不过第一遍跑只能得到一个提示,不过离答案很近了,
最终程序如下:
import zipfile
import re
z = zipfile.ZipFile("channel.zip")
next = "90052"
comment = ""
while 1:
fileName = next+".txt"
content = z.read(fileName)
comment += z.getinfo(fileName).comment
print content
try:
next = re.search(r"Next nothing is (\d+)",content).group(1)
except:
break
print comment
====================================================================================
challenge 7:http://www.pythonchallenge.com/pc/def/oxygen.html
先写到这^_^
输完液go on
上面的题目都是要需要一些编程工作才能解决的,当然是推荐用Python来解决喽.
每个问题解决出来后,就可以看到一些关于这个问题的solution,相当不错的..
大家有兴趣一起玩一下,网址如下:
http://www.pythonchallenge.com/
好些题目还是有些BT的,至少我是没有想出来,google上的答案也就是到11关左右(自己参考了蛮多的 :P)
我把答案备份在这里了,看看最后能闯到第几关^_^
==============================================================================
Challenge 0: http://www.pythonchallenge.com/pc/def/0.html
顺便说一下,好多题目都是要认真观察那个url地址的,还有一些网页源文件里的提示信息,因为好些提示是以网页注释的形式存在的.
当你找到一个challenge的答案时,一般只要把那个网页de/和.html之间的内容用你找出的答案代替就可以了,如果你给出的答案是正确的,网页会转到下一个challenge并且你还会权限去看这一关的答案
这一关的提示:Hint: try to change the URL address.
该改成多少呢,看图片2**38
所以说是warmup,程序如下:
print 2**38
==============================================================================
challenge 1: http://www.pythonchallenge.com/pc/def/map.html
看图片提示:
K->M
O->Q
E->G
所以 x -> (x-97+2)%26 + 97 x in [a-z]
程序如下:
import string
s = "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. "
a = list(s)
b = []
c = string.ascii_lowercase# a-z
for i in a:
if i in c:
i = chr((ord(i)-97 +2)%26 + 97)
b.append(i)
print "".join(b)
#不过答案里有些更好的解法@@
=====================================================================================
challenge 2: http://www.pythonchallenge.com/pc/def/ocr.html
嗯,提示里说要看page source,所以就不用看那本模糊不清的书了,反正什么也看不出来 .
看到source page那一大段的东西了吧.目标就是 find rare characters in the mess below:
嗯,我把那大段的东西保存在source.txt中,程序如下:s = open("source.txt").read()
a = []
for i in range(258):
a.append(0)
for i in s:
a[ord(i)] += 1
for i in range(len(a)):
if a[i] and a[i] < 10:
print chr(i),
#这样其实并不能将答案按原来的顺序显示出来,
#所以最后我其实按字母的排列组合找到答案的,
英文水平比较差,所以还是找了蛮久的.
equality....
==================================================================================
challenge 3: http://www.pythonchallenge.com/pc/def/equality.html
这关也是需要从source page里找东西,
不过线索是:One small letter, surrounded by EXACTLY three big bodyguards oneach of its sides.
那3个大保镖应该是指三个大写字母吧:
import re
s = open("source.txt").read()
a = []
result = re.findall(r"[a-z][A-Z]{3,3}([a-z])[A-Z]{3,3}[a-z]",s)
print "".join(result)
====================================================================================
challenge 4: http://www.pythonchallenge.com/pc/def/linkedlist.php
看source page 和提示,然后点击那个图片
程序如下:
import urllib2
import re
add = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing="
no = "12345"
while 1:
url = urllib2.urlopen(add+no)
content = url.read()
print content
no = re.search(r"the next nothing is (\d+)",content).group(1)
# 程序跑起来看着点.. 有个小trick在里面.
=============================================================================
challenge 5: http://www.pythonchallenge.com/pc/def/peak.html
说实话,这个真的没有想到...
这个peak hell 怎么听起来很像pickle吗,而且pickle也没用过,怎么可能想得出.
这个是参考人家的答案搞出来的..
哦,那个banner.p是个是一个下载来的东西,怎么下载自己想想.
下来完了用pickle反序列化.程序如下:
import pickle
f = open("banner.p")
content = pickle.load(f)
s = ""
for i in content:
for j in i:
s = s + j[0] * j[1]
s = s + "\n"
print s
==========================================================================================
challenge 6:http://www.pythonchallenge.com/pc/def/channel.html
source page里有一个zip的提示..嗯.. 但是zip那个页面仍然只是一个提示"yes,get the zip"
这个其实我没有想出来,下载那个channel.zip吧.
和那个linkdelist很像的,跑下试试,不过第一遍跑只能得到一个提示,不过离答案很近了,
最终程序如下:
import zipfile
import re
z = zipfile.ZipFile("channel.zip")
next = "90052"
comment = ""
while 1:
fileName = next+".txt"
content = z.read(fileName)
comment += z.getinfo(fileName).comment
print content
try:
next = re.search(r"Next nothing is (\d+)",content).group(1)
except:
break
print comment
====================================================================================
challenge 7:http://www.pythonchallenge.com/pc/def/oxygen.html
先写到这^_^
输完液go on
相关日志:
- » 【转】python 十行代码判定色情图片
- » 词汇整理程序
- » 杂乱
- » DIP chap13-16
- » DIP chap17
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
