Imprime tu código


37

Entrada

no hay entrada para este desafío

El reto

Escriba un código que genere:
Los primeros 10 números primos cuya suma de sus dígitos es igual al número de bytes de su código

Ejemplos

Digamos que su código es el Co&%423@k"oo"que 13 bytes
debe generar su código, [67, 139, 157, 193, 229, 283, 337, 373, 409, 463]
esos son los primeros 10 números primos cuya suma ... ¡está bien!

Si su código es 8 bytes, debe generar[17, 53, 71, 107, 233, 251, 431, 503, 521, 701]

Reglas

Solo debe usar los primeros 10 ^ 8 números primos, lo
que significa que todos sus números deben ser <2038074743 = 10 ^ 8º primo

Si no puede encontrar 10 números primos en este rango que se ajusten a sus bytes, entonces tendrá que ajustar su código (¡incluso puede que tenga que agregar algunos bytes!) Para encontrar un " número de bytes de trabajo "

Simplemente envíe los 10 primos de la forma que desee

Este es el , por lo que gana el código más corto en bytes.


1
No puedo editar el comentario, así que solo estoy borrando y volviendo a publicar: aquí hay un resumen que contiene los números primos que necesitarías para un determinado bytecount, así como sus índices: enlace Como lo hice ingenuamente, solo verifiqué las sumas a los primeros 10 ^ 7 primos. Como algunas respuestas han mencionado, faltan valores que probablemente se correlacionan con sumas digitales inalcanzables, aunque para sumas más grandes este puede no ser el caso (recuerde, solo verifiqué los primeros 10 ^ 7 primos).
cole

"de cualquier forma que desee" : ¿deben ordenarse los números primos?
Arnauld

@Arnauld No, pero deben ser los 10 más pequeños en cualquier orden

1
@KevinCruijssen Aunque su respuesta no es válida, puede publicarla para tener una discusión con otros miembros para ayudarlo a encontrar una mejor.

1
@TessellatingHeckler También creo que el límite de 10 ^ 8 es bastante arbitrario. Para verificar que diez números dados tienen una suma de dígitos 350, y todos son números primos, deben ser rápidos. Sin embargo, supongo que verificar que esos diez son, de hecho, los más pequeños posibles, podría ser más difícil.
Jeppe Stig Nielsen

Respuestas:


15

Neim , 10 8 7 bytes

-1 byte gracias a ASCII-only.

πᛦ𝐋Λ𝐬7𝔼

Pruébalo en línea!

Salidas:

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

Esto (bueno, al menos el enfoque) es irrefrenable.

Explicación

πᛦ𝐋Λ𝐬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
mejor hasta ahora .. !!!

νᛦ𝐋Λ𝐬7𝔼para 7 ... editar: π-> ν: p
Jonathan Allan

@ JonathanAllan Parece que has sido ninja de ASCII solamente. ;)
totalmente humano

Wow, ¿realmente hay una instrucción para empujar los primeros n primos? ¡Ordenado!
isaac9A

9

Jalea , 14 bytes

‘ÆNDS=14ø⁵#‘ÆN

Pruébalo en línea!

Esto imprime:

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

Cómo funciona

‘Æ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
conseguir esos primos!
undergroundmonorail

6

Pyth , 14 bytes

.f&qsjZT14P_ZT

Pruébalo aquí

Esto es 14 bytes e imprime:

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

Pyth , 16 bytes

.f&qssM`Z16P_ZTZ

Pruébalo aquí!

Tenga en cuenta que esto podría ser 15 bytes: .f&qssM`Z16P_ZTZpero no hay primos que tengan 15 como la suma de sus dígitos, ya que 15es divisible por 3, lo que implicaría que el número también sería divisible por 3, por lo tanto, no es primo.

Tiene 16 bytes de longitud e imprime:

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

¿Cómo?

Explicacion 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.

Explicacion 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
¡Bien hecho! y rápido!

"Muy pocos enteros primos que tienen 15 como la suma de sus dígitos" - de hecho, porque una suma de dígitos divisible por 3 implica divisibilidad por 3 :)
Lynn

@ Lynn Oh, claro> _> - Estoy tonto, lo siento. Solucionado
Sr. Xcoder

6

Casco , 13 bytes

↑10fȯ=13ΣdfṗN

Pruébalo en línea!

Explicació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.

Casi lo jugó a 10 bytes, pero uno de los resultados es incorrecto :( tio.run/##yygtzv7//1HbREODtPxDyywftU04sqHg/38A
Leo

@Leo Heh, sería muy bueno si eso funcionara :)
Martin Ender

6

Haskell , 77 71 bytes

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

Pruébalo en línea!

Guardado 6 bytes gracias a Laikoni

Para 71 bytes:

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

todos sus números deben ser <2038074743

