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.


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.

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.


2
¿¡que demonios!?
— downrep_nation

3
No resucitar
— Trauma digital
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.