pronounce it
挑戰(zhàn)地址,點(diǎn)我
分析
右鍵查看網(wǎng)頁(yè)源代碼钥屈,有這樣的提示信息:
<peakhell src="banner.p"/>
</body>
</html>
<!-- peak hell sounds familiar ? -->
這里有一段提示 peak hell sounds familiar ?
peak hell 和什么的發(fā)音相似坝辫?
還有個(gè) peakhell
標(biāo)簽,里面有個(gè) banner.p
近忙,打開看下是一堆不規(guī)則的文本。
其實(shí) python 中有個(gè) pickle 模塊及舍,用來進(jìn)行對(duì)象的序列化和反序列化。
嘗試把 banner.p
中的內(nèi)容反序列化試下:
#!/usr/bin/env/ python3
import urllib.request
import pickle
url = "http://www.pythonchallenge.com/pc/def/banner.p"
with urllib.request.urlopen(url) as f:
print(pickle.load(f))
輸出內(nèi)容:
[[(' ', 95)], [(' ', 14), ('#', 5), (' ', 70), ('#', 5), (' ', 1)], ...省略
可以發(fā)現(xiàn)反序列化后咐柜,這是一個(gè)二維數(shù)組,把輸出的格式調(diào)整一下:
#!/usr/bin/env/ python3
import urllib.request
import pickle
url = "http://www.pythonchallenge.com/pc/def/banner.p"
with urllib.request.urlopen(url) as f:
result = pickle.load(f)
for r in result:
print(r)
輸出內(nèi)容:
[(' ', 95)]
[(' ', 14), ('#', 5), (' ', 70), ('#', 5), (' ', 1)]
[(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)]
...省略
仔細(xì)找下規(guī)律炕桨,發(fā)現(xiàn)每一行的數(shù)字之和都是 95肯腕,而且里面每一個(gè)元組由兩部分組成钥平,一個(gè)字符(空格或者#),一個(gè)數(shù)字涉瘾,比如:(' ', 14), ('#', 5)×⑴眩可以聯(lián)想一下,這是一個(gè)矩陣秘蛇,元組中的數(shù)字代表前面的字符重復(fù)次數(shù),每一行都有95個(gè)字符赁还。
嘗試試一下,看看會(huì)有什么效果:
#!/usr/bin/env/ python3
import urllib.request
import pickle
url = "http://www.pythonchallenge.com/pc/def/banner.p"
with urllib.request.urlopen(url) as f:
result = pickle.load(f)
for r in result:
for c in r:
for i in range(c[1]):
print(c[0], end="")
print()
輸出內(nèi)容:
##### #####
#### ####
#### ####
#### ####
#### ####
#### ####
#### ####
#### ####
### #### ### ### ##### ### ##### ### ### ####
### ## #### ####### ## ### #### ####### #### ####### ### ### ####
### ### ##### #### ### #### ##### #### ##### #### ### ### ####
### #### #### ### ### #### #### #### #### ### #### ####
### #### #### ### #### #### #### #### ### ### ####
#### #### #### ## ### #### #### #### #### #### ### ####
#### #### #### ########## #### #### #### #### ############## ####
#### #### #### ### #### #### #### #### #### #### ####
#### #### #### #### ### #### #### #### #### #### ####
### #### #### #### ### #### #### #### #### ### ####
### ## #### #### ### #### #### #### #### #### ### ## ####
### ## #### #### ########### #### #### #### #### ### ## ####
### ###### ##### ## #### ###### ########### ##### ### ######
這些空格和#最終組成了一個(gè)單詞 channel
蹈胡,這應(yīng)該就是下一關(guān)的入口了http://www.pythonchallenge.com/pc/def/channel.html罚渐。
參考資源: