Introducción
Eres un criminal encargado de robar algunos planes secretos de la nueva startup tecnológica Dejavu. Te escabulles por la pared del fondo, pero encuentras una puerta que requiere un alfiler para abrirla. Reconoce la marca de la cerradura y sabe que se necesita un pin de 5 dígitos con todos los números del 0 al 4. Después de ingresar cada dígito, la cerradura verifica los últimos 5 dígitos ingresados y se abre si el código es correcto. Tienes que pasar esta cerradura, y rápido.
Superpermutaciones en pocas palabras
Una permutación es todas las combinaciones posibles de un determinado conjunto de dígitos. por ejemplo, todas las permutaciones de los dígitos 0, 1, 2 son:
012, 021, 102, 120, 201 y 210.
Si concatenamos todas estas permutaciones juntas, obtenemos una superpermutación:
012021102120201210
Esta superpermutación contiene todas las permutaciones de 0, 1, 2, pero es posible hacer una más corta que esta. Voy a saltar un poco aquí, pero la superpermutación más corta de estos dígitos es:
012010210
Para nuestros propósitos y propósitos, esta es esencialmente la cadena de dígitos más corta que contiene todas las permutaciones posibles de esos dígitos, es decir, una superpermutación.
Tarea
Su tarea es un poco más difícil que el ejemplo de superpermutación como se muestra arriba, porque tiene dos dígitos más de los que preocuparse. - Si no ha leído sobre las superpermutaciones, o mi ejemplo anterior no está claro, le sugiero que lea este excelente artículo de Patrick Honner sobre el tema (este desafío fue muy inspirado por su artículo, así que felicitaciones a él): https://www.quantamagazine.org/unscrambling-the-hidden-secrets-of-superpermutations-20190116/ . Su objetivo es escribir el programa más corto posible que genere una superpermutación de los dígitos 0 a 4.
Tanteo
Su programa no recibe ningún tipo de entrada y produce una superpermutación de los dígitos de 0 a 4. Esta superpermutación resultante debe imprimirse en la consola o mostrarse visiblemente al usuario en la medida que lo indique su idioma de elección. Esto no tiene que ser la permutación más corta posible, solo tiene que ser una superpermutación válida. Debido a esto, el objetivo es escribir el programa más corto con la superpermutación más corta, por lo que debe calcular su puntaje de la siguiente manera:
tamaño de archivo (bytes) * longitud de superpermutación generada (dígitos)
por ejemplo, si tuviera un programa de 40 bytes y mi superpermutación tiene 153 dígitos, mi puntaje será:
40 * 153 = 6120
como siempre, el objetivo es obtener este puntaje lo más bajo posible.
Modelo
Así es como debe publicar su respuesta:
Idioma | Puntuación
enlace al código en el entorno de trabajo (si es posible)
code snippet
explicación del código, etc.
Finalidades
Esta es una de mis primeras preguntas en este sitio. Entonces, dígame si me falta algo o una sección de mi desafío no está clara. ¡Gracias y diviértete jugando al golf!
fuente
Respuestas:
05AB1E , puntuación = 1673 (7 bytes · 239)
Pruébalo en línea!
Cómo funciona
Pyth , puntuación = 1944 (9 bytes · 216)
Pruébalo en línea!
Cómo funciona
fuente
vy3yJ
guarda un bytem+d
->+R
guarda un byte.Brachylog , puntaje = 2907 (19 bytes × 153)
Demasiado lento para ver nada, pero si cambia
4
por2
usted puede probar que: Pruébelo en línea!Esto encuentra la superpermutación más corta como tal:
fuente
JavaScript (ES6), 26975 (325 * 83 bytes)
Con este sistema de puntuación, hay poco espacio para algo entre 'codificar la supermutación óptima' y 'solo usar un breve incorporado para concatenar todas las permutaciones' , al menos en no-esolangs.
Aquí hay un intento de todos modos.
Pruébalo en línea!
Genera una cadena de 325 bytes:
fuente
26975/153-153>23
)n
sufijo predeterminado queconsole.log
sale)Python 2 , Score:
24327151471285212628 (154 * 82 bytes)Pruébalo en línea!
También:
Python 2 , 12628 (154 * 82 bytes)
Pruébalo en línea!
fuente
05AB1E , puntuación:
53552160 (216 * 10 bytes )Puerto de @AndersKaseorg 's respuesta Pyth , así que asegúrese de que le Upvote!
Pruébalo en línea.
Explicación:
fuente
Octava , 27 x 442 = 11934
Pruébalo en línea!
Entonces, resulta que generar ingenuamente todas las permutaciones y luego truncar a la subcadena más corta que todavía es una superpermutación válida es más corta que generar la superpermutación más corta. Lamentablemente, esta vez el puntaje no es un palíndromo.
Octava , 97 x 153 = 14841
Pruébalo en línea!
Entrada actualizada por algunas cosas
a++
no está implementado para números simbólicos.contains()
no está implementado en Octave. Sustituido porany(regexp())
.a
superpermutación muy cercana a la 153. Esto permite verificar la solución.fuente
CJam (6 * 240 = 1440)
Demostración en línea , validación (genera el índice en el que
0..4
se puede encontrar cada permutación de ; necesita aplanar la salida porque el programa original proporciona una salida adecuada para stdout pero lo que coloca en la pila no se puede usar directamente).Enfoque robado de Sanchises , aunque el orden de permutación de CJam es diferente, dando una subcadena diferente.
CJam (22 * 207 = 4554)
Demostración en línea , validación .
Disección
Esto utiliza una construcción recursiva simple.
fuente
Jalea , 3000 (600 * 5 bytes)
Pruébalo en línea!
fuente
Carbón , 29 bytes, longitud de salida 153, puntaje 4437
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación: Al igual que @TFeld, solo imprimo la mitad de una superpermutación y la reflejo. Calculé la superpermutación usando el siguiente código:
Esto se traduce en un programa de 45 bytes en carbón, por lo que habría obtenido un puntaje de 6885.
fuente
MATL , 16 x 442 = 7072
Pruébalo en línea!
MATL puerto de mi respuesta Octave. -442 gracias a Luis Mendo
fuente
Japt -P, 2376 (11 x 216)
¡Intentalo!
-1 byte gracias a @ Shaggy!
La respuesta Pyth del puerto de Anders Kaseorg .
fuente
q<space>
;)Perl 6 , 7191 (153 * 47 bytes)
Pruébalo en línea!
Encuentra el primer número que contiene todas las permutaciones de los dígitos 0 a 4. Esto llevará mucho tiempo ejecutarlo, pero puede probarlo con las dos primeras permutaciones
0
y0,1
fuente
Wolfram Language (Mathematica) , 153 * 95 bytes, 14535
Pruébalo en línea!
fuente