1999999999 es el número con la suma máxima de dígitos en el rango permitido, y esa suma es 82. Cualquier programa que supere los 82 bytes no satisfará la condición. Espero que 77 bytes estén bien, pero no sé (todavía se está ejecutando en mi computadora).

EDITAR: una versión ligeramente optimizada dio 77 bytes:

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

6

Jalea ,  14  13 bytes

DS⁼13
.ȷÆRÇÐf

Pruébalo en línea!

¿Cómo?

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 bytes

83LØʒSOTQ}

Pruébalo en línea!

El }se utiliza como relleno, ya que 9 es un recuento de bytes no válido.

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

Explicación

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

Casi 8 bytes

Esto sería válido si un byte más pudiera ser eliminado.

žyLØʒSO8Q

Pruébalo en línea!

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

Explicación

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

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

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

gracias a @No es un árbol para -6 bytes


1
Puedes decir Selectcuántas cosas quieres devolver:Select[Prime@Range[10^6],Tr@IntegerDigits@#==52&,10]
No es un árbol

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

2

J, 29 bytes

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

Pruébalo en línea!

Definitivamente funciona en REPL, probablemente también funciona en un programa regular (no estoy seguro de cómo J genera resultados para que los programas sean honestos).

Primer paso, no particularmente ideal, pero no puedo pensar en enfoques más inteligentes. Voy a investigar el hardcoding de una secuencia más pequeña.

Explicación

(#~(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 garantiza que solo se utilizarán los primeros 10 primos cuya suma digital sea 29.


2

V , 73 71 bytes

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

Pruébalo en línea!

Compresión de reemplazo de subcadena simple: verifiqué todas las salidas de respuesta posibles y luego hice algunas pruebas de "cuál tiene un reemplazo de cadena simple que guarda la mayoría de los caracteres". por ejemplo, generar esta tabla . [editar: volví a mirar la mesa y vi que podía hacer la versión de 71 bytes].

Los primos más altos tienen más tiradas largas de 9, y lo mejor que encontré fue donde los dígitos suman 73, el patrón 89999 -> 1 char reduce el texto de 99 bytes a 63 bytes. Encontrar una forma de deshacer 'a' -> '89999' en los 10 bytes restantes me llevó a V.


1

Japt , 19 bytes

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

Pruébalo


Explantacion

L²õ

Genere una matriz de enteros ( õ) de 1 a 100 ( L) al cuadrado.

f_          Ã

Filter ( f) pasando cada uno a través de una función, donde Zestá el elemento actual.

j

Comprueba si Zes primo.

©

Lógico Y ( &&).

Zìx

Dividir Zen una matriz de dígitos ( ì) y reducir mediante la suma ( x).

¥19

Verifique la igualdad con 19.

¯A

Cortar ( ¯) al décimo elemento y generar implícitamente la matriz resultante.


1

Japt , 19 bytes

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

Pruébalo en línea! con la -Qbandera para formatear la matriz.

Emite los primeros 10 primos cuyos dígitos se suman a 19:

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

Tenga en cuenta que esto podría ser golfizado a 18 bytes ( ì xìx), pero no existen números primos con una suma de 18 dígitos.

Explicación

Asigne la matriz [0, ..., 9]mediante la siguiente función, donde Xestá el valor actual.

  _              }a

Devuelve el primer entero que devuelve verdadero de la siguiente función, donde Zes el valor actual

   j ©

Compruebe si este número es primo y ...

      19¥Zì x

La suma ( x) de los dígitos ( ì) en Zigual a ( ¥) 19,

              «X´

Y Xes falso ( «es "y no", o &&!). Esto también disminuye X( ´).

La matriz resultante se emite implícitamente.


Oh bien; Nos vinculamos con diferentes enfoques.
Shaggy

1

PARI / GP, 40 bytes

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

No hay mucho golf al respecto (seleccione aquellos xcon la suma de los dígitos 40 entre los primeros 8600 primos). Salida es:

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


1

Ruby 2.4.1, 74 bytes

Nunca iba a superar uno de los lenguajes optimizados de Codegolf, pero aún así fue divertido hacerlo en Ruby. Frustrante que Prime no está en Core sino en la biblioteca estándar. También estoy frustrado porque no puedo vencer a 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 bytes (CP-1252)

5h¶fφTBŠT=

Pruébalo en línea!

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

Algo cuestionable ya que imprime todos los números sin separador entre ellos. Un programa de 11 bytes que imprime cada número en una línea separada:

nIè¶fφTBŠE=

Lo único que vale la pena mencionar es el límite superior que es un poco más difícil de construir: es 18² = 324.


0

Chicle , 37 bytes

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....

Pruébalo en línea!

La salida es 29989,39799,39979,48799,48889,49789,56989,58699,58789,58897

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.