这是周日,一轮代码高尔夫的时间!
通过字符计数写出最短的源代码,以确定输入数字是"幸福素数","悲伤素数","快乐非素数"还是"悲伤非素数".
输入应该是来自命令行参数或stdin的整数.不要担心处理大数字,但如果可以/想要这样做.对于小于1的输入值,行为将是未定义的,但是1具有明确的结果.
输出应该打印数字的类型:"快乐素数","悲伤素数","快乐非素数"或"悲伤的非素数".尾随换行符是可选的.
$ happyprime 139
happy prime
$ happyprime 2
sad prime
$ happyprime 440
happy non-prime
$ happyprime 78
sad non-prime
Run Code Online (Sandbox Code Playgroud)
以防你的大脑需要复习.
来自维基百科,
甲快乐数由下面的过程来定义.从任何正整数开始,将数字替换为其数字的平方和,并重复该过程,直到数字等于1(它将保持不变),或者在一个不包括1的循环中无休止地循环.这些数字这个过程在1结束的是快乐的数字,而那些不以1结尾的是不愉快的数字(或悲伤的数字).
例如,
是否有一种好的,简洁的/内置的方式来查看迭代中的所有值是否为零?现在我正在使用all()一个小列表理解,但(对我来说)似乎应该有一个更具表现力的方法.我认为这有点等同memcmp()于C.
values = (0, 0, 0, 0, 0)
# Test if all items in values tuple are zero
if all([ v == 0 for v in values ]) :
print 'indeed they are'
Run Code Online (Sandbox Code Playgroud)
我希望内置函数可以执行以下操作:
def allcmp(iter, value) :
for item in iter :
if item != value :
return False
return True
Run Code Online (Sandbox Code Playgroud)
这个函数是否存在于python中,我只是盲目的,或者我应该坚持使用我的原始版本?
我不是说这allcmp()是解决方案.这是我认为可能更有意义的一个例子.这不是我建议Python的新内置插件的地方.
在我看来,all()这不是那么有意义.它没有表达"所有"正在检查的内容.你可以假设它all()采用了一个可迭代的,但它没有表达函数正在寻找的东西(一个可迭代的bools测试所有它们True).我要求的是像 my allcmp()这样的函数,它有两个参数:一个可迭代的和一个比较值.我在问是否有内置函数可以执行与我编写的类似的操作allcmp(). …