코드 프라임


37

입력

이 도전에 대한 입력이 없습니다

도전

출력하는 코드를 작성하십시오.
자릿수의 합계가 코드의 바이트 수와 같은 첫 10 개의 소수

당신의 코드가 Co&%423@k"oo"어떤 코드인지 를 합시다 . 누가 그 10 개의 소수를 그 숫자로 13 bytes
출력해야 한다고하자 [67, 139, 157, 193, 229, 283, 337, 373, 409, 463]
.... 알았어!

코드가 8 bytes인 경우 출력해야합니다[17, 53, 71, 107, 233, 251, 431, 503, 521, 701]

규칙

당신은 있어야합니다 첫 번째 10 ^ 8 소수를 사용하는
모든 숫자는 <2038074743 = 10 ^ 8 프라임해야 의미

이 경우 이 범위에서 10 개 소수를 찾을 수 없습니다 당신의 바이트에 맞게, 당신은 "찾기 위해 (당신도 몇 바이트를! 추가해야 할 수도 있습니다) 코드를 조정해야합니다 바이트 일 수를 "

그냥 출력 10 개 소수 당신이 좋아하는 어떤 식 으로든

이것은 이므로 바이트 단위의 가장 짧은 코드가 이깁니다!


1
난 그냥 삭제하고 다시 게시하고 있습니다 있도록 할 수 없습니다 편집 주석 : 여기 당신이 아니라 자신의 지표로 주어진 bytecount는의 출력에 필요한하려는 소수를 포함하는 요점이다 : 링크 내가 순진하게 그것을 않았기 때문에, 나는 단지까지 합계 검사 처음 10 ^ 7 소수까지. 일부 답변에서 언급했듯이 달성 할 수없는 디지털 합계와 관련이있을 수있는 누락 된 값이 있지만 더 큰 합계의 경우 그렇지 않을 수 있습니다 (나는 처음 10 ^ 7 소수만 확인했습니다).
Cole

"어떻게 든 원하는대로" : 프라임을 주문해야합니까?
Arnauld

@Arnauld 아니요, 그러나 순서에 관계없이 10보다 작아야합니다

1
@KevinCruijssen 귀하의 답변이 유효하지는 않지만 다른 회원들과 더 나은 회원을 찾을 수 있도록 의견을 게시 할 수 있습니다.

1
@TessellatingHeckler 또한 10 ^ 8 컷오프는 다소 임의적이라고 생각합니다. 주어진 10 개의 숫자가 모두 350의 숫자 합계를 가지며 소수인지 확인하려면 빠릅니다. 그러나 그 열이 실제로 가장 작은 지 확인 하기가 더 어려울 있습니다.
Jeppe Stig Nielsen

답변:


15

Neim , 10 8 7 바이트

ASCII 전용으로 -1 바이트.

πᛦ𝐋Λ𝐬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𝔼for 7 ... 편집 : π-> ν: p
Jonathan Allan

@JonathanAllan ASCII만으로 닌자가 된 것 같습니다. ;)
완전 휴먼

와우 처음 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

@Lynn Oh 물론> _>-바보입니다. 죄송합니다. 고정
Mr. Xcoder

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 바이트로 golfed,하지만 결과 중 하나는 :( 잘못 tio.run/##yygtzv7//1HbREODtPxDyywftU04sqHg/38A
레오

즉 :) 일 경우 훗 @Leo, 아주 깔끔한 것
마틴 청산

6

하스켈 , 77 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

매스 매 티카, 52 바이트

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

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

-6 바이트의 트리가 아닌 @


1
당신은 Select얼마나 많은 것들을 돌려주고 싶은지 알 수 있습니다 :Select[Prime@Range[10^6],Tr@IntegerDigits@#==52&,10]
나무 아님

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

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

V , 73 71 바이트

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

온라인으로 사용해보십시오!

간단한 부분 문자열 대체 압축-가능한 모든 답변 출력을 확인한 다음 "대부분의 문자를 저장하는 간단한 문자열 대체가있는"테스트를 수행했습니다. 예를 들어이 테이블을 생성합니다 . [편집 : 나는 테이블을 다시 보았고 대신 71 바이트 버전을 할 수 있음을 보았습니다.]

높은 소수는 9의 더 긴 런을 가지며, 내가 찾은 가장 좋은 것은 숫자가 73까지 증가하는 곳입니다. 패턴 89999-> 1 문자는 텍스트를 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프라임 인지 확인하십시오 .

©

논리 AND ( &&).

Zìx

Z숫자 배열 ( ì)로 나누고 더하기 ( x)로 줄입니다.

¥19

와 같은지 점검하십시오 19.

¯A

( ¯)를 10 번째 요소로 자르고 결과 배열을 내재적으로 출력합니다.


1

Japt , 19 바이트

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

온라인으로 사용해보십시오! -Q배열을 형식화 하는 플래그 와 함께 .

숫자가 다음에 추가되는 처음 10 개의 소수를 출력합니다 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

x숫자 ( ì) 의 합 ( ) Z은 ( ¥) 19 와 같습니다 .

              «X´

그리고 X거짓입니다 ( «" 아니오 "또는 &&!). 이것 또한 감소합니다 X( ´).

결과 배열이 내재적으로 출력됩니다.


아, 좋아요; 우리는 다른 접근 방식으로 묶었습니다.
Shaggy

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

루비 2.4.1, 74 바이트

Codegolf 최적화 언어 중 하나를 이길 수는 없었지만 루비에서는 여전히 재미있었습니다. 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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.