Actualizaciones: límite de tiempo eliminado. Debe poder describir la salida; consulte la nueva regla.
Un pangrama es una oración que usa todas las letras del alfabeto al menos una vez, como:
Un pangrama perfecto usa cada letra exactamente una vez.
Considere escribir un programa que sea un pangrama perfecto, utilizando los 95 caracteres ASCII imprimibles (códigos hexadecimales 20 a 7E) como alfabeto:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Dicho programa debe contener exactamente 95 caracteres, y cada carácter ASCII imprimible debe aparecer exactamente una vez, pero en cualquier orden. (Por lo tanto, hay 95! = 1.03 × 10 148 posibilidades.)
Su tarea es escribir este programa de manera que el número de caracteres ASCII imprimibles impresos en stdout sea lo más alto posible (es decir, prolífico).
Su puntaje es el número de caracteres ASCII imprimibles que genera su programa (la cantidad total , no la cantidad distinta : AABC
puntajes 4 mientras que ABC
puntajes 3) . El puntaje más alto gana.
Detalles
- El resultado puede contener cualquier carácter (incluidos los duplicados), pero solo las instancias de los 95 caracteres ASCII imprimibles cuentan para su puntaje.
- Puede usar este JSFiddle para contar el número de caracteres ASCII imprimibles en cualquier cadena.
- Si su idioma no tiene stdout, use la alternativa más apropiada.
- Su programa ...
- debe tener un tiempo de ejecución finito (se ha eliminado el límite de tiempo)
- debe tener salida finita
- puede contener comentarios
- debe compilarse y ejecutarse sin errores (no detectados)
- no debe solicitar ni requerir entrada
- debe ser invariante en el tiempo y determinista
- no debe usar bibliotecas externas
- no debe requerir una conexión de red
- no debe hacer uso de archivos externos
- (puede usar el archivo del programa en sí mismo siempre que cambiar el nombre del archivo no altere el comportamiento del programa)
- Si esta tarea es imposible es algún lenguaje que es demasiado malo.
- Debe dar su resultado exacto o describirlo con precisión si es demasiado grande para caber en una publicación . En realidad, no tiene que ejecutar su programa. Siempre que se ejecute en un tiempo finito en una computadora con una cantidad ilimitada de memoria, es válida.
Ejemplo
Este programa simplista de Python 2 es una posible solución:
print 9876543210#!"$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjklmoqsuvwxyz{|}~
Salida 9876543210
que contiene 10 caracteres ASCII imprimibles, obteniendo así 10.
a
seis billones de veces, donde ni siquiera es posible obtener un límite superior preciso en Número de letras. De todos modos, todavía estoy orgulloso de mi 95, incluso si es un poco pequeño. El tamaño no lo es todo, ya sabes.