启动代码


37

输入值

对此挑战没有投入

挑战

编写一个输出以下代码的代码:
前10个质数,它们的数字之和等于代码的字节数

例子

假设您的代码是Co&%423@k"oo",这是13 bytes
您的代码必须输出的[67, 139, 157, 193, 229, 283, 337, 373, 409, 463]
那些是前10个质数的总和。。。

如果您的代码是8 bytes,则必须输出[17, 53, 71, 107, 233, 251, 431, 503, 521, 701]

规则

只能使用前10个8质数
,这意味着您所有的数字都必须小于2038074743 = 10 8个质数

如果在此范围内找不到10个适合字节的质数,则必须调整代码(甚至可能需要添加一些字节!)才能找到“ 有效字节数

只需以您喜欢的任何方式输出10个素数

这是,所以最短的代码以字节为单位!


1
无法编辑评论,所以我只删除并重新发布:这是一个要点,其中包含您需要为给定的字节数输出的质数及其索引:link因为我天真地做过,所以我只检查了总和到前10 ^ 7个素数。就像已经提到的一些答案一样,存在一些可能与无法实现的数字总和相关的缺失值,尽管对于较大的总和可能并非如此(请记住,我只检查了前10个7个素数)。
科尔于2008年

“以您喜欢的任何方式”:是否需要订购素数?
Arnauld

@Arnauld否,但它们的顺序必须小10个

1
@KevinCruijssen尽管您的回答无效,但是欢迎发布该问题,以便与其他成员进行讨论,以帮助您找到一个更好的答案。

1
@TessellatingHeckler我也认为10 ^ 8的临界值是相当随意的。为了验证十个给定的数字都具有数字总和350,并且都是质数,应该快。但是,我想验证这十个实际上是最小的可能更困难。
杰普·斯蒂格·尼尔森

Answers:


15

Neim10 8 7 字节

-1字节(仅使用ASCII)。

πᛦ𝐋Λ𝐬7𝔼

在线尝试!

输出:

[7 43 61 151 223 241 313 331 421 601]

这(至少是这种方法)是行不通的。

说明

πᛦ𝐋Λ𝐬7𝔼

π        push 13 (yes, very unintuitive :P)
 ᛦ       square (13² = 169)
  𝐋      push the first 169 primes
   Λ     filter those that when the following are executed, evaluate to 1
    𝐬    sum its digits and...
     7𝔼  check for equality against 7

2
到目前为止最好.. !!!

νᛦ𝐋Λ𝐬7𝔼为7 ...编辑:π-> ν:p
乔纳森·艾伦

@JonathanAllan看来您已经被纯ASCII忍者了。;)
totallyhuman

哇,真的有指令要推动前n个素数?整齐!
isaac9A

9

果冻,14字节

‘ÆNDS=14ø⁵#‘ÆN

在线尝试!

打印:

[59, 149, 167, 239, 257, 293, 347, 383, 419, 491]

这个怎么运作

‘ÆNDS=14ø⁵#‘ÆN
          #     Count the first 
         ⁵        10
                Non-negative integers which meet:
‘ÆN               the (z+1)-th prime  (1-indexed :*()
   D              digits
    S             sum
     =            equals
      14          14
           ‘ÆN  Get those primes

8
得到那些素数!
Undergroundmonorail

6

Pyth,14个字节

.f&qsjZT14P_ZT

在这里尝试。

这是14个字节并打印:

[59, 149, 167, 239, 257, 293, 347, 383, 419, 491]

Pyth,16个字节

.f&qssM`Z16P_ZTZ

在这里尝试!

请注意,这可能是15个字节:.f&qssM`Z16P_ZTZ,但是没有素数的总和为15,因为它们可以15被整除3,这意味着该数字也可以被整除3,因此不是素数。

这是16个字节长,并打印:

[79, 97, 277, 349, 367, 439, 457, 547, 619, 673]

怎么样?

说明1

.f&qsjZT16P_ZT - Full program.

.f&           T  - First 10 numbers that satisfy the following:

           P_Z     - Are prime and
    sjZT           - And their sum of digits
   q     14        - Equals 14.

说明2

.f&qssM`Z16P_ZTZ - Full program.

.f&           T  - First 10 numbers that satisfy the following:

           P_Z     - Are prime and
    ssM`Z          - And their sum of digits
   q     16        - Equals 16.

1
做得好!又快!

“很少有以15为总和的整数作为整数” –确实,因为被3整除的数字总和意味着被3除数了:)
Lynn

