Tomemos una cuadrícula de 16x16 caracteres ASCII imprimibles (puntos de código 0x20 a 0x7E). Hay 30 rutas de elegir-15 desde la esquina superior izquierda a la esquina inferior derecha, que solo realizan movimientos ortogonales, como en el siguiente ejemplo:
##..............
.#..............
.######.........
......##........
.......##.......
........#.......
........#.......
........#.......
........###.....
..........###...
............#...
............####
...............#
...............#
...............#
Cada una de estas rutas consta de exactamente 31 caracteres. Tenga en cuenta que cada uno de esos caracteres está en uno de los 31 antiagoniales diferentes:
0123456789ABCDEF
123456789ABCDEFG
23456789ABCDEFGH
3456789ABCDEFGHI
456789ABCDEFGHIJ
56789ABCDEFGHIJK
6789ABCDEFGHIJKL
789ABCDEFGHIJKLM
89ABCDEFGHIJKLMN
9ABCDEFGHIJKLMNO
ABCDEFGHIJKLMNOP
BCDEFGHIJKLMNOPQ
CDEFGHIJKLMNOPQR
DEFGHIJKLMNOPQRS
EFGHIJKLMNOPQRST
FGHIJKLMNOPQRSTU
Este no es un ejemplo de cuadrícula. Esta es una visualización de los 31 antiagoniales.
Llamaremos a una cuadrícula diagonalmente única si ningún anti-diagonal contiene el mismo personaje dos veces. Si la cuadrícula tiene esta propiedad, no hay dos rutas que contengan la misma cadena. (Solo para aclarar, la visualización en sí es básicamente lo opuesto a diagonalmente único).
El reto
Diseñe una cuadrícula diagonalmente única de 16x16, de modo que la mayor cantidad posible de rutas sea un código válido que se imprima Jabberwocky
en STDOUT (con un salto de línea final opcional) en tantos idiomas como sea posible. Cada código puede ser un programa completo o el cuerpo de una función sin parámetros sin una declaración de retorno (esto es para no desalentar a los lenguajes que necesitan tener su código en alguna función / clase / espacio de nombres).
Nota: Para simplificar, puede usar algunos caracteres reservados para las celdas no utilizadas como lo hizo Ypnypn .
Para cada ruta válida, indique claramente un lenguaje de programación en el que sea válido.
El ganador es la presentación con el mayor número de idiomas cubiertos por la lista anterior. (Alternativamente, para cada idioma que desee contar, muestre una ruta que sea válida en ese idioma, pero asegúrese de no contar ninguna ruta para dos idiomas).
En caso de empate, cuente las celdas de la cuadrícula que no están cubiertas por ninguna ruta válida. Menos células no utilizadas ganan. Si todavía hay un empate, aceptaré la respuesta con la mayoría de los votos (netos).
Script de validación
Acabo de armar rápidamente un pequeño fragmento de CJam que puede usar para validar que una cuadrícula es diagonalmente única.
- Vaya al intérprete en línea de CJam .
Pega el siguiente código
l:A; qN/W%A16**33/z{A-__|=}%:*"D""Not d"?"iagonally unique"
En el campo de entrada, coloque su carácter reservado en la primera línea (use un carácter no utilizado si no demanda a un personaje reservado), y luego su cuadrícula en la línea 2 a 17. Por ejemplo, para la respuesta de Ypnypn:
~ pr~~~~~~~~~~~~~ tin~~~~~~~~~~~~ ~ypt(~~~~~~~~~~~ ~~ef(~~~~~~~~~~~ ~~ "J~~~~~~~~~~ ~~~~~ab~~~~~~~~~ ~~~~~~be~~~~~~~~ ~~~~~~~rwo~~~~~~ ~~~~~~~~~ck~~~~~ ~~~~~~~~~~y~~~~~ ~~~~~~~~~~\n~~~~ ~~~~~~~~~~~")) ~ ~~~~~~~~~~~ ; ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
Correr.
Avísame si crees que tiene un error.
fuente
Respuestas:
30 3335 IdiomasCarácter reservado:
~
Idiomas:
(Pyth y CJam gracias a user23013)
fuente
putStr[ln]...
. Además, haskell no tiene;;
. Creo que lo mezcló con Ocaml.;;
). De todos modos, reemplazó a Haskell con algo más.| p b"Jabberwocky" |
funciona, por ejemplo17 idiomas
Aquí está la cuadrícula, con
.
el carácter reservado:Y aquí están los idiomas y sus caminos (ignore las barras verticales):
No he podido probarlos todos, así que avíseme si algo no funciona.
fuente
<?
aquí18 idiomas y más
Carácter reservado:
~
.Idiomas:
y...
Debería haber muchos más dialectos básicos que funcionen. Pero todavía no tengo tiempo para probarlos todos.
fuente
?
paraprint
) deberían funcionar ... Simplemente seleccione un número de línea diferente.