擅长:python、mysql、java
<p><a href="http://docs.python.org/library/itertools.html#itertools.groupby" rel="noreferrer">^{<cd1>}</a>似乎非常适合!只需定义一个<code>next_morris</code>函数,如下所示:</p>
<pre><code>def next_morris(number):
return ''.join('%s%s' % (len(list(group)), digit)
for digit, group in itertools.groupby(str(number)))
</code></pre>
<p>就这些!!!看:</p>
^{pr2}$
<hr/>
<p>我可以用它做发电机:</p>
<pre><code>def morris_generator(maxlen, start=1):
num = str(start)
while len(num) < maxlen:
yield int(num)
num = next_morris(num)
</code></pre>
<p>用法:</p>
<pre><code>for n in morris_generator(10):
print n
</code></pre>
<p>结果:</p>
<pre><code>1
11
21
1211
111221
312211
13112221
</code></pre>