Hay 40 formas en que se puede organizar una ruta Hamiltoniana dirigida en una cuadrícula de 3 × 3:
este gráfico (¡ gracias Sp3000! ) Muestra solo las 20 rutas no dirigidas. Atraviese cada línea de color en ambas direcciones para los 40 caminos dirigidos.
Reto
Usando solo ASCII imprimible , escriba una cuadrícula de caracteres de 3 × 3, como:
ABC
DEF
GHI
Cuando cada una de las 40 rutas dirigidas se lee de esta cuadrícula como 40 programas de una línea y 9 caracteres, el objetivo es que cada programa genere un número entero único del 1 al 40. Hacer esto para las 40 rutas parece difícil e improbable, así que solo necesitas hacer que funcione para tantos caminos como puedas.
El envío cuyos 40 programas de ruta generen los números más distintos del 1 al 40 será el ganador. Tiebreaker va a la presentación anterior.
Los programas de ruta que producen errores o no generan un número entero de 1 a 40 o generan un número entero que otro programa de ruta ya cubierto no se cuenta. Específicamente:
- Los programas que producen errores al compilar, ejecutar o salir no se cuentan. Las advertencias están bien.
- Los programas que no generan un número entero de 1 a 40 o que emiten algo ligeramente mal formado como
-35
o35 36
no se cuentan. - Los programas que requieren la entrada del usuario para producir la salida no se cuentan.
- Los programas que nunca terminan no se cuentan.
- De ahora en adelante , los programas que no son deterministas no se cuentan.
- De lo contrario, no se cuentan los programas válidos que generan un número entero de 1 a 40 que otro programa válido ya ha generado. (El primer programa se contó.)
- Solo los programas que generan representaciones enteras de números del 1 al 40 (inclusive) se cuentan para su total. Se espera que los números para estar en el habitual
1
,2
, ...,39
,40
formato, a menos que no es la norma para su idioma. (Una nueva línea final en la salida está bien). - No importa qué números generan sus programas y en qué orden están. Solo importa el número de enteros distintos de los programas válidos.
Todos los programas de ruta deben ejecutarse en el mismo idioma. Sin embargo, los "programas" pueden ser funciones (sin argumentos necesarios) o comandos REPL , así como programas completos, que imprimen o devuelven su entero objetivo. Puede mezclar y combinar funciones, comandos REPL y programas completos.
Sus 9 caracteres ASCII imprimibles no necesitan ser distintos.
Ejemplo
Si tu cuadrícula de 3 × 3 fuera
ABC
DEF
GHI
y sus 40 programas y salidas se veían así
ABCFEDGHI -> 26
ABCFIHEDG -> 90
ABCFIHGDE -> 2
ABEDGHIFC -> syntax error
ADEBCFIHG -> prints 40 but then errors
ADGHEBCFI -> 6
ADGHIFCBE -> 6
ADGHIFEBC -> 6
CBADEFIHG -> runtime error
CBADGHEFI -> 3
CBADGHIFE -> 4
CFEBADGHI -> -32
CFIHEBADG -> 38.0
CFIHGDABE -> "36"
EDABCFIHG -> 33
EFCBADGHI -> no output
EHGDABCFI -> compilation error
EHIFCBADG -> 8
GDABCFEHI -> 22
GHEDABCFI -> 41
IHGDEFCBA -> 0
GDEHIFCBA -> '9'
EDGHIFCBA -> +10
CFIHGDEBA -> 11
GHIFCBEDA -> error
IFCBEHGDA -> error
EBCFIHGDA -> prints 23 but then loops infinitely
CBEFIHGDA -> randomly prints either 24 or 44
GHIFEDABC -> error
IFEHGDABC -> 30
EFIHGDABC -> 39
IHGDABEFC -> 7
GDABEHIFC -> 29
EBADGHIFC -> -1
GHIFCBADE -> 26
IHGDABCFE -> 1
IFCBADGHE -> error
GDABCFIHE -> no output
IHEFCBADG -> no output
IFCBADEHG -> "quack"
su puntaje sería 14, porque hay 14 enteros distintos de 1 a 40 de salida válida, a saber 26 2 6 3 4 33 8 22 11 30 39 7 29 1
.
123654789