0%

Python Challenge (Level 10)

第10关

图片下面提示算a[30]的长度. 点击图片上的牛, 会看到

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

明显, 这是要找出a的规律, 算出a[30]. 想了很久, 智商不够, 完全看不出有什么规律. 照旧找网上的大神, 得到规律.

规律就是, 数组里面的后一个元素是对前一个元素的”描述”. 比如说第a[1]是 11, 表示a[0]是 “1 个 1”; a[4]是111221, 表示a[3]是 “1个1, 1个2, 2个1”.

找到规律, 后面就简单了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def getNext(a):
a = str(a)
last = a[0]
last_n = 1
ret = []
for i in range(1, len(a)):
if a[i] == last:
last_n += 1
else:
ret += [str(last_n), last]
last = a[i]
last_n = 1
ret += [str(last_n), last]
ret = int(''.join(ret))
return ret

start = 1

for i in range(1, 31):
ne = getNext(start)
start = ne
print i, len(str(ne))

最后得到5808, 下一关 http://www.pythonchallenge.com/pc/return/5808.html