PythonChallenge Mission 14

进入14关,看到了一个面包,肚子不争气的饿了。。。

言归正传,除了这个面包还看到了一张条纹图案,不明觉厉。

然后查看源代码,看到了一行注释:

<!-- remember: 100*100 = (100+99+99+98) + (... -->

然而并不知道这样分解是什么意思,将两张图片下载下来后发现那张条纹图案是被“折叠”为正方形的长条图案。

再看看题目,walk around,顿时提示有了意义:

100*100就是图片的全部像素

而(100+99+99+98)不就是100*100图像的最外围一层像素嘛

于是明白了题目是要我们把这张长条从外往里铺满成一张完整的图片啊,于是上代码:

from PIL import Image
img=Image.open('wire.png')
print img.size
def decode(source):
    mImage=Image.new(source.mode,(100,100))
    left,top,right,bottom=0,0,99,99
    dx,dy=1,0
    x,y=0,0
    for i in range(10000):
        print x,y
        mImage.putpixel((x,y),source.getpixel((i,0)))
        if(x==bottom and dx==1):
            dx=0
            dy=1
            left+=1
        if(y==right and dy==1):
            dx=-1
            dy=0
            bottom-=1
        if(x==top and dx==-1):
            dx=0
            dy=-1
            right-=1
        if(y==left and dy==-1):
            dx=1
            dy=0
            top+=1
        x+=dx
        y+=dy
    return mImage
decode(img).show()

结果出来一张猫的图片,将网址替换为cat,http://www.pythonchallenge.com/pc/return/cat.html,然后我们看到了这张猫的生活照,真心呆萌!

上面提示我们它的名字是uzi,替换网址为 http://www.pythonchallenge.com/pc/return/uzi.html,进入下一关!

花絮:

1.顺逆时针其实都可以,首先顺时针出来的猫是倒着的,于是将代码改为了逆时针

2.那个面包不仅提示你的肚子饿,也会提示你答案要把转圈圈才能出来:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值