Chinaunix首页 | 论坛 | 博客
  • 博客访问: 112539
  • 博文数量: 49
  • 博客积分: 2612
  • 博客等级: 少校
  • 技术积分: 431
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-01 14:31
个人简介

来来去去

文章分类

全部博文(49)

文章存档

2015年(1)

2012年(4)

2011年(1)

2010年(42)

2009年(1)

我的朋友

分类: Python/Ruby

2010-03-01 14:17:09



Hints:
   1. 图片下方有一串字符“len(a[30]) = ?“,可以猜出跟数组/列表有关。
   2. 把鼠标放到图片上可以发现有一个链接,点击链接后出现一串数字:“a = [1, 11, 21, 1211, 111221, ”。从这我们可以看出是需要我们找出这些数字的规律,然后算出第第三十个数字a[30]的长度。

通过查询资料发现可以利用python  的 函数来实现。

itertools.groupby()函数接受一个序列和一个key 函数, 并且返回一个生成二元组的迭代器。每一个二元组包含key_function(each item)的结果和另一个包含着所有共享这个key结果的元素的迭代器

import itertools

def next_morris(number):
    return ''.join('%s%s'%(len(list(group)),digit)
                   for digit,group in itertools.groupby(str(number)))



if __name__=="__main__":
    start=1
    a=[1]
    i=0
    while i<31:
        next_num=next_morris(a[i])
        a.append(next_num)
        i+=1
    print len(a[30])


阅读(398) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~