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啦

原创粉丝点击