PythonChallenge闯关游戏——第11-15关
2014-04-30 11:01
393 查看
第十一关:http://www.pythonchallenge.com/pc/return/5808.html
查看网页源代码:
是图像处理的题,提示奇偶,所以我们将图像下载下来,然后将图像的每个像素都隔开来取生成一张新图像看看:
假设原图像是下面这个:
则生成的新图像是:
python脚本如下:
看到有:evil字样,修改url,进入下关。
第十二关:http://www.pythonchallenge.com/pc/return/evil.html
网页源代码:
只有一个evil1.jpg,于是我们改为evil2.jpg,得到:
我们将后缀名改为gfx,下载到evil2.gfx文件。再改变url为evil3.jpg,得到:
改变url为evil4.jpg,得到:
Bert is evil! go back!
将url地址改为:bert,得到:
到这里就断了,然后根据原先下载的文件,再加上原始图片5份牌提示,我们将该文件分成5份,python代码如下:
0 jpeg
1 png
2 gif
3 png
4 jpeg
还有生成了5张图片,图片中的单词拼起来就是:disproportionality ,又ity是划掉的,所以是disproportional,改变url,进入下关。
第十三关:http://www.pythonchallenge.com/pc/return/disproportional.html
网页源代码:
打开phonebook.php一看,是个xml文件,猜想是python的xmlrpclib模块
上面提示是打电话给罪犯,再加上上一关提示的罪犯是Bert,所以python代码如下:
555-ITALY
测试下,发现只有italy才是下关的url。
第十四关:http://www.pythonchallenge.com/pc/return/italy.html
网页源代码:
将wire.png下载下来看,是一个10000*1的图片,根据提示,remember: 100*100 = (100+99+99+98) + (,还有网页图片是一个螺旋状的面包,我们猜想是将该图片转换为一张100*100的图片,填充的方式是由最外层开始一圈一圈的填上像素值。
注:100*100 = (100 + 100 + ... + 100) //一共100个100相加
= (100 + 0) + (99 + 1) + ... + (1 + 99)
= (100 + 99 + ... + 1) + (0 + 1 + ... + 99)
= (100 + 99 + ... + 1) + (99 + 98 + ... + 0)
= (100 + 99) + (99 + 98) + ... + (1 + 0)
= (100 + 99 + 99 + 98) + ... + (2 + 1 + 1 + 0)
算法比较难写,在网上找了个,以后再研究:
改变url,得到and its name is uzi. you'll hear from him later.
因此,使用http://www.pythonchallenge.com/pc/return/uzi.html,得到下一关。
第十五关:http://www.pythonchallenge.com/pc/return/uzi.html
网页源代码:
猜whom,图片右下角,有一个月是29天,说明该年是闰年,而且1月26号是星期一,1xx6年,写个python遍历下:
1176
1356
1576
1756
1976
根据提示,他是第二年青的,所以是1756年,还有提示是明天,所以是1月27号,百度下1756-01-27这个日期,发现时莫扎特的出生日期,改一下url为mozart,进入下关:
http://www.pythonchallenge.com/pc/return/mozart.html
查看网页源代码:
是图像处理的题,提示奇偶,所以我们将图像下载下来,然后将图像的每个像素都隔开来取生成一张新图像看看:
假设原图像是下面这个:
0,0 | 1,0 | 2,0 | 3,0 |
0,1 | 1,1 | 2,1 | 3,1 |
0,2 | 1,2 | 2,2 | 3,2 |
0,0 | 2,0 |
0,2 | 2,2 |
import Image blank = Image.new('RGB', (320, 240)) im = Image.open('cave.jpg') for x in range(640): for y in range(480): pixel = im.getpixel((x, y)) blank.putpixel((x/2, y/2), pixel) blank.show()输出结果:
看到有:evil字样,修改url,进入下关。
第十二关:http://www.pythonchallenge.com/pc/return/evil.html
网页源代码:
只有一个evil1.jpg,于是我们改为evil2.jpg,得到:
我们将后缀名改为gfx,下载到evil2.gfx文件。再改变url为evil3.jpg,得到:
改变url为evil4.jpg,得到:
Bert is evil! go back!
将url地址改为:bert,得到:
到这里就断了,然后根据原先下载的文件,再加上原始图片5份牌提示,我们将该文件分成5份,python代码如下:
import Image from cStringIO import StringIO s = open("evil2.gfx", "rb").read() for i in range(5): piece = s[i::5] # every fifth byte, starting at i im = Image.open(StringIO(piece)) # @UndefinedVariable print i,im.format.lower() f = open("%d.%s" % (i, im.format.lower()), "wb") f.write(piece) f.close()输出结果:
0 jpeg
1 png
2 gif
3 png
4 jpeg
还有生成了5张图片,图片中的单词拼起来就是:disproportionality ,又ity是划掉的,所以是disproportional,改变url,进入下关。
第十三关:http://www.pythonchallenge.com/pc/return/disproportional.html
网页源代码:
打开phonebook.php一看,是个xml文件,猜想是python的xmlrpclib模块
上面提示是打电话给罪犯,再加上上一关提示的罪犯是Bert,所以python代码如下:
import xmlrpclib server = xmlrpclib.Server('http://www.pythonchallenge.com/pc/phonebook.php') print server.phone('Bert')输出结果:
555-ITALY
测试下,发现只有italy才是下关的url。
第十四关:http://www.pythonchallenge.com/pc/return/italy.html
网页源代码:
将wire.png下载下来看,是一个10000*1的图片,根据提示,remember: 100*100 = (100+99+99+98) + (,还有网页图片是一个螺旋状的面包,我们猜想是将该图片转换为一张100*100的图片,填充的方式是由最外层开始一圈一圈的填上像素值。
注:100*100 = (100 + 100 + ... + 100) //一共100个100相加
= (100 + 0) + (99 + 1) + ... + (1 + 99)
= (100 + 99 + ... + 1) + (0 + 1 + ... + 99)
= (100 + 99 + ... + 1) + (99 + 98 + ... + 0)
= (100 + 99) + (99 + 98) + ... + (1 + 0)
= (100 + 99 + 99 + 98) + ... + (2 + 1 + 1 + 0)
算法比较难写,在网上找了个,以后再研究:
import Image src = Image.open('wire.png') # @UndefinedVariable dst = Image.new(src.mode, (100, 100)) # @UndefinedVariable x, y, idx = -1, 0, 0 # back a step steps = [1, 0, 0, 1, -1, 0, 0, -1] while idx < 10000: nx, ny = x + steps[0], y + steps[1] if 0 <= nx < 100 and 0 <= ny < 100 \ and dst.getpixel((nx, ny)) == (0, 0, 0): x, y = nx, ny dst.putpixel((x, y), src.getpixel((idx, 0))) idx += 1 else: steps = steps[2:] + steps[:2] # turn dst.show()输出结果:
改变url,得到and its name is uzi. you'll hear from him later.
因此,使用http://www.pythonchallenge.com/pc/return/uzi.html,得到下一关。
第十五关:http://www.pythonchallenge.com/pc/return/uzi.html
网页源代码:
猜whom,图片右下角,有一个月是29天,说明该年是闰年,而且1月26号是星期一,1xx6年,写个python遍历下:
from datetime import * def isleap(year): d = date(year, 3, 1) return (d - timedelta(days=1)).day == 29 for year in range(1006, 2000, 10): if isleap(year) and date(year, 1, 26).weekday() == 0: print year输出结果:
1176
1356
1576
1756
1976
根据提示,他是第二年青的,所以是1756年,还有提示是明天,所以是1月27号,百度下1756-01-27这个日期,发现时莫扎特的出生日期,改一下url为mozart,进入下关:
http://www.pythonchallenge.com/pc/return/mozart.html
相关文章推荐
- PythonChallenge闯关游戏——第16-20关
- Python挑战游戏( PythonChallenge)闯关之路Level- 2
- pythonchallenge 闯关游戏
- PythonChallenge闯关游戏——第6-10关
- Python挑战游戏( PythonChallenge)闯关之路Level- 1
- Python挑战游戏( PythonChallenge)闯关之路Level- 3
- Python挑战游戏( PythonChallenge)闯关之路Level- 5
- PythonChallenge闯关游戏——第0关
- Python挑战游戏( PythonChallenge)闯关之路Level 0
- PythonChallenge闯关游戏——第1-5关
- Python挑战游戏( PythonChallenge)闯关之路Level- 6
- Python挑战游戏( PythonChallenge)闯关之路Level- 4
- 网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
- 阿里前端闯关游戏 “智勇大闯关第三季” 闯关攻略
- 51nod 1450 闯关游戏 期望dp
- 网页闯关游戏(riddle webgame)--游戏玩法和整体介绍
- 射击闯关游戏,旧王已死、新王当立?
- 做了一个XSS的闯关游戏,攻略贴上来
- 网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
- 光棍节程序员闯关秀——闲来无事玩玩儿游戏~