Locked. This question and its answers are locked,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。








现在是星期天,是时候进行标准高尔夫比赛了!

挑战

根据字符数编写最短的源代码,以确定输入数字是“幸福的素数”,“悲伤的素数”,“幸福的非素数”还是“悲伤的非素数”。

输入值

输入应该是来自命令行参数或stdin的整数。不必担心处理大数,但是如果可以/想要,请这样做。对于小于1的输入值,行为是不确定的,但是1的结果是确定的。

输出量

输出应打印数字类型:“快乐素数”,“悲伤素数”,“快乐非素数”或“悲伤非素数”。尾随换行符是可选的。

例子
$ happyprime 139
happy prime
$ happyprime 2
sad prime
$ happyprime 440
happy non-prime
$ happyprime 78
sad non-prime

定义

以防万一您的大脑需要复习。

快乐号码

从维基百科,



例如,

139章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

  • 素数

    prime number是大于1的整数,并且正好有两个除数:1和它本身。

    快乐总理

    因此,幸福的素数既是幸福的又是素数。

    答案选择

    显然,答案将是按字符数计算的最短源代码,在我测试的所有情况下,该源代码都会输出指定的结果。一旦下一次(社区决定)高尔夫挑战赛代码来临,我将标记答案,因此我们可以将所有精力都集中在这个问题上。 :)

    决断

    好吧,看来小镇上已经有一个新的代码高尔夫,这个问题已经发布了大约一个星期,所以我已将最短的源代码标记为答案(nibbler的64个字符的Golfscript解决方案)。也就是说,我既喜欢belisarius的99个字符的Mathematica解决方案,也喜欢Nabb的神秘的107个字符的dc解决方案。

    对其他所有人来说,辛苦了!我的计算机上从来没有这么多编程语言环境。我希望每个人都可以针对自己喜欢的语言学到一些新的,肮脏的技巧。

    重用

    我已经重新发布了这场比赛产生的一些代码,作为我编写的脚本示例,以针对auto-grading的引用实现测试各种程序。该目录中的README文件说明了源代码的来源,并指出所有代码均已根据CC BY-SA 2.5许可证(如SO的legal section中所述)重新使用。每个目录在提交时都标有您的显示名称。

    如果您对以这种方式或归因方式重新使用代码有疑问,请告诉我们,我将纠正错误。

    最佳答案

    GolfScript-64个字符(适用于1个字符)

    ~:@.{0\`{15&.*+}/}*1=!"happy sad "6/=@,{@\)%!},,2=4*"non-prime">
    

    该程序执行n迭代来确定数字的幸福感,这对于大量数字是非常浪费的,但是代码高尔夫并不是要节省字符以外的资源。最初的测试效率低下-将n除以1n(包括所有值)中的所有值,然后检查是否有两个值正好为零。因此,尽管从理论上讲是正确的,但在真实计算机上运行大量数字并不现实

    GolfScript-63个字符(失败1次)
    ~:@9{0\`{15&.*+}/}*1=!"happy sad "6/=@,2>{@\%!},!4*"non-prime">
    

    关于language-agnostic - Code Golf:快乐的Prime!,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3543811/

    10-13 02:11