Otra secuencia, otro desafío. *
Definición
Un primo p
está en esta secuencia, llamémoslo A
, si por cada dígito d
en p
la expansión decimal de, reemplaza d
con d
copias de d
y el entero resultante sigue siendo primo; los ceros no están permitidos.
Por ejemplo, 11
es trivial en esta secuencia (es el primer número, por cierto). El siguiente en la secuencia es 31
, porque 3331
también es primo; entonces 53
porque 55555333
también es primo, y así sucesivamente.
Desafío
Dada una entrada n
, devuelve A(n)
, es decir, el n
elemento th en esta secuencia.
Ejemplos
Aquí están los primeros 20 términos para comenzar. Este es A057628 en OEIS.
11, 31, 53, 131, 149, 223, 283, 311, 313, 331, 397, 463, 641, 691, 937, 941, 1439, 1511, 1741, 1871
Esto significa A(0) = 11
, A(1) = 31
etc., cuando se usa la indexación cero.
Reglas
- Puede elegir indexación basada en cero o en una; especifique en su respuesta cuál.
- En lugar de devolver solo el
n
elemento th, puede optar por devolver los primerosn
términos. - Puede suponer que la entrada / salida no será mayor que el formato entero nativo de su idioma; sin embargo, el primer dígito repetido puede ser mayor que el formato nativo de su idioma, por lo que será necesario tenerlo en cuenta.
- Por ejemplo,
1871
el último número de ejemplos tiene un primo correspondiente de18888888877777771
, que es bastante más grande que el INT32 estándar. - Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- La salida puede ser a la consola, devuelta desde una función, mostrada en una ventana emergente de alerta, etc.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
* Para ser justos, se me ocurrieron los primeros términos de la secuencia jugando con algunos números, y luego fui a OEIS para obtener el resto de la secuencia.
fuente
169
sí mismo no es primo, lo es13 * 13
.Respuestas:
Casco , 15 bytes
Pruébalo en línea!
Erik el Outgolfer salvó un byte. Usar en
ṗ
lugar deεp
guardaría otro byte, pero eso hace que el programa sea tan lento que incluso iguala para n = 2.fuente
ṗ
en el intérprete, es una locura cómo es más lento que encontrar todos los factores primos ...05AB1E ,
1413 bytes-1 byte gracias a Emigna !
Pruébalo en línea!
Explicación
fuente
Jalea ,
1814 bytesPruébalo en línea!
Sr. Xcoder: -1 Byte (lógico todo)
Erik the Outgolfer: -2 Bytes (una línea en lugar de dos)
HyperNeutrino: -1 Byte (devuelve los primeros n elementos de secuencia)
Explicación
Editar: originalmente envió una respuesta que incluía números con 0 en su representación decimal, lo que específicamente no está permitido.
fuente
Wolfram Language (Mathematica) , 100 bytes
Pruébalo en línea!
Jonathan Frech ahorró 3 bytes
y -7 bytes de JungHwan Min
-15 bytes de Martin Ender
También gracias a Jenny Mathy
fuente
Alice ,
7270666256 bytesGracias a Leo por guardar 5 bytes.
Pruébalo en línea!
Utiliza una entrada basada en 1.
Explicación
El truco más aseado golf aquí (aunque sólo ahorra un par de bytes) es que estoy usando un test de primalidad que da
0
de compuesto n paran
para no compuesto n . De esa manera, no tenemos que usar el resultado directamente en un condicional, pero podemos pasarlo directamente a la siguiente parte que verifica que la entrada no contenga ceros.fuente
Python 2 , 130 bytes
Pruébalo en línea!
Python 2 ,
195179167140138136135134 bytesxrange
lugar derange
, evitando así aMemoryError
y compactando la función principal; mejorando el conteo de índices enteros.|
para guardar bytesor
.~-
lugar de0**
invertir la existencia de un cero enj
,&
seguido de un valor booleano verdadero, se aísla la propiedad booleana de este valor.~-A&B&C
(equivalente a(not A) and B and C
) conA, B, C
ser booleanosA<B==C
.Pruébalo en línea! (1 indexado)
Explicación
Define una función principal
f
que toma un índice enteron
y, por defecto, un valor establecidoj
, la secuencia actual canditate (iniciada9
para mejorar el rendimiento manteniendo el tamaño del programa) y una función de comprobación principal.Mientras
n
no sea cero, lan
entrada de la secuencia -ésima aún no se encuentra. Porj
lo tanto, se incrementa yn
se disminuye en uno si fj
es un número que satisface las propiedades requeridas.Cuando finaliza el bucle,
j
es lan
entrada de la secuencia -th y, por lo tanto, se imprime.fuente
Pyth , 21 bytes
Pruébalo aquí!
Más bien largo, ya que Pyth no tiene una expansión decimal incorporada.
.f
), que:.AKjZT
) y (&
) ...*VK`Z
), unidos y convertidos en un entero (ss
) son primos (P_
) y (&
) ...P_
).fuente
e
según una nueva enmienda de la regla.Perl 6 , 51 bytes
Pruébalo en línea!
grep {...}, 2..*
filtra la secuencia infinita de números naturales a partir de 2 utilizando la función de predicado entre llaves.(...)[$_]
indexa en esta lista filtrada utilizando el argumento de la función$_
.!/0/
filtra los números que contienen un dígito cero.S:g/./{$/ x $/}/
replica cada dígito en la expansión decimal del número de prueba.is-prime $_ & S:g/./{$/ x $/}/
llama a lais-prime
función incorporada con una unión y de$_
, el número de prueba y el número resultante de replicar sus dígitos. La función devolverá verdadero si ambos miembros de la unión y son primos.fuente
J, 81 bytes
Esta es una de esas situaciones para las que aún no he encontrado una buena solución J.
Sin embargo, publico esto con la esperanza de aprender algo nuevo.
f
nos dice si un número dado es un "primer dígito repetido". Se descompone de la siguiente manera:Y, finalmente, el principal Do ... Mientras que el verbo, con su molesto, aparentemente inevitable repetitivo, que surge del hecho de que necesitamos usar una lista para almacenar nuestro progreso, que requiere registros "actuales" y "encontrados hasta ahora" , ya que nuestro argumento izquierdo ya está siendo usado para almacenar la condición de parada, es decir,
n
. Esto significa que debemos usar muchos bytes preciosos para la simple tarea de especificar args ([
y]
) y desempaquetar nuestra lista de 2 elementos ({.
y{:
):Pruébalo en línea!
fuente
f
con la función auxiliar envuelta entre paréntesis? Además, intenté jugar golf con la función de ayuda y se me ocurrió1 p:('x',~"."0#])&.":
, que desafortunadamente no excluye con éxito los números primos con '0' en ellos. ¿Que piensas? También tiene que tener la'x',~
parte para obtener una precisión adicional ...(((0>.-)((*&(1&p:)0&e.|10#.#~),.&.":))([,(+*)~)])/^:_@,&2
, el uso10x
de expandir la gama de lo contrario n = 15 se saltará 937