Wählen Sie Ihren eigenen Sprachcode

17

Nehmen wir ein Raster mit 16x16 druckbaren ASCII-Zeichen (Codepunkte 0x20 bis 0x7E). Es gibt 30 Auswahlpfade von der oberen linken bis zur unteren rechten Ecke, die nur orthogonale Bewegungen ausführen, wie im folgenden Beispiel dargestellt:

##..............
.#..............
.######.........
......##........
.......##.......
........#.......
........#.......
........#.......
........###.....
..........###...
............#...
............####
...............#
...............#
...............#

Jeder dieser Pfade besteht aus genau 31 Zeichen. Beachten Sie, dass sich jedes dieser Zeichen auf einer anderen der 31 Antidiagonalen befindet:

0123456789ABCDEF
123456789ABCDEFG
23456789ABCDEFGH
3456789ABCDEFGHI
456789ABCDEFGHIJ
56789ABCDEFGHIJK
6789ABCDEFGHIJKL
789ABCDEFGHIJKLM
89ABCDEFGHIJKLMN
9ABCDEFGHIJKLMNO
ABCDEFGHIJKLMNOP
BCDEFGHIJKLMNOPQ
CDEFGHIJKLMNOPQR
DEFGHIJKLMNOPQRS
EFGHIJKLMNOPQRST
FGHIJKLMNOPQRSTU

Dies ist kein Beispielraster. Dies ist eine Visualisierung der 31 Antidiagonalen.

Wir nennen ein Gitter diagonal eindeutig, wenn keine Antidiagonale zweimal dasselbe Zeichen enthält. Wenn das Raster diese Eigenschaft hat, enthalten keine zwei Pfade dieselbe Zeichenfolge. (Nur zur Verdeutlichung ist die Visualisierung selbst im Grunde das Gegenteil von diagonal einzigartig.)

Die Herausforderung

Entwerfen Sie ein diagonal eindeutiges 16 Jabberwockyx 16-Raster, sodass möglichst viele Pfade gültiger Code sind, der in möglichst vielen Sprachen nach STDOUT (mit optionalem Zeilenumbruch) gedruckt wird. Jeder Code kann entweder ein volles Programm sein, oder der Körper einer parameterlos Funktion ohne return - Anweisung (dies ist , um Sprachen nicht zu entmutigen , die müssen ihren Code in einigem Text Funktion / Klasse / Namensraum haben).

Hinweis: Der Einfachheit halber können Sie reservierte Zeichen für nicht verwendete Zellen verwenden, wie dies bei Ypnypn der Fall war.

Bitte geben Sie für jeden gültigen Pfad eine Programmiersprache an, in der er gültig ist.

Der Gewinner ist der Beitrag mit der größten Anzahl von Sprachen, die von der obigen Liste abgedeckt werden. (Alternativ können Sie für jede Sprache, die Sie zählen möchten, einen Pfad anzeigen, der in dieser Sprache gültig ist. Achten Sie jedoch darauf, keinen Pfad für zwei Sprachen zu zählen.)

Im Falle eines Gleichstands zählen , die Gitterzellen , die sich nicht von einer gültigen Pfad abgedeckt. Es gewinnen weniger ungenutzte Zellen. Wenn es noch einen Gleichstand gibt, akzeptiere ich die Antwort mit den meisten (Netto-) Stimmen.

Validierungsskript

