今天是星期天,是时候进行一轮代码高尔夫了!
挑战
按字符数编写最短的源代码,以确定输入数字是“快乐素数”、“悲伤素数”、“快乐非素数”还是“悲伤非素数”。
输入
输入应该是来自命令行参数或标准输入的整数。不要担心处理大数字,但如果你可以/想要的话就这样做。对于小于 1 的输入值,行为将是未定义的,但 1 具有明确的结果。
输出
输出应该打印数字的类型:“快乐素数”、“悲伤素数”、“快乐非素数”或“悲伤非素数”。尾随换行符是可选的。
例子
$ happyprime 139
happy prime
$ happyprime 2
sad prime
$ happyprime 440
happy non-prime
$ happyprime 78
sad non-prime
定义
以防你的大脑需要复习。
快乐号
来自维基百科,
快乐数由以下过程定义。从任何正整数开始,将数字替换为其数字的平方和,然后重复该过程直到数字等于 1(它将保持不变),或者它在不包括 1 的循环中无限循环。那些数字对于这个过程以 1 结尾的数字是快乐的数字,而那些不以 1 结尾的数字是不快乐的数字(或悲伤的数字)。
例如,
- 139
- 1^2 + 3^2 + 9^2 = 91
- 9^2 + 1^2 = 82
- 8^2 + 2^2 = 68
- 6^2 + 8^2 = 100
- 1^2 + 0^2 + 0^2 = 1
质数
素数是大于 1 的整数,并且正好有两个除数:1 和它自己。
快乐总理
因此,快乐素数是一个既快乐又素数的数。
答案选择
显然,答案将是按字符数计算的最短源代码,它在我测试的所有情况下都输出指定的结果。一旦下一个(社区决定的)代码高尔夫挑战出现,我将标记答案,这样我们就可以将所有精力集中在那个挑战上。:)
决定
好吧,看起来城里有一个新的代码 Golf,自从这个问题发布以来已经过去了大约一周,所以我将最短的源代码标记为答案(gnibbler 的 64 字符Golfscript解决方案)。也就是说,我喜欢belisarius 的99 个字符的Mathematica解决方案和Nabb 的神秘的107 个字符的dc解决方案。
对所有其他人来说,伟大的工作!我的计算机上从未有过如此多的编程语言环境。我希望每个人都为自己喜欢的语言学到了一些新的、肮脏的技巧。
重用
我重新发布了本次比赛产生的一些代码,作为我编写的脚本的示例,该脚本用于针对自动评分的参考实现测试各种程序。该目录中的自述文件解释了源代码的来源,并声明所有代码都在 CC BY-SA 2.5 许可下重复使用(如 SO 的法律部分所述)。每个目录在提交时都标有您的显示名称。
如果您对以这种方式或归属方式重复使用的代码有疑问,请告诉我,我会纠正错误。