Prendiamo una griglia di caratteri ASCII stampabili 16x16 (punti di codice da 0x20 a 0x7E). Esistono 30 percorsi-15 percorsi dall'angolo in alto a sinistra all'angolo in basso a destra, eseguendo solo mosse ortogonali, come nell'esempio seguente:
##..............
.#..............
.######.........
......##........
.......##.......
........#.......
........#.......
........#.......
........###.....
..........###...
............#...
............####
...............#
...............#
...............#
Ciascuno di questi percorsi è composto esattamente da 31 caratteri. Nota che ognuno di quei personaggi si trova su una delle 31 anti-diagonali diverse:
0123456789ABCDEF
123456789ABCDEFG
23456789ABCDEFGH
3456789ABCDEFGHI
456789ABCDEFGHIJ
56789ABCDEFGHIJK
6789ABCDEFGHIJKL
789ABCDEFGHIJKLM
89ABCDEFGHIJKLMN
9ABCDEFGHIJKLMNO
ABCDEFGHIJKLMNOP
BCDEFGHIJKLMNOPQ
CDEFGHIJKLMNOPQR
DEFGHIJKLMNOPQRS
EFGHIJKLMNOPQRST
FGHIJKLMNOPQRSTU
Questa non è una griglia di esempio. Questa è una visualizzazione delle 31 anti-diagonali.
Chiameremo una griglia diagonalmente unica se nessuna anti-diagonale contiene lo stesso carattere due volte. Se la griglia ha questa proprietà, non esistono due percorsi conterranno la stessa stringa. (Giusto per chiarire, la visualizzazione stessa è sostanzialmente l' opposto di diagonalmente unica.)
La sfida
Progetta una griglia 16x16 univoca in modo diagonale, in modo tale che il maggior numero possibile di percorsi sia un codice valido che viene stampato Jabberwocky
su STDOUT (con interruzione di riga finale facoltativa) in quante più lingue possibile. Ogni codice può essere un programma completo o il corpo di una funzione senza parametri senza istruzione return (questo al fine di non scoraggiare i linguaggi che devono avere il loro codice in una funzione / classe / spazio dei nomi della piastra di caldaia).
Nota: per semplicità puoi usare alcuni caratteri riservati per celle non utilizzate come ha fatto Ypnypn .
Per ogni percorso valido, indicare chiaramente un linguaggio di programmazione in cui è valido.
Il vincitore è l'invio con il maggior numero di lingue coperte dall'elenco precedente. (In alternativa, per ogni lingua che vuoi contare, mostra un percorso valido in quella lingua, ma assicurati di non contare alcun percorso per due lingue.)
In caso di pareggio, conta le celle della griglia che non sono coperte da alcun percorso valido. Vincono meno cellule inutilizzate. Se c'è ancora un pareggio, accetterò la risposta con il maggior numero di voti (netti).
Script di convalida
Ho appena messo insieme un piccolo frammento di CJam che puoi usare per confermare che una griglia è diagonalmente unica.
- Vai all'interprete CJam online .
Incolla il seguente codice
l:A; qN/W%A16**33/z{A-__|=}%:*"D""Not d"?"iagonally unique"
Nel campo di input, inserisci il tuo carattere riservato sulla prima riga (usa un personaggio inutilizzato se non fai causa a un personaggio riservato), quindi la griglia nella riga da 2 a 17. Ad esempio, per la risposta di Ypnypn:
~ pr~~~~~~~~~~~~~ tin~~~~~~~~~~~~ ~ypt(~~~~~~~~~~~ ~~ef(~~~~~~~~~~~ ~~ "J~~~~~~~~~~ ~~~~~ab~~~~~~~~~ ~~~~~~be~~~~~~~~ ~~~~~~~rwo~~~~~~ ~~~~~~~~~ck~~~~~ ~~~~~~~~~~y~~~~~ ~~~~~~~~~~\n~~~~ ~~~~~~~~~~~")) ~ ~~~~~~~~~~~ ; ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
Correre.
Fammi sapere se pensi che abbia un bug.