Look and say numbers

论坛 期权论坛 脚本     
匿名技术用户   2020-12-28 04:43   33   0

地址: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

转载于:https://www.cnblogs.com/HpuAcmer/p/4015405.html

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP