r“”OEIS序列号A005374的Python模块。a(0)=0;对于n>0,a(n)=n-a(a(a)(n-1))。使用示例。----------------------------------------------------------------------->>>从005374导入*>>>打印005374_列表(18)[0, 1, 1, 2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 9, 10, 10, 11, 12]>>>打印005374_偏移0>>>对于a005374_list_pairs(6)中的x:…打印x...(0, 0)(1, 1)(2, 1)(3, 2)(4, 3)(5, 4)>>>a005374_列表_最多(9)[0, 1, 1, 2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 9]>>>打印a005374(200)136>>>a005374_列表(136)[199, 200]-----------------------------------------------------------------------"""从itertools导入islice、izip、takewhile、count__all__=('005374_offset','00537_list','A5374_list_pairs',“a005374_list_upto”,“a0053704”,“a 005374_ gen”,“b 005374__ list_inv”)__author__='尼克·霍布森'a005374_offset=偏移=0定义a005374_gen():“”“OEIS序列A005374的生成器功能。”“”a={0:0}产生a[0]对于计数(1)中的n:a[n]=n-a[a[a[n-1]]]产量a[n]定义a005374_list(n):“”“返回前n>=0项的列表。”“”如果n<0:raise ValueError,'输入必须是非负整数'返回列表(islice(a005374_gen(),n))定义a005374_list_pairs(n):“”“返回第一个n>=0项的元组(n,a(n))列表。”“”如果n<0:raise ValueError,'输入必须是非负整数'返回列表(izip(xrange(偏移量,n+offset),a005374_gen()))定义a005374_列表最多(m):“”“返回所有不超过m>=0的术语的列表。”“”如果m<0:raise ValueError,'输入必须是非负整数'返回列表(takewhile(lambda t:t<=m,a005374_gen()))定义a005374(n):“”“返回索引n>=0;偏移量为0的术语。”“”如果n<offset:raise ValueError,'输入必须是整数>=offset='+str(offset)返回列表(islice(a005374_gen(),n-offset,n-offset+1)).pop()定义a005374_list_inv(m):“”“返回a(n)=m>=0的所有索引n的列表。”“”如果m<0:raise ValueError,'输入必须是非负整数'r、 n=[],0对于a005374_gen()中的x:如果x>m:断裂如果x==m:r.append(n)n+=1返回r