Look and say numbers
地址:http://www.codewars.com/kata/53ea07c9247bc3fcaa00084d/train/python
There exists a sequence of numbers that follows the pattern
1
11
21
1211
111221
312211
13112221
1113213211 . . .
Starting with "1" the following lines are produced by "saying what you see", so that line two is "one one", line three is "two one(s)", line four is "one two one one".
代码如下:
import collections def say(stra): lenA = len(stra) dic = collections.OrderedDict() ans = "" for i in range(0,lenA): if dic.has_key(stra[i]): dic[stra[i]] += 1 else: dic[stra[i]] = 1 if i > 0 and stra[i] != stra[i-1] : ans += (str(dic[stra[i-1]]) + stra[i-1]) dic[stra[i-1]] = 0 ans += (str(dic[stra[i]]) + stra[i]) return ans def look_and_say(data='1', maxlen=5): lista = [] lista.append(say(data)) for i in range(1,maxlen): lista.append(say(lista[i-1])) return lista