Count and Say

# 問題

1
1 - 1個の1 -> 11 - 2個の1 -> 21 - 1個の2と1個の1 -> 1211 -> ...

上のように続く数列の第$n$項を求めよ.

# 答え

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
def count_and_say(n):
    if n == 1:
        return "1"
    def get_next_count_and_say(curr):
        ch = curr[0]
        cnt = 1
        ret = ""
        for i in range(1, len(curr)):
            if curr[i] != ch:
                ret += (str(cnt) + ch)
                ch = curr[i]
                cnt = 1
            else:
                cnt += 1
        ret += (str(cnt) + ch)
        return ret
    ret = "1"
    for i in range(2, n + 1):
        ret = get_next_count_and_say(ret)
    return ret

これは一種の符号化方式.

Hugo で構築されています。
テーマ StackJimmy によって設計されています。