Python Challenge
0. 2的38次方
print 2**38 ##apply the result to the url
1. 看图是要right shift两位, 切片即可。
import string
intab = string.ascii_lowercase
outtab = intab[2:] + intab[:2]
trans_table = string.maketrans(intab, outtab)
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."""
print s.translate(trans_table)
print 'map'.translate(trans_table)
##The result is
##
## 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.
##ocr
##apply ocr to the url
2. 寻找出现次数少的character
import string
result = {}
text = open('003help.txt').read()
for ch in text:
result[ch] = result.get(ch, 0) + 1
print result
print ''.join(ch for ch in result if result[ch]==1)
s = []
for i in text:
if i in string.ascii_lowercase:
s.append(i)
print ''.join(s)
##apply 'equality' to the url
3. One small letter, surrounded by EXACTLY three big bodyguards on each of its sides. 正则表达式!
import re
pattern = re.compile('[^A-Z][A-Z]{3}([a-z])[A-Z]{3}[^A-Z]')
text = open('004help.txt').read()
t = re.findall(pattern, text)
print ''.join(t)
##apply to the url
4. follow the chain. 还是回到网页源代码,发现linkedlist.php?nothing=12345,替代linkedlist.php然后得到the next nothing is .其实就是从这个网页中提取nothing后面的数字替换,作者说不超过400次,加一个for循环,如下:
import re
import urllib
url = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing='
nothing = '
pattern = re.compile(r'and the next nothing is (\d+)')
for i in range(400):
try:
text = urllib.urlopen(url+nothing).read()
nothing = pattern.findall(text)[0]
print nothing
except Exception, e:
print e
break
print text
中间又一次exception,16044,让除以2,改成8022,继续,最后得到peak.html。
5. pronounce it. 读了好长时间,也没有神奇的事情发生,后来bing了才知道peakhell --> pickle. 也在我学识浅薄,没学习过这个模块。查了一下pickle的文档,这是一个python对象序列化的模块,感觉很抽象,好在api不复杂,页面源码提供了peakhell src,就是那个banner.p下载下来之后,用loads函数进行处理,下面是loads函数的说明(注意,不是load()):
pickle.loads(string)
Read a pickled object hierarchy from a string. Characters in the string past the pickled object’s representation are ignored.
#cPickle是c语言实现的pickle模块
import cPickle as pickle
t = open('banner.p').read()
s = pickle.loads(t)
print s
结果是一个list,研究了半天只知道列和95(小学生思维)。这下更摸不着头脑了,只好__人有两件宝,双手和电脑__去搜索答案了。Amazing!
for line in s:
print ''.join(map(lambda pair: pair[0]*pair[1], line))
try it, try it! 不禁让我想到linuxlogo,这种ascii图还很养眼。
不过,前方的路坎坷又长
6. zip, 没有其他提示了,替换html,发现下载了channel.zip的文件,打开readme.txt,发现第一条提示类似前面的问题,又得到collect the comments,修改了re部分,发现没结果,后来百度才知道是有关zipfile这个module的。实现也不是很难:
import re
import os
import zipfile
def find_next():
comments = []
prefix = '
suffix = '.txt'
pattern = re.compile(r'\D+(\d+)')
z = zipfile.ZipFile('/home/zhangqi/channel.zip', mode='r')
while True:
try:
filename = 'channel/' + prefix + suffix
text = open(filename).read()
prefix = pattern.findall(text)[0]
print prefix
comments.append(z.getinfo(prefix + suffix).comment)
except Exception, e:
print e
break
print ''.join(comments)
find_next()
#it's in the air. look at the letters.
最后看组成hockey的字母,连环trick有木有!
stay tuned...
Python Challenge的更多相关文章
- python challenge第1关--NoteBook上的“乱码”
在 python challenge第0关中已经得到第1关的地址了: http://www.pythonchallenge.com/pc/def/map.html 一.观察地址栏和标签: What a ...
- Python Challenge 过关心得(0)
最近开始用Openerp进行开发,在python语言本身上并没有什么太大的进展,于是决定利用空闲时间做一点python练习. 最终找到了这款叫做Python Challenge(http://www. ...
- Python Challenge 第四题
这一题没有显示提示语,仅仅有一幅图片,图片也看不出什么名堂,于是直接查看源代码,源代码例如以下: <html> <head> <title>follow the c ...
- The Python Challenge 谜题全解(持续更新)
Python Challenge(0-2) The Python Challengehttp://www.pythonchallenge.com/ 是个很有意思的网站,可以磨练使用python的技巧, ...
- The Python Challenge 0-4
The Python Challenge 0-4 项目地址:http://www.pythonchallenge.com/ Level-0 提示Hint: try to change the URL ...
- python challenge答案参考
Solutions to python challenge. http://garethrees.org/2007/05/07/python-challenge/ https://github.com ...
- Python Challenge 第一关
偶然在网上看到这个,PYTHON CHALLENGE,利用Python语言闯关,觉得挺有意思,就记录一下. 第0关应该算个入口吧,试了好几次才试出来,没什么代码就不写了.计算一个结果出来就行. 第一关 ...
- The Python Challenge 闯关笔记
The Python Challenge : http://www.pythonchallenge.com/ Level 0: 看提示图片中为2**38,计算值为274877906944. Hint: ...
- Python Challenge 过关心得(1)
正式开始第1关,这一关的URL的特殊部分是map. 这关的图片上有一个本子,上面写着K→M,O→Q,E→G,稍微思索就能发现这几个字母都是按照字母表的顺序向后移动了两位,那么最投机取巧的方法就是把ma ...
随机推荐
- Android常用组件Broadcast介绍
一.Broadcast简介 Broadcast是Android的四大组件之一.可分为: 1.普通广播 发送一个广播,所有监听该广播的广播接收者都可以监听到改广播. 2.异步广播 当处理完之后的Inte ...
- Hibernate 关联关系映射实例
双向多对一/一对多(many-to-one/one-to-many) 例子,多个学生对应一个班级,一个班级对应多个学生: 班级类,Grade.java: public class Grade { pr ...
- .NET进阶系列之一:C#正则表达式整理备忘
有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就能看到 好几个正则表达式的帖子,那段时间借助论坛以及Wrox Press出版的<C#字符串和正则表达式参考手册>学习了一些基础的 ...
- tomcat中的URL参数为中文,servlet接收后显示乱码
URL中参数的值为中文时,servlet接收后显示为乱码,如下图: 这时候需要修改tomcat的中的server.xml文件.该文件路径为 tomcat安装目录下的conf文件夹. 为修改前的se ...
- Linux操作系统报:read-only file system
在对集群测试过程中发现系统中某一节点中的磁盘变成read-only file system,从而导致测试任务出错,从网上查找资料,找到以下解决方案: 这个报错的意思是硬盘属性变成只读,不可写入: VO ...
- $digest already in progress
最近在写项目时经常遇到一个小问题,在上下文外改变视图,通常来说我们需要apply()便可以实现,问题是加了apply()后控制台报错:$digest already in progress:随后我把a ...
- coco2d-x中的坐标系问题
(1)OpenGL坐标系 Cocos2D-x以OpenGL和OpenGL ES为基础,所以自然支持OpenGL坐标系.该坐标系原点在屏幕左下角,x轴向右,y轴向上. (2)屏幕坐标系 屏幕坐标系使用的 ...
- java学习一目了然——IO
java学习一目了然--IO IO是java学习当中很重要的一部分.IO流实现数据的上传下载,即读写数据,包括输入和输出流,输入流指的是将数据以字符或字节形式从外部媒介比如文件.数据库等读取到内存中所 ...
- 'adb' 不是内部或外部命令,也不是可运行的程序
启动adb shell的时候,出现如下问题: 'adb' 不是内部或外部命令,也不是可运行的程序或批处理文件. 在确保自己的SDK安装正确的时候,就很好办了,找到SDK安装目录\platform-to ...
- cf459C Pashmak and Buses
C. Pashmak and Buses time limit per test 1 second memory limit per test 256 megabytes input standard ...