@琳恩哦,确定> _>-我很傻,对不起。已修正
Xcoder先生17年

6

外壳,13个字节

↑10fȯ=13ΣdfṗN

在线尝试!

说明

            N    Take the (infinite) list of all natural numbers.
          fṗ     Select only the primes.
   fȯ            Filter again by the result of composing the following three functions:
         d         Get the decimal digits.
        Σ          Sum them.
     =13           Check whether the sum equals 13.
↑10              Take the first 10 primes in the result.

几乎打高尔夫球到10个字节,但结果之一是错误的:( tio.run/##yygtzv7//1HbREODtPxDyywftU04sqHg/38A
Leo

@Leo Heh,如果可行的话会非常整洁:)
Martin Ender

6

Haskell77 71字节

x=take 10[i|i<-[1..],sum(read.pure<$>show i)==71,all((>0).rem i)[2..i-1]]

在线尝试!

感谢Laikoni,节省了6个字节

对于71个字节:

[89999999,99899999,99998999,99999989,189989999,189998999,189999989,197999999,199898999,199979999]

您所有的电话号码必须为<2038074743

1999999999是最大数字总和在允许范围内的数字,该总和为82。超过82个字节的任何程序均不满足该条件。我希望77字节是可以的,但我不知道(它仍在我的计算机上运行)。

编辑:略微优化的版本为77字节:

[699899999,779999999,788999999,789999989,797999999,798899999,799898999,799899899,799999799,879999899]

6

果冻 14  13 字节

DS⁼13
.ȷÆRÇÐf

在线尝试!

怎么样?

DS⁼13 - Link 1, test digit sum equals thirteen: number, n
D     - get a list of the decimal digits of n
 S    - sum them
  ⁼13 - equals thirteen?

.ȷÆRÇÐf - Main link: no arguments
.ȷ      - literal 500
  ÆR    - prime range (all primes less than or equal to 500)
     Ðf - filter keep if:
    Ç   -   call last link (1) as a monad


5

05AB1E,10个字节

83LØʒSOTQ}

在线尝试!

}被用作填充物,因为图9是一个无效字节计数。

输出: [19, 37, 73, 109, 127, 163, 181, 271, 307, 433]

说明

83L        Push array [1, ..., 83], since 433 is the 83rd prime
   Ø       Map each to the nth prime
    ʒ      Get elements that return 1
     SO     When the sum of the digits
        Q   Equals
       T    10

几乎8个字节

如果可以再打一个字节,这将是有效的。

žyLØʒSO8Q

在线尝试!

输出: [17, 53, 71, 107, 233, 251, 431, 503, 521, 701]

说明

žy          Push number 128, since 701 is the 125th prime
  L         Push array [1, ..., 128]
   ØʒSO8Q   Map to nth primes and filter to those with a digit sum of 8 (see above)

3

Mathematica,52个字节

