Primes con un toque

13

Nota: esto está fuertemente inspirado por esta pregunta .

Tarea:

Su tarea es generar el nth prime, cuando cada personaje de su programa se repite varias nveces en su lugar.

Digamos que su programa es:

Derp

Todos los caracteres allí se repiten una vez, por lo que deberían aparecer 2.

Cuando cada personaje se duplica en su lugar, así:

DDeerrpp

Esto debería generar el segundo primo, que es 3.

Especificaciones:

  • Su programa no debe aceptar ninguna entrada y emitir la prima correspondiente.
  • Su programa debe funcionar para todos los números primos, dado suficiente tiempo y memoria.
  • Las nuevas líneas iniciales y finales están bien.
  • La salida debe estar en la base predeterminada del idioma; si no hay una predeterminada, cualquier base está bien.

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

clismique
fuente
66
Qué Su programa debe funcionar para todos los primos, dado el tiempo y la memoria suficiente. significa que no puedo usar, por ejemplo, int en C?
Dennis

Respuestas:

21

Jalea , 13 bytes

“Ŀo‘’FQỌµḟ;¹V

Pruébalo en línea! o ejecuta los primeros diez programas .

Antecedentes

Jelly tiene varios tipos diferentes de literales de cadena; todos comienzan con a . Si el literal contiene más de uno , se devuelve una matriz de cadenas y las separa unas de otras.

Por ejemplo, “abc“def”rendimientos ['abc', 'def'].

Dependiendo del último carácter del literal (cualquiera de ”«»‘’, donde no «está implementado actualmente), uno puede elegir entre los diferentes tipos de literales. Para , obtenemos los puntos de código en la página de códigos de Jelly en lugar de los caracteres Unicode correspondientes.

Por ejemplo, “abc“def‘rendimientos [[97, 98, 99], [100, 101, 102]].

Los literales en los primeros tres programas corresponden a las siguientes matrices de puntos de código.

“Ŀo‘           -> [199, 111]
““ĿĿoo‘        -> [[], [199, 199, 111, 111]]
“““ĿĿĿooo‘     -> [[], [], [199, 199, 199, 111, 111, 111]]

Cómo funciona ( n = 3 )

“““ĿĿĿooo‘‘‘’’’FFFQQQỌỌỌµµµḟḟḟ;;;¹¹¹VVV  Main link. Implicit argument: 0

“““ĿĿĿooo‘                               Yield the 2D array
                                         [[], [], [199, 199, 199, 111, 111, 111]].
          ‘‘                             Increment twice, yielding
                                         [[], [], [201, 201, 201, 113, 113, 113]].
            ’’’                          Decrement thrice, yielding
                                         [[], [], [198, 198, 198, 110, 110, 110]].
               F                         Flatten, yielding
                                         [198, 198, 198, 110, 110, 110].
                FF                       Twice more. Does nothing.
                  Q                      Unique; yield [198, 110].
                   QQ                    Twice more. Does nothing.
                     Ọ                   Unordinal; convert the Unicode code points
                                         198 and 110 to 'Æ' and 'n'.
                      ỌỌ                 Twice more. Does nothing.
                        µµµ              Begin three monadic chains, all with
                                         argument s := "Æn".
                           ḟ             Filter-false; remove the characters of s
                                         from s, yielding "".
                            ḟḟ           Twice more. Does nothing.
                              ;;;¹       Concatenate with s three times, yielding
                                         "ÆnÆnÆn".
                                  ¹¹     Identity function. Does nothing.
                                    V    Eval the resulting Jelly code, i.e.,
                                         call the next-prime atom thrice, with
                                         initial implicit argument 0.
                                     VV  Eval two more times. This is a no-op
                                         on integers.
Dennis
fuente
1
Esto definitivamente necesita una explicación ... y dependiendo de cómo se presente, ¿podría ser el único idioma que puede hacer esto?
Value Ink el
66
¿Que? como? Eso es simplemente demasiado rápido.
clismique
@ValueInk He editado mi respuesta.
Dennis
21

GS2 ( commit 67fea47 ), 6 3 bytes

dnR

Cómo funciona

Como la mayoría de los comandos, GS2 destá sobrecargado. Inicialmente, hay una lista vacía (la entrada o la falta de ella) en la pila, por lo que dcalcula su suma. Después de la primera iteración, hay un 0 en la pila y dcalcula su paridad (también 0 ). Por lo tanto, no importa cuántas veces repetimos d, el resultado siempre será un solo 0 .

La siguiente parte es sencilla. El comando nmuestra la parte superior de la pila y empuja el siguiente número primo. Por lo tanto, repetir n k veces calcula el k principal.

Finalmente, el comando simplemente aplica str a la parte superior de la pila, lo que convierte un número en su representación de cadena y no afecta las cadenas. Por lo tanto, no importa cuántas veces lo repitamos R, el resultado será la representación de cadena del k principal.

Dennis
fuente
2
¿¡que demonios!?
downrep_nation
3
No resucitar
Trauma digital