【原创】pythonchalleng——第14题

来源:互联网 发布:大乐透必中五红算法 编辑:程序博客网 时间:2024/06/07 12:24

        第十四题的网址:http://www.pythonchallenge.com/pc/return/italy.html,下面是该题目的截图,特此留念。

2011-09-18_204746

这道题的提示如下:

    • <!-- remember: 100*100 = (100+99+99+98) + (... –>
    • 下面的图片,wire.png。

        起初真不知道这道题该怎么做……于是上网查找提示信息。终于有了想法。wire.png是10000*1的图片。第一条提示100*100=(100+99+99+98) + (... ,从这可以看出,10000个像素点可以按照100+99+99+98+…分割。这不就是上面图片螺旋分配像素的提示嘛。举个例子,10*10的图片如下:

  0   1   2   3   4   5   6   7   8   9

35   …                                       10

34                                             11

33                                             12

32                                             13

31                                             14

30                                             15

29                                             16

28                                             17

27 26 25 24 23 22 21 20 19 18

        OK了,现在知道应该什么处理了,好了,上代码:

# coding:utf-8 
__author__ = 'haiquan' 
import Image 
import math 
#按照图片提示,将wire.png中的10000个像素按照螺旋的方式写入新的图片中。 
def spiralDealPic(path): 
    img=Image.open(path) 
    print img.size 
    width=height=(int)(math.sqrt(img.size[0])) 
    newpic=Image.new("RGB",(width,height)); 
    length=img.size[0] 
    counter=0 
    layer=0 
    while counter<length: 
        for i in range(layer,width-layer): 
            pixel=img.getpixel((counter,0)) 
            counter+=1 
            newpic.putpixel((i,layer),pixel) 
        for i in range(layer+1,height-layer): 
            pixel=img.getpixel((counter,0)) 
            counter+=1 
            newpic.putpixel((width-layer-1,i),pixel) 
        for i in range(width-layer-2,layer-1,-1): 
            pixel=img.getpixel((counter,0)) 
            counter+=1 
            newpic.putpixel((i,height-layer-1),pixel) 
        for i in range(height-layer-2,layer,-1): 
            pixel=img.getpixel((counter,0)) 
            counter+=1 
            newpic.putpixel((layer,i),pixel) 
        layer+=1 
    newpic.save('14.png') 
    newpic.show() 
if __name__ == '__main__': 
    spiralDealPic('wire.png') 
  

        好了,现在看看我们转换后的图片是什么样的。

14

好了,我们知道这是什么动物了吧,对,是cat。让我们试一试新的url了吧,http://www.pythonchallenge.com/pc/return/cat.html,看到如下画面:

2011-09-18_211001

嗯,作者提示我们它的猫叫uzi,那我们再试一试,http://www.pythonchallenge.com/pc/return/uzi.html。OK,顺利进入第15题。

0 0