Ross Wan's World!

Python, Ajax, PHP and Linux.

The Python Challenge Lv.10

Posted by Ross Wan 于 2011/09/08

Lv.10

利用第8关的账号和密码进入第10关, 显示是一张黄牛的图片, bull? 图片下面是一个 Python 语句:

len(a[30]) = ?

将鼠标放在牛的身上, 原来是一个链接, 点击打开, 显示一个未完的列表:

a = [1, 11, 21, 1211, 111221,

看来这题的题目就是根据那个未完的列表提示, 推测 a[30] 的长度.

再看看那个未完的列表有什么规律:

a[0] = ‘1’
a[1] = ’11’ 每两个字符拆分理解为: 1个’1′ 等于 a[0]
a[2] = ’21’ 每两个拆分理解为: 1个’2′ 等于 a[1]
a[3] = ‘1211’ 每两个拆分理解为: 1个’2′ + 2个’1′ 等于 a[2]
a[4] = ‘111221’ 第两个字符拆分理解为: 1个’1′ + 1个’2′ + 2个’1′ 等于 a[3]

规律出来了, 剩下的可以交给 Python :)

import re

def repl(match_obj):
    return '%s%s' % (len(match_obj.group()), match_obj.groups()[0])

if __name__ == '__main__':
    a = '1'
    reg = re.compile(r'(\d)\1*')
    for i in range(30):
        a = reg.sub(repl, a)
    print('a[30] = %s\n' % a)
    print('len(a[30]) = %d' % len(a))

可知, len(a[30]) 的答案是5808. 下一关的网址就是: http://www.pythonchallenge.com/pc/return/5808.html

Have fun~~

留下评论