def getdata(url):
    f = get_challenge.download(url, "kohsamui", "thailand")
    flag = -1
    size = []
    hor = []
    ver = []
    temp = [size, hor, ver]
    for i in f.getvalue().decode().split('\n'):
        if i == '':
            pass
        elif i[0] == '#':
            flag += 1
        else:
            temp[flag].append(list(map(int, i.split())))

    return (size[0][0], size[0][1], hor, ver)
示例#2
0
# -*- coding: utf-8 -*-
"""http://www.pythonchallenge.com/pc/rock/beer.html:kohsamui:thailand"""

__author__ = "子風"
__copyright__ = "Copyright 2015, Sun All rights reserved"
__version__ = "1.0.0"

import get_challenge
from PIL import Image
import math
import os

if not os.path.exists('.\Level33'):
    os.mkdir('.\Level33')

data = get_challenge.download("http://www.pythonchallenge.com/pc/rock/beer2.png", "kohsamui", "thailand")
im = Image.open(data)

f = im.getdata()
color = im.getcolors()
print(color)

# remove maximum and output to image
for i in range(len(color)-1, -1, -2):
    s = []
    t = []
    for j in f:
        if j != color[i][1] and j != color[i-1][1]:
            s.append(j)
            t.append(0)
        else:
示例#3
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""http://www.pythonchallenge.com/pc/hex/lake.html"""

__author__ = "子風"
__copyright__ = "Copyright 2015, Sun All rights reserved"
__version__ = "1.0.0"

import get_challenge
import wave
from PIL import Image

wavs = [
    wave.open(get_challenge.download("http://www.pythonchallenge.com/pc/hex/lake%d.wav" % i, "butter", "fly"))
    for i in range(1, 26)
]


def jig(w):
    return Image.frombytes("RGB", (60, 60), w.readframes(w.getnframes()))


jigsaw = Image.new("RGB", (300, 300), 0)
for i in range(len(wavs)):
    jigsaw.paste(jig(wavs[i]), (60 * (i % 5), 60 * (i // 5)))

jigsaw.show()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""http://www.pythonchallenge.com/pc/ring/guido.html:repeat:switch"""

__author__ = "子風"
__copyright__ = "Copyright 2015, Sun All rights reserved"
__version__ = "1.0.0"

import get_challenge
import bz2  

data = get_challenge.download("http://www.pythonchallenge.com/pc/ring/guido.html", "repeat", "switch")
s = [len(sp) for sp in data.getvalue().split(b"\n")[12::]]  
text = bytearray(s)
print(text)
print(bz2.decompress(text).decode())
from PIL import Image

def mandelbrot(left=0.34, bottom=0.57, width=0.036, height=0.027,max=128, size=(640, 480)):
    xstep = width / size[0]
    ystep = height / size[1]
    for y in range(size[1] - 1, -1, -1):
        for x in range(size[0]):
            c = complex(left + x * xstep, bottom + y * ystep)
            z = 0+0j
            for i in range(max):
                z = z * z + c
                if abs(z) > 2:
                    break
            yield i
            
data = get_challenge.download("http://www.pythonchallenge.com/pc/rock/mandelbrot.gif", "kohsamui", "thailand")
ufos = Image.open(data)

mandel = ufos.copy() # 直接使用原圖的類型、大小和調色板
mandel.putdata(list(mandelbrot()))
mandel.show() # 自己畫出的圖像看上去和給出的圖一樣
# 通過比較像素確定自己畫的圖和給出的圖的差異
differences = [(a - b) for a, b in zip(ufos.getdata(), mandel.getdata()) if a != b]
length = len(differences)
print(length)  # 輸出 1679,說明實際上有1679處不同
print(set(differences)) # 輸出set([-16, 16]),說明實際上所有差異都是16或者-16
factors = [x for x in range(2, length) if length % x == 0]
print(factors)
# 輸出 [23, 73] ,說明可以解析為23×73的圖像
# 構造 23×73的圖像,放大10倍後顯示
plot=Image.new('L',(23,73))
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""http://www.pythonchallenge.com/pc/hex/speedboat.html"""

__author__ = "子風"
__copyright__ = "Copyright 2015, Sun All rights reserved"
__version__ = "1.0.0"

import get_challenge
from PIL import Image
import bz2,keyword  

data = get_challenge.download('http://www.pythonchallenge.com/pc/hex/zigzag.gif', 'butter', 'fly')
f = Image.open(data)
fd = f.tobytes()
fp = f.palette.getdata()[1][::3]

table = bytes.maketrans(bytearray([i for i in range(256)]), fp)
ftran = fd.translate(table)

print("fd[1:10]:", fd[1:10])
print("ftran[:10]:", ftran[:10])

diff = [bytes(0),bytes(0)]
img = Image.new('1',f.size,0)  
for i in range(1,len(fd)):     
    if fd[i]!=ftran[i-1]:  
        diff[0] += bytes([fd[i]])
        diff[1] += bytes([ftran[i-1]])
        img.putpixel(((i-1)%f.size[0],(i-1)//f.size[0]),1) 
 
示例#7
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""http://www.pythonchallenge.com/pc/ring/yankeedoodle.html:repeat:switch"""

__author__ = "子風"
__copyright__ = "Copyright 2015, Sun All rights reserved"
__version__ = "1.0.0"

import get_challenge
from PIL import Image

csv = get_challenge.download("http://www.pythonchallenge.com/pc/ring/yankeedoodle.csv", "repeat", "switch")
    
color = []
for line in csv.getvalue().split(b"\n"):
    for data in line.split(b","):
        d = data.decode().strip()
        if d:
            color.append(d)

length = len(color)
print(length)
# 7367

factors = [x for x in range(2, length) if length % x == 0]
print(factors)
# [53, 139] 

img = Image.new('F',(53,139)) 
img.putdata(list(map(float,color)), 256)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""http://www.pythonchallenge.com/pc/ring/bell.html:repeat:switch"""

__author__ = "子風"
__copyright__ = "Copyright 2015, Sun All rights reserved"
__version__ = "1.0.0"

import get_challenge
from PIL import Image

img = Image.open(get_challenge.download("http://www.pythonchallenge.com/pc/ring/bell.png", "repeat", "switch"))
r,g,b = img.split()
r.show()
g.show()
b.show()

gdata = list(g.getdata())  
paris=[(gdata[i],gdata[i+1]) for i in range(0,len(gdata),2)] # 根據"my paris" 將像素兩兩分為一組
# 可以看出基本上每個paris內兩像素之差都為42
print(paris[:10])

diffs=[abs(i[0]-i[1]) for i in paris] # 計算兩兩像素之差的絕對值
print(diffs[:10])
    
s = ''

for i in diffs:  
    if i != -42 and i != 42:  
        s += chr(abs(i))  
print(s)