Select[Prime@Range[10^6],Tr@IntegerDigits@#==52&,10]

{799999,998989,999979,1789999,1798999,1979899,1989979,1997899,1999969,2599999}

thanx到@不是-6个字节的树


1
您可以告诉Select您要返回多少东西:Select[Prime@Range[10^6],Tr@IntegerDigits@#==52&,10]
不是一棵树

1
Select[Prime@Range[77705],Tr@IntegerDigits@#==50&]
林恩

2

J,29个字节

(#~(29=[:+/"."0@":)"0)p:i.872

在线尝试!

绝对可以在REPL上运行,也可以在常规程序上运行(说实话,不确定J如何输出程序)。

第一次通过,虽然不是特别理想,但是我想不出任何更聪明的方法。要研究对较小序列进行硬编码。

说明

(#~(29=[:+/"."0@":)"0)p:i.872
                      p:i.872  First 872 primes
 #~                            Filter by
   (29=[:+/"."0@":)"0            Digital sum = 29
                   "0              For each
                ":                 Convert to string
           "."0                    Convert each character to a number
         +/                        Sum results
    29=                            Equate to 29

872确保仅使用数字和为29的前10个素数。


2

V73 71字节

i8aa9
998a99
a98a
aa89
18998a9
18a8a
18a9989
197aa
199898a
1a7a9Ía/999

在线尝试!

简单的子字符串替换压缩-我检查了所有可能的答案输出,然后进行了一些“哪一个可以通过简单的字符串替换来保存大多数字符”的测试。例如生成这张表。[编辑:我再次看了看表,发现我可以改用71字节的版本]。

较高的质数在其中具有9的更长的运行时间,而我发现的最好的是数字加起来为73,模式89999-> 1 char使文本从99字节减少到63字节。找到一种方法来撤消剩余10个字节中的'a'->'89999',使我转向V。


1

Japt,19个字节

L²õ f_j ©Zìx ¥19ïA

测试一下


外植体

L²õ

生成一个õ从1到100(L)平方的整数()数组。

f_          Ã

f通过使每个函数传递一个函数来过滤(),其中Z,当前元素为。

j

检查是否Z是素数。

©

逻辑与(&&)。

Zìx

拆分Z为一个数字数组(ì),并通过加法(x)减少。

¥19

使用来检查是否相等19

¯A

将(¯)切片到第10个元素,并隐式输出结果数组。


1

Japt,19个字节

AÆ_j ©19¥Zì x «X´}a

在线尝试!带有-Q用于格式化数组的标志。

输出前十个素数,其数字加到19

[199, 379, 397, 487, 577, 739, 757, 829, 883, 919]

请注意,可以将其打成18个字节(ì xìx),但是不存在数字总和为18的质数。

说明

[0, ..., 9]通过以下函数映射数组,其中X当前值为。

  _              }a

从下面的函数返回第一个返回true的整数,其中Z当前值是

   j ©

检查此数字是否为质数,然后...

      19¥Zì x

等于()19 x的数字(ì)的总和(),Z¥

              «X´

并且X是虚假的(«是“ and not”或&&!)。这也会减少X´)。

结果数组隐式输出。


不错哦; 我们用不同的方法捆绑在一起。
毛茸茸的

1

PARI / GP,40个字节

select(x->sumdigits(x)==40,primes(8600))

高尔夫运动不多(x在前8600个素数中选择数字总和为40的那些)。输出为:

[49999, 68899, 69997, 77899, 78889, 78979, 79699, 79987, 85999, 88789]


1

Ruby 2.4.1,74字节

我从来没有击败过Codegolf优化的语言之一,但是用Ruby来做仍然很有趣。令人沮丧的是,Prime不在Core中,而是在标准库中。我也无法击败Haskell,这让我感到沮丧。

2.4.1 :014 > require'prime';2.step.lazy.select{|n|n.digits.sum==74&&n.prime?}.first(10)
=> [389999999, 398999999, 498989999, 498998999, 499898999, 499899989, 499979999, 499989989, 579989999, 588999899]

0

Paradoc(v0.2.7 +),10个字节(CP-1252)

5h¶fφTBŠT=

在线尝试!

5h         .. 5 hundred
  ¶        .. Check if a number is prime...
   f       .. ...filter by the preceding block; converts 500
           .. to the range [0, 1, ..., 499]
    φ      .. Filter by the following block:
     T     .. Ten
      B    .. Base; convert to base-10 digits
       Š   .. Sum, resulting in the digit sum
        T  .. Ten
         = .. Check if (the digit sum and ten are) equal

由于它打印所有数字且它们之间没有分隔符,因此有些问题。一个11字节的程序,在单独的行上打印每个数字:

nIè¶fφTBŠE=

唯一值得一提的是它的上限稍难构建:18²= 324。


0

泡泡糖,37个字节

00000000: 0dc6 3901 4031 0c80 5043 9dfe 9180 7f63  ..9.@1..PC.....c
00000010: 6579 f028 9ed7 352d e7a3 4f48 37ff 9164  ey.(..5-..OH7..d
00000020: 4c96 04f7 02                             L....

在线尝试!

输出是 29989,39799,39979,48799,48889,49789,56989,58699,58789,58897

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.