コードを盛り上げる


37

入力

このチャレンジの入力はありません

チャレンジ

出力するコードを書く:
数字の合計がコードのバイト数に等しい最初の10個の素数

のは、あなたのコードがあるとしましょうCo&%423@k"oo"である13 bytes
、あなたのコードを出力しなければならないが[67, 139, 157, 193, 229, 283, 337, 373, 409, 463]
、それらは、その合計.... [OK]をあなたはそれを得た最初の10個の素数です!

コードがの場合、8 bytes出力する必要があります[17, 53, 71, 107, 233, 251, 431, 503, 521, 701]

ルール

最初の10 ^ 8素数のみを使用する必要があります
。つまり、すべての数字は<2038074743 = 10 ^ 8th素数でなければなりません

あなたがいる場合、この範囲内の10個の素数を見つけることができません、あなたのバイトに合わせて、あなたは「見つけるために(あなたも、いくつかのバイトを追加する必要がある可能性があります)あなたのコードを調整する必要がありますバイトの作業数を

10個の素数を好きなように出力するだけです

これはなので、バイト単位の最短コードが勝ちです!


1
コメントを編集できないので、私はただ削除して再投稿しています:これは、特定のバイトカウントとそのインデックスに対して出力する必要がある素数を含む要点です:link最初の10 ^ 7素数まで。いくつかの答えが言及したように、達成不可能なデジタル合計と相関する可能性が高い欠損値がありますが、より大きな合計ではこれは当てはまらない可能性があります(最初の10 ^ 7素数のみをチェックしたことを思い出してください)。
コール

「好きなように」:素数を注文する必要がありますか?
アーナルド

@Arnauldいいえ、ただし、それらは任意の順序で10より小さい必要があります

1
@KevinCruijssenあなたの答えは無効ですが、他のメンバーと議論をしてより良いものを見つけるのを助けるために、それを投稿することを歓迎します。

1
@TessellatingHecklerまた、10 ^ 8カットオフはかなりrather意的だと思います。与えられた10個の数値がすべて数字の合計350を持ち、すべてが素数であることを検証するには、高速である必要があります。しかし、これらの10個が実際に可能な限り最小であることを確認することは、より困難になる可能性があります。
スティグニールセン

回答:


15

ニーム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
ジョナサンアラン

@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
それらの素数を取得します!
地下

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確かに> _>-バカ、ごめんなさい。修正済み
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バイトにゴルフしましたが、結果の1つが間違っています:( tio.run/##yygtzv7//1HbREODtPxDyywftU04sqHg/38A
レオ

@レオへー、それがうまくいけばとてもきれいだろう:)
マーティン・エンダー

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]



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バイト

これは、もう1バイトゴルフすることができる場合に有効です。

ž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}

-6バイトのツリーではなく@Not


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文字がテキストを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)の数字の合計を持つ素数は存在しない。

説明

[0, ..., 9]次の関数で配列をマッピングしXます。ここで、は現在の値です。

  _              }a

次の関数からtrueを返す最初の整数を返します。Z現在の値は

   j ©

この数が素数かどうかを確認し、...

      19¥Zì x

等しい()19のx数字(ì)の合計()Z¥

              «X´

そしてX、偽りです(«「ではない」、または&&!)。これも減少します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に最適化された言語の1つに勝る​​ものはありませんでしたが、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です。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.