Estoy hablando de esta pregunta , échale un vistazo si estás un poco confundido.
Tarea principal
Su tarea es generar enteros concatenados, en orden decreciente, pero aumentando el número entero máximo cada vez que golpea 1
(para esta pregunta, 1 se considerará un número primo) . Si bien esto no suena diferente de la primera pregunta, aquí viene la parte difícil: todos los números generados solo pueden ser primos . Estos se unirán en una sola cadena sin espacios ni líneas nuevas. Su entrada también será un número primo .
Ejemplo:
1
21
321
5321
75321
1175321
Valid output:
1213215321753211175321
Entrada
Su código solo puede tomar una entrada: el primo más alto que se imprimirá. Esta entrada puede provenir de cualquier parte (gráfica, STDIN). Tiene la seguridad de que la entrada es un número primo.
Salida
Tendrá que dar salida al número resultante. Puede obtener este número haciendo una cuenta regresiva, solo cuente el número si es primo, luego conecte todos los resultados a un número. El último número "fila" (por ejemplo 7, 5, 3, 2, 1
) debe imprimirse completamente. El resultado puede ser cualquier cosa (números, cadenas, gráficos), siempre que sea legible. Se aplica el mismo patrón Regex para verificar sus casos de prueba:
^(\D*(\d)+\D*|)$
Si su salida no coincide con este patrón, su código no es válido.
Reglas
- Se asegura que la entrada sea primordial, no incluya manejo de errores, a menos que lo desee / necesite.
- La salida solo puede ser un número completamente conectado, por lo tanto, no dividido por nada, ni siquiera por líneas nuevas.
- Su algoritmo no debe comprobar si la primera instancia de
N
aparecer (por ejemplo, el17
de1175321
), sino más bien para la primera instancia deN
que el número real. - Su entrada está asegurada para ser positiva, no agregue manejo a menos que desee / necesite.
Casos de prueba
Input: -2, 0
Output: Any, or none (number isn't positive)
Input: 9
Output: Any, or none (number isn't prime)
Input: 1
Output: 1
Input: 7
Output: 121321532175321
Input: 23
Output: 1213215321753211175321131175321171311753211917131175321231917131175321
Ganador
Este es el código de golf , por lo que gana el autor del código con la menor longitud en bytes.
1
sea una preferencia por definición.1
contradice directamente la especificación, lo que " asegura " que el número de entrada será primo. 2. La especificación de salida parece contener múltiples contradicciones y ambigüedades. " La última" fila "de números (p. Ej. 7, 5, 3, 2, 1) debe imprimirse completamente ", ¿entonces los demás no? " Se aplica el mismo patrón Regex para verificar sus casos de prueba ", pero " La salida puede ser solo un número completamente conectado, por lo tanto, no dividido por nada " contradice esa expresión regular. Pero la expresión regular es claramente dudosa de todos modos porque permite la cadena vacía, y no hay entrada que pueda dar eso.Respuestas:
Jalea , 9 bytes
Pruébalo en línea!
Cómo funciona
fuente
V
una lista.)Procesamiento, 161 bytes
Una función realiza la comprobación de primalidad, la otra realiza la impresión. Llámalo por
t(7)
Sin golf
La primera función hace la comprobación de primalidad. Devuelve un en
int
lugar de unboolean
ya que de esta manera se guardan más bytes. (enint
lugar deboolean
, en0
lugar defalse
, en1
lugar detrue
)La segunda función imprime la cadena. Se itera a través de cada número, si no es primo, salte a la siguiente iteración. Si es un primo, continúa hasta la impresión dentro de otro
for
bucle. Nuevamente, si el número es primo, lo imprimimos, de lo contrario no.fuente
Jalea , 12 bytes
Pruébalo en línea!
Si no hubiera sido por
1
s, mi código solo habría sidoÆRÆRUVV
por 7 bytes.Explicación mejorada:
El tipo irlandés (llamado Dennis?) De alguna manera me superó jajaja.
fuente
05AB1E , 19 bytes
Pruébalo en línea!
Explicación
fuente
DpÏ
declaración. ¡Buen trabajo!Brachylog , 17 bytes
Pruébalo en línea!
Parece que no puede acortarse más que eso ...
Explicación
fuente
GameMaker Language, 169 bytes
Función principal (68 bytes)
Función p (46 bytes)
Función q (55 bytes)
fuente
MATL , 15 bytes
Pruébalo en línea!
fuente
Perl 6 , 41 bytes
( Pruébelo en línea )
Explicación:
1, |grep(*.is-prime, 2..$_)
: Secuencia de 1 y primos ...(1 2 3 5)
[,] ...
: Reducir ("doblar") sobre el operador de coma ...(1 2 3 5)
[\,] ...
: Con resultados intermedios ( reducción triangular ) ...((1) (1 2) (1 2 3) (1 2 3 5))
[\R,] ...
: Aplicar el metaoperador de inversión a la coma ...((1) (2 1) (3 2 1) (5 3 2 1))
[~] flat ...
: Eliminar el anidamiento de la lista y doblar sobre el operador de cadena concat1213215321
(Esto se basa en mi respuesta para el desafío anterior ).
fuente
Mathematica, 61 bytes
Función sin nombre que toma un argumento entero y devuelve una cadena. (Si la entrada no es un primo, simplemente lo "redondea" al primo más cercano; si la entrada no es positiva, pretende que es 1.)
Esta implementación utiliza el truco desagradable de la respuesta de Martin Ender al desafío anterior similar (¿quién dice que este viejo perro no puede aprender nuevos trucos?): Abusar
<>
de aplanar una lista anidada de enteros.La lista anidada en cuestión comienza generando una lista anidada similar a la de esa respuesta, con la longitud apropiada (dada por
PrimePi@#
el número de primos hasta e incluyendo la entrada); entoncesPrime
se aplica a cada elemento. Por ejemplo, para la entrada5
que es el 3er primo, el códigoRange[Range@PrimePi@#,0,-1]
rinde{{1,0},{2,1,0},{3,2,1,0}}
, y la aplicaciónPrime
a cada elemento rinde{{2,Prime[0]},{3,2,Prime[0]},{5,3,2,Prime[0]}}
ya que el 1er, 2do y 3er primos son 2, 3 y 5, respectivamente. Me siento orgulloso de haber logrado agregar aún más errores al enfoque de Martin Ender: Mathematica se queja cada vez que escribePrime[0]
.Prime[0]
no es una cosa, pero está bien: los/.Prime@0->1
convierte a todos en1
s. Y también queremos un1
frente, por lo que reemplazamos el""
de la respuesta de Martin Ender con simplemente1
, lo que realmente ahorra un byte.fuente
PHP, 72 bytes
Corre ingenio
-r
Descompostura
fuente
Pyth - 12 bytes
Test Suite .
fuente