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~~
留下评论