Ich habe nur schnell ein kleines CJam-Snippet zusammengestellt, mit dem Sie überprüfen können, ob ein Gitter diagonal einzigartig ist.

  1. Rufen Sie den Online-CJam-Interpreter auf .
  2. Fügen Sie den folgenden Code ein

    l:A;
    qN/W%A16**33/z{A-__|=}%:*"D""Not d"?"iagonally unique"
    
  3. Setzen Sie in das Eingabefeld Ihr reserviertes Zeichen in die erste Zeile (verwenden Sie ein unbenutztes Zeichen, wenn Sie kein reserviertes Zeichen verwenden) und dann Ihr Gitter in die Zeilen 2 bis 17. ZB für Ypnypns Antwort:

    ~
     pr~~~~~~~~~~~~~
     tin~~~~~~~~~~~~
    ~ypt(~~~~~~~~~~~
    ~~ef(~~~~~~~~~~~
    ~~  "J~~~~~~~~~~
    ~~~~~ab~~~~~~~~~
    ~~~~~~be~~~~~~~~
    ~~~~~~~rwo~~~~~~
    ~~~~~~~~~ck~~~~~
    ~~~~~~~~~~y~~~~~
    ~~~~~~~~~~\n~~~~
    ~~~~~~~~~~~")) ~
    ~~~~~~~~~~~  ;  
    ~~~~~~~~~~~~~~~ 
    ~~~~~~~~~~~~~~~ 
    ~~~~~~~~~~~~~~~ 
    
  4. Lauf.

Lassen Sie mich wissen, wenn Sie denken, dass es einen Fehler hat.

Martin Ender
quelle
6
'Twas brillig, und die slithey toves haben gyre und gimble in der wabe ... (ja, ich habe das auswendig gelernt);)
Türknauf
Das klingt nach einer von Calvins Hobbys, was eine fantastische Leistung ist. Ich habe immer noch nicht verstehen können, wie es gemacht wird.
Soham Chowdhury

Antworten:

21

30 33 35 Sprachen

Reservierter Charakter: ~

 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+'); 

Sprachen:

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 und CJam dank user23013)

Optimierer
quelle
Tatsächlich druckt der Hashcode die Zeichenfolge in Anführungszeichen. Um es ohne sie zu drucken, müssten Sie putStr[ln].... Auch haskell hat nicht ;;. Ich glaube du hast es mit Ocaml gemischt.
stolzer Haskeller
Auch Ocaml hat das nicht. (Der Online-Dolmetscher gibt Fehler aus, wenn ich es sage ;;). Sowieso ersetzte Haskell durch etwas anderes.
Optimierer
Pyth wäre einfach hinzuzufügen - | p b"Jabberwocky" |funktioniert zum Beispiel
isaacg
@isaacg Danke! Ich wollte auch Pyth untersuchen. Das spart mir Zeit :)
Optimizer
@isaacg BTW, wo ist ein solcher Weg?
Optimierer
15

17 Sprachen

Hier ist das Raster mit .dem reservierten Zeichen:

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

Und hier sind die Sprachen und ihre Pfade (ignorieren Sie die vertikalen Balken):

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"   ; |

Ich konnte nicht alle testen. Lassen Sie mich wissen, wenn etwas nicht funktioniert.

grc
quelle
Ich denke, Sie können den gleichen Pfad nicht für mehr als eine Sprache verwenden und ihn zu Ihrer Punktzahl hinzufügen.
Optimierer
1
@Optimizer Ich glaube nicht, dass Pfade doppelt verwendet werden. Zugegeben, die Unterschiede sind ziemlich gering.
Grc
1
Ugh, du hinterhältiger Typ! : P
Optimizer
Nach dem Entfernen der Boilerplate wird in PHP mit "echo" foobar "(jedes Mal mehr als 1 Leerzeichen) einwandfrei gedruckt. Ohne Leerzeichen. Versuchen Sie es hier
Optimizer
2
Es ist in Ordnung, Boilerplate aus dem Code zu entfernen, der <?hier ist
Optimizer
3

18 Sprachen und mehr

Reserviertes Zeichen: ~.

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

Sprachen:

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"|

und...

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

Es sollte viel mehr Basic-Dialekte geben , die funktionieren. Aber ich habe noch keine Zeit, alle zu testen.

jimmy23013
quelle
Denken Sie daran, dass Sie nicht für mehr als eine Sprache denselben Pfad verwenden können. Daher passen nicht alle BASIC-Dialekte hinein.
Optimizer
2
@Optimizer zumindest diejenigen , Dialekte , die Zeilennummern haben und prüfen Überlauf nicht (und haben ?für print) funktionieren sollte ... Wählen Sie einfach eine andere Zeilennummer.
Jimmy23013