这一关的图片是一个拼图游戏(共5*5=25块),暗示了不少信息。网页源码的提示:
<!-- can you see the waves? -->
这也暗示了需要将声音信息转化为图片信息。图片的文件名为lake1.jpg,尝试了lake2.jpg,发现没有,那么尝试lake1.wav,果然可以获得一段音频信息。一共25段,对应了图片的25块的暗示,首先下载下来:
import urllib
for count in range(1,26):
url = "http://butter:fly@www.pythonchallenge.com/pc/hex/lake%d.wav" % count
urllib.urlretrieve(url, 'lake%d.wav' % count)
第二步就是将音频转化为图片了。由于每一段音频都是10800帧,带宽1字节,而RGB格式图片每个像素点需要3个字节的信息,那么可以获得3600个像素点,估计为60*60的小图片,代码如下:
import wave,Image
new = []
for i in range(1,26):
f = wave.open('lake%d.wav' % i, 'rb')
new.append(Image.fromstring('RGB', (60,60), (f.readframes(f.getnframes()))))
然后就是拼图了,按照一开始那张图片的样式,5个一行,共5行:
img = Image.new('RGB',(300,300))
for i in range(25):
img.paste(new[i],((i%5)*60, (i/5)*60))
img.save('lake.png')
最后结果为:所以最终答案就是decent