PythonChallenge 挑战之路 Level-24
来源:互联网 发布:今年最流行的网络语 编辑:程序博客网 时间:2024/06/06 08:24
这一关的图片是一张迷宫地图,只不过白色部分是迷宫的墙,深色部分是路。根据标题from top to bottom的提示,入口就是图片的右上角,出口就是图片的左下角。一开始以为路线会构成谜底, 结果:
显然这还不是谜底。在仔细观察迷宫的路径,可以发现每个一个像素点,路径上的颜色就会变化,应该包含了一些信息。将这些像素点的R通道数据用二进制写到文件,打开可以发现前两位是 PK ,那么这些信息其实是构成了一个ZIP文件。更改后缀,解压,里面有两个文件,其中一个就是谜底了。
代码如下:
import Image,ImageDrawimg = Image.open('maze.png').getdata()new = Image.new('RGBA',img.size,'black')newimg = ImageDraw.Draw(new)for i in range(img.size[1]): if img.getpixel((i,0))[0]==0: pos = (i,0) if img.getpixel((i,img.size[0]-1))[0]==0: endpos = (i,img.size[0]-1) path = []wholepath = []dire = [(1,0),(0,1),(-1,0),(0,-1)]wall = (255,)*4while pos!=endpos: img.putpixel(pos, wall) flag = 0 newpos = pos for i in dire: try: pp = (pos[0]+i[0],pos[1]+i[1]) if img.getpixel(pp)!=wall: flag+=1 newpos = pp except: pass if flag==0: if path == []: path = wholepath.pop() continue pos = path[0] path = [] elif flag>1: wholepath.append(path) path = [pos] pos = newpos else: path.append(pos) pos = newposelse: path.append(pos) wholepath.append(path)img = Image.open('maze.png').getdata()data = [(img.getpixel(k)[0],new.putpixel(k, wall)) for i in wholepath for k in i]out = open('out24.zip','wb')for i in data[1::2]: out.write(chr(i[0]))out.close()new.save('out24.png')结果为:
谜底就是lake啦
- PythonChallenge 挑战之路 Level-24
- PythonChallenge 挑战之路 Level-0
- PythonChallenge 挑战之路 Level-1
- PythonChallenge 挑战之路 Level-2
- PythonChallenge 挑战之路 Level-3
- PythonChallenge 挑战之路 Level-4
- PythonChallenge 挑战之路 Level-5
- PythonChallenge 挑战之路 Level-6
- PythonChallenge 挑战之路 Level-7
- PythonChallenge 挑战之路 Level-8
- PythonChallenge 挑战之路 Level-9
- PythonChallenge 挑战之路 Level-10
- PythonChallenge 挑战之路 Level-11
- PythonChallenge 挑战之路 Level-12
- PythonChallenge 挑战之路 Level-13
- PythonChallenge 挑战之路 Level-14
- PythonChallenge 挑战之路 Level-15
- PythonChallenge 挑战之路 Level-16
- 跟我一起玩转A870省电内核、超频内核
- HDU 1272 并查集
- VC++ 6.0 中 DWORD_PTR
- 链表空指针建立(个人想法)
- x64安装oracle 10.2.0.4无法启动em dbconsole问题解决
- PythonChallenge 挑战之路 Level-24
- js事件的一些例子探讨
- 第一次写博客
- GLSL核心课程---纹理图像
- nyoj-429-骨牌铺方格//hdu-2046-骨牌铺方格
- Java 中 Vector、ArrayList、List 使用深入剖析(转)
- java 执行bat文件 并输出信息
- 谁说Vim不是IDE?(三)
- 看人家小学生的素数的快速判断