Dado un gran número (en la base 10), como 1234567891011121314151617, encuentre "subnúmeros" primos en él.
Un "subnúmero" primo es una secuencia consecutiva de dígitos (tomados de la entrada), que representa un número primo (en la base 10).
- Entrada : un número (ya sea una cadena, un archivo o lo que quieras).
- Salida : todos los subnúmeros principales separados de alguna manera (ya sea en una lista, un archivo, cadenas separadas por comas ...) Si el resultado está vacío, puede tomar cualquier convención que desee (cadena codificada, cadena vacía, galimatías, pero el programa no debería choque.
- Ejemplo
1234 -> 2, 3, 23
6542 -> 5, 2
14 -> [.. salida vacía]
Este es el código de golf. ¡El programa más corto gana!
[editar]: regla adicional, el programa debe ser explicado! No todos hablan con fluidez Jelly :)

Respuestas:
05AB1E (heredado) , 3 bytes
Pruébalo en línea!
Subcadenas de la entrada que son primas.
fuente
Perl 6 , 28 bytes
Pruébalo en línea!
El
:exindicador ("exhaustivo") para el operador de coincidenciamhace que devuelva cada coincidencia posible de.+(es decir, cada subcadena de uno o más caracteres), incluso superpuestos. El hiperoperador+«convierte esa lista deMatchobjetos en números, que luego se filtran por primogrep &is-prime.fuente
{+«m:ex/(.+)<?{$0.is-prime}>/}Brachylog , 4 bytes
-1 byte gracias a Kroppeb .
Pruébalo en línea!
ᶠsInd todos los hilos,ˢelegir losṗrimesfuente
sᶠṗˢes un byte más corto. Encuentra todas las subcadenas y devuelve las que son primas. Ver aquí codegolf.stackexchange.com/a/117871/81957Python 2 ,
6665 bytesPruébalo en línea!
fuente
while k<=no, para costar 0 bytes,while~n+kwhiledeclaración? No he visto este tipo de códigos antes. Tampoco he visto el uso de `` , ¿qué hace?while stmt:se ejecutará siempre questmttenga un valor que Python considere verdadero. El único entero falso en Python es0. Por lo tanto, el código se ejecutará como~n+k != 0.~es el operador de complemento bit a bit y~nes equivalente a-n - 1.~n + k != 0<=>-n - 1 + k != 0<=>k != n + 1. Como estamos incrementandokpor1en cada operación,k != n + 1en este caso es equivalente ak <= n.`n`es lo mismo querepr(n)en Python 2. (no funciona en Python 3).Japt ,
1310 bytesGracias @Shaggy -3 bytes
Pruébalo en línea!
fuente
Jalea ,
54 bytes-1 gracias a Kevin Cruijssen (
Ẓes un alias paraÆP)Un enlace monádico que acepta una lista de dígitos * que produce una lista de enteros primos.
* pasando por "una cadena, un archivo o lo que quieras" - para tomar un número entero, prefije el código con
DPruébalo en línea!
¿Cómo?
fuente
ÆPpuede serẒsi no me equivoco?Java 8,
148147 bytesPruébalo en línea.
Explicación:
fuente
MATL , 9 bytes
Pruébalo en línea!
Explicación
fuente
Bash + GNU Core Utils:
8077 BytesEsto no puede ser lo más corto, pero tengo problemas para encontrar algo mejor. ¡Se busca ayudante!
Al apegarme solo a POSIX, obtuve 82:
fuente
R , 60 bytes
Pruébalo en línea!
No es realmente eficiente, inspirado por la respuesta de @ovs python 2
fuente
Python 2 ,
115114 bytesPruébalo en línea!
fuente
if~-n*all(n%i for i in range(2,n))ahorra 4.Casco , 5 bytes
Pruébalo en línea!
fuente
Limpio , 108 bytes
Pruébalo en línea!
fuente
Pyth, 8 bytes
Banco de pruebas
Toma la entrada como una cadena, genera una lista de enteros. También puede tomar la entrada como un
Explicación:intagregando`al final un byte adicional.Y
`solo se convierteintastr.fuente
Wolfram Language (Mathematica) , 40 bytes
Pruébalo en línea!
Entrada y salida son listas de dígitos. En el caso de que no haya subnúmeros primos, se devuelve la lista vacía
{}.Usos
@*paraCompositionde funciones.Subsequencesda una lista de todas las subsecuencias de la entrada, ySelect[PrimeQ@*FromDigits]es una forma de operador de laSelectque se devuelve una lista de todos los elementos para los que sePrimeQ@*FromDigitsdevuelveTrue.fuente
Matlab, 89 bytes
Pruébalo en línea!
fuente