Choisissez votre propre langue

17

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 Jabberwockysur 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.

  1. Accédez à l'interprète CJam en ligne .
  2. Collez le code suivant

    l:A;
    qN/W%A16**33/z{A-__|=}%:*"D""Not d"?"iagonally unique"
    
  3. 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~~~~
    ~~~~~~~~~~~")) ~
    ~~~~~~~~~~~  ;  
    ~~~~~~~~~~~~~~~ 
    ~~~~~~~~~~~~~~~ 
    ~~~~~~~~~~~~~~~ 
    
  4. Courir.

Faites-moi savoir si vous pensez qu'il a un bug.

Martin Ender
la source
6
'Twas brillig, et les toits slithey ont fait du gyre et du gimble dans le wabe ... (oui, je l'ai mémorisé);)
Poignée de porte
Cela ressemble à l'une des questions de Calvin sur les loisirs, ce qui est une réussite fantastique. Je n'ai toujours pas pu comprendre comment cela se fait.
Soham Chowdhury

Réponses:

21

30 33 35 Langues

Caractère réservé: ~

 println!~~~~~~~
 puts    (1,~~~~
    echo   '~~~~
"cWprintfn"Ja~~~
Eork~~~;'Jabbe~~
\ui)K00~~~~~br~~
]tteL~0~~~~~ew~~
]<~ln(0~~~~~ro~~
`<~~~ 0~~~~~wc~~
m"~~~ "~~~~~ok~~
rJ~~~'J~~~~~cy~~
j"<< "a~~~~~k'..
^~~~~~bberwoy");
f~~~~~~~~~~c'  ;
t~~~~~~~~~~ky"  
XX"););  5f+'); 

Langues:

01. Rust        | println! (  "Jabberwocky") ;  |
02. Groovy      | println     "Jabberwocky"     |
03. E           | println  (  "Jabberwocky")    |
04. Swift       | println  (  "Jabberwocky") ;  |
05. Julia       | println  (  "Jabberwocky");;  |
06. Processing  | println  (  "Jabberwocky")  ; |
07. Falcon      | printl   (  "Jabberwocky")    |
08. ALGOL 68    | print    (  "Jabberwocky")    |
09. Vala        | print    (  "Jabberwocky") ;  |
10. Pawn        | print    (  "Jabberwocky");;  |
11. Batsh       | print    (  "Jabberwocky")  ; |
12. freeBASIC   | print       "Jabberwocky"     |
13. Rebol       | print       "Jabberwocky"  ;  |
14. Red         | print       "Jabberwocky"   ; |
15. AWK         | print       'Jabberwocky'     |
16. Perl        | print       'Jabberwocky'  ;  |
17. bc          | print       'Jabberwocky'   ; |
18. Euphoria    |  puts    (1,"Jabberwocky")    |
19. C           |  puts    (  "Jabberwocky") ;  |
20. Tcl         |  puts       "Jabberwocky"     |
21. Ruby        |  puts       'Jabberwocky'     |
22. Zsh         |      echo   "Jabberwocky"     |
23. Bash        |      echo   "Jabberwocky"  ;  |
24. tcsh        |      echo   "Jabberwocky"   ; |
25. PHP         |      echo   'Jabberwocky'     |
26. Fish        |      echo   'Jabberwocky'  ;  |
27. Dash        |      echo   'Jabberwocky'   ; |
28. F#          |      printfn"Jabberwocky"   ; |
29. C++         |    cout<<"J"<< "abberwocky" ; |
30. D           |     Writeln(  'Jabberwocky'); |
31. Pascal      |     WriteLn(  'Jabberwocky'); |
32. Delphi      |     Writeln(  "Jabberwocky"); |
33. GolfScript  |      print;'Jabberwocky'..;;  |
34. CJam        |   "E\]]`mrj^ftXX"););  5f+'); |
35. Pyth        |      pk)K00000"Jabberwocky"   |

(Pyth et CJam grâce à user23013)

Optimiseur
la source
En fait, le code haskell imprime la chaîne avec des guillemets. Pour l'imprimer sans eux, vous auriez besoin putStr[ln].... De plus, haskell n'en a pas ;;. Je crois que vous l'avez mélangé avec Ocaml.
fier haskeller
Même Ocaml n'a pas cela. (L'interprète en ligne donne une erreur si je mets ;;). Quoi qu'il en soit, Haskell a été remplacé par autre chose.
Optimizer
Pyth serait facile à ajouter - des | p b"Jabberwocky" |œuvres, par exemple
isaacg
@isaacg Merci! J'allais aussi me pencher sur Pyth. Cela me fait gagner du temps :)
Optimizer
@isaacg BTW, où est ce chemin?
Optimizer
15

17 langues

Voici la grille, avec . comme caractère réservé:

 prin...........
 utstln!........
       (1,......
<?echo    ".....
.........'Jab...
............b...
............e...
............r...
............w...
............o...
............c...
............k...
............y"..
............' ).
.............  ;
..............  

Et voici les langues et leurs chemins (ignorez les barres verticales):

01. Rust        | println!(   "Jabberwocky" ) ; |
02. Swift       | println (   "Jabberwocky" ) ; |
03. Scala       | println (   "Jabberwocky" )   |
04. Falcon      | printl  (   "Jabberwocky" )   |
05. Vala        | print   (   "Jabberwocky" ) ; |
06. Lua         | print   (   'Jabberwocky' ) ; |
07. ALGOL 68    | print   (   "Jabberwocky" )   |
08. Dart        | print   (   'Jabberwocky' )   |
09. Rebol       | print       "Jabberwocky"   ; |
10. Perl        | print       'Jabberwocky'   ; |
11. AWK         | print       "Jabberwocky"     |
12. Euphoria    | puts    (1, "Jabberwocky" )   |
13. C           | puts    (   "Jabberwocky" ) ; |
14. Tcl         | puts        "Jabberwocky"     |
15. Ruby        | puts        'Jabberwocky'     |
16. Bash        |     echo    "Jabberwocky"     |
17. PHP         |     echo    "Jabberwocky"   ; |

Je n'ai pas pu tous les tester, alors faites-moi savoir si quelque chose ne fonctionne pas.

grc
la source
Je pense que vous ne pouvez pas utiliser le même chemin pour plus d'une langue et l'ajouter à votre score.
Optimizer
1
@Optimizer Je ne pense pas qu'il y ait des chemins utilisés deux fois. Certes, les différences sont assez faibles.
grc
1
Ugh, vous mec sournois! : P
Optimizer
Pour PHP, après avoir supprimé le passe-partout, `echo" foobar "` (plus d'un espace à chaque fois) s'imprime très bien. Sans aucun espace blanc. Essayez-le ici
Optimizer
2
C'est correct de supprimer le passe-partout du code, qui est <?ici
Optimizer
3

18 langues et plus

Caractère réservé: ~.

         "~~~~~~
12345678 "~~~~~~
12345678 "~~~~~~
12345678 "~~~~~~
1234567: ea~~~~~
1234567: c;~~~~~
1234567: hL~~~~~
1234567: o'~~~~~
1234567:  Jab~~~
1234567:?""""~~~
~~~~~~~~~Jabberw
~~~~~~~~~~~~~~~o
~~~~~~~~~~~~~~~c
~~~~~~~~~~~~~~~k
~~~~~~~~~~~~~~~y
~~~~~~~~~~~~~~~"

Langues:

CJam                             |             ea;L'J"abberwocky"|
GolfScript                       |              cho "Jabberwocky"|
Bc                               |                  "Jabberwocky"|
Bash                             |         """"echo J"abberwocky"|
Zsh                              |           ""echo J"abberwocky"|
Fish                             |             echo J"abberwocky"|
Tcsh                             |         """"echo Ja"bberwocky"|
Dash                             |           ""echo Ja"bberwocky"|
Ksh                              |             echo Ja"bberwocky"|
Mksh                             |         """"echo Jab"berwocky"|
Yash                             |           ""echo Jab"berwocky"|
Sash                             |             echo Jab"berwocky"|
Posh                             |         """"echo "Jabberwocky"|
Csh                              |           ""echo "Jabberwocky"|
PHP                              |             echo "Jabberwocky"|

et...

FreeBasic                        |                 ?"Jabberwocky"|
QBasic                           | 12345678        ?"Jabberwocky"|
QB64                             | 123456788       ?"Jabberwocky"|

Il devrait y avoir beaucoup plus de dialectes de base qui fonctionnent. Mais je n'ai pas encore le temps de les tester tous.

jimmy23013
la source
N'oubliez pas que vous ne pouvez pas utiliser le même chemin d'accès pour plus d'une langue. Donc, tous les dialectes BASIC ne rentreront pas.
Optimizer
2
@Optimizer Au moins les dialectes qui ont des numéros de ligne et ne vérifient pas le débordement (et en ont ?pour print) devraient fonctionner ... Sélectionnez simplement un numéro de ligne différent.
jimmy23013