[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
关键词(Tag): challenge python


收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论

  • 2008-08-01 23:42:12

    python challenge里面的题真的很BT哦……后面感觉就是在比谁像柯南……
    攻略很详尽,呵呵~~赞~

  • 2008-08-04 14:12:11

    nx
    我也做过,做到chanllenge3.。题目看错了。。原来是这个意思。。我还以为是类似
    B
    BsB
    B
    这样类型的字母。。结果有无数个。。

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定