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 Jabberwocky
x 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.
- Rufen Sie den Online-CJam-Interpreter auf .
Fügen Sie den folgenden Code ein
l:A; qN/W%A16**33/z{A-__|=}%:*"D""Not d"?"iagonally unique"
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~~~~ ~~~~~~~~~~~")) ~ ~~~~~~~~~~~ ; ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
Lauf.
Lassen Sie mich wissen, wenn Sie denken, dass es einen Fehler hat.
quelle
Antworten:
30 3335 SprachenReservierter Charakter:
~
Sprachen:
(Pyth und CJam dank user23013)
quelle
putStr[ln]...
. Auch haskell hat nicht;;
. Ich glaube du hast es mit Ocaml gemischt.;;
). Sowieso ersetzte Haskell durch etwas anderes.| p b"Jabberwocky" |
funktioniert zum Beispiel17 Sprachen
Hier ist das Raster mit
.
dem reservierten Zeichen:Und hier sind die Sprachen und ihre Pfade (ignorieren Sie die vertikalen Balken):
Ich konnte nicht alle testen. Lassen Sie mich wissen, wenn etwas nicht funktioniert.
quelle
<?
hier ist18 Sprachen und mehr
Reserviertes Zeichen:
~
.Sprachen:
und...
Es sollte viel mehr Basic-Dialekte geben , die funktionieren. Aber ich habe noch keine Zeit, alle zu testen.
quelle
?
fürprint
) funktionieren sollte ... Wählen Sie einfach eine andere Zeilennummer.