Prenons une grille de caractères ASCII imprimables 16x16 (points de code 0x20 à 0x7E). Il y a 30 choix-15 chemins du coin supérieur gauche au coin inférieur droit, ne faisant que des mouvements orthogonaux, comme dans l'exemple suivant:
##..............
.#..............
.######.........
......##........
.......##.......
........#.......
........#.......
........#.......
........###.....
..........###...
............#...
............####
...............#
...............#
...............#
Chacun de ces chemins comprend exactement 31 caractères. Notez que chacun de ces personnages est différent des 31 anti-diagonales:
0123456789ABCDEF
123456789ABCDEFG
23456789ABCDEFGH
3456789ABCDEFGHI
456789ABCDEFGHIJ
56789ABCDEFGHIJK
6789ABCDEFGHIJKL
789ABCDEFGHIJKLM
89ABCDEFGHIJKLMN
9ABCDEFGHIJKLMNO
ABCDEFGHIJKLMNOP
BCDEFGHIJKLMNOPQ
CDEFGHIJKLMNOPQR
DEFGHIJKLMNOPQRS
EFGHIJKLMNOPQRST
FGHIJKLMNOPQRSTU
Ce n'est pas un exemple de grille. Il s'agit d'une visualisation des 31 anti-diagonales.
Nous appellerons une grille unique en diagonale si aucun anti-diagonal ne contient deux fois le même caractère. Si la grille a cette propriété, deux chemins ne contiendront pas la même chaîne. (Juste pour clarifier, la visualisation elle-même est fondamentalement l' opposé de la diagonale unique.)
Le défi
Concevez une grille 16x16 unique en diagonale, de telle sorte que le plus de chemins possibles soient du code valide qui s'imprime Jabberwocky
sur STDOUT (avec un saut de ligne de fin en option) dans autant de langues que possible. Chaque code peut être soit un programme complet, soit le corps d'une fonction sans paramètre sans déclaration de retour (ceci afin de ne pas décourager les langages qui ont besoin d'avoir leur code dans une fonction / classe / espace de noms standard).
Remarque: pour plus de simplicité, vous pouvez utiliser un caractère réservé pour les cellules inutilisées comme Ypnypn l'a fait.
Pour chaque chemin valide, veuillez indiquer clairement un langage de programmation dans lequel il est valide.
Le gagnant est la soumission avec le plus grand nombre de langues couvertes par la liste ci-dessus. (Alternativement, pour chaque langue que vous souhaitez compter, montrez un chemin qui est valide dans cette langue, mais assurez-vous de ne pas compter de chemin pour deux langues.)
En cas d'égalité, comptez les cellules de la grille qui ne sont couvertes par aucun chemin valide. Moins de cellules inutilisées gagnent. S'il y a toujours égalité, j'accepterai la réponse avec le plus de votes (nets).
Script de validation
Je viens de rassembler rapidement un petit extrait de CJam que vous pouvez utiliser pour valider qu'une grille est unique en diagonale.
- Accédez à l'interprète CJam en ligne .
Collez le code suivant
l:A; qN/W%A16**33/z{A-__|=}%:*"D""Not d"?"iagonally unique"
Dans le champ de saisie, mettez votre caractère réservé sur la première ligne (utilisez un caractère inutilisé si vous ne faites pas poursuivre un caractère réservé), puis votre grille dans les lignes 2 à 17. Par exemple, pour la réponse d'Ypnypn:
~ pr~~~~~~~~~~~~~ tin~~~~~~~~~~~~ ~ypt(~~~~~~~~~~~ ~~ef(~~~~~~~~~~~ ~~ "J~~~~~~~~~~ ~~~~~ab~~~~~~~~~ ~~~~~~be~~~~~~~~ ~~~~~~~rwo~~~~~~ ~~~~~~~~~ck~~~~~ ~~~~~~~~~~y~~~~~ ~~~~~~~~~~\n~~~~ ~~~~~~~~~~~")) ~ ~~~~~~~~~~~ ; ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
Courir.
Faites-moi savoir si vous pensez qu'il a un bug.
la source
Réponses:
30 3335 LanguesCaractère réservé:
~
Langues:
(Pyth et CJam grâce à user23013)
la source
putStr[ln]...
. De plus, haskell n'en a pas;;
. Je crois que vous l'avez mélangé avec Ocaml.;;
). Quoi qu'il en soit, Haskell a été remplacé par autre chose.| p b"Jabberwocky" |
œuvres, par exemple17 langues
Voici la grille, avec
.
comme caractère réservé:Et voici les langues et leurs chemins (ignorez les barres verticales):
Je n'ai pas pu tous les tester, alors faites-moi savoir si quelque chose ne fonctionne pas.
la source
<?
ici18 langues et plus
Caractère réservé:
~
.Langues:
et...
Il devrait y avoir beaucoup plus de dialectes de base qui fonctionnent. Mais je n'ai pas encore le temps de les tester tous.
la source
?
pourprint
) devraient fonctionner ... Sélectionnez simplement un numéro de ligne différent.