Die esoterische Programmiersprache evil hat eine interessante Operation für Bytewerte, die sie "Weben" nennt. Es ist im Wesentlichen eine Permutation der acht Bits des Bytes (es spielt keine Rolle, von welchem Ende aus wir zu zählen beginnen, da das Muster symmetrisch ist):
- Bit 0 wird nach Bit 2 verschoben
- Bit 1 wird nach Bit 0 verschoben
- Bit 2 wird nach Bit 4 verschoben
- Bit 3 wird nach Bit 1 verschoben
- Bit 4 wird nach Bit 6 verschoben
- Bit 5 wird nach Bit 3 verschoben
- Bit 6 wird nach Bit 7 verschoben
- Bit 7 wird nach Bit 5 verschoben
Der Einfachheit halber sind hier zwei weitere Darstellungen der Permutation. Als Zyklus:
(02467531)
Und als Liste von Paaren des Mappings:
[[0,2], [1,0], [2,4], [3,1], [4,6], [5,3], [6,7], [7,5]]
Ihre Aufgabe ist es, diese Permutation sichtbar zu machen, die Box-Zeichnen von Buchstaben mit ─
, │
, ┌
, ┐
, └
, ┘
, ┼
(Unicode - Codepunkte: U + 2500, U + 2502, U + 250C, U + 2510, U + 2514, U + 2518, U + 253C). Diese Visualisierung sollte die folgenden Einschränkungen erfüllen:
Die erste und letzte Zeile sind genau:
0 1 2 3 4 5 6 7
Dazwischen können Sie beliebig viele Zeilen mit jeweils bis zu 15 Zeichen für die Zeichen Ihrer Box verwenden (Sie benötigen mindestens 4 Zeilen). Die Zeilen sollten vertikal unter einer der Ziffern in der ersten Zeile beginnen und vertikal über der entsprechenden Ziffer in der letzten Zeile enden. Die acht Linien müssen verbunden sein und dürfen sich nur überkreuzen ┼
(das ist immer eine Kreuzung, niemals zwei sich berührende Wendelinien). Die genauen Wege der Linien liegen bei Ihnen (und die Suche nach einem besonders golffähigen Layout ist der Kern dieser Herausforderung). Eine gültige Ausgabe wäre:
0 1 2 3 4 5 6 7
│ │ └─┼┐│ │ └┐│
└─┼─┐ ││└─┼─┐││
┌─┘ │ ││ │ │││
│ ┌─┼─┘│ │ │││
│ │ │ ┌┼──┘ │││
│ │ │ │└┐ ┌─┼┼┘
│ │ │ │ │ │ │└┐
0 1 2 3 4 5 6 7
Jedes andere Layout, das die richtigen Ziffern richtig verbindet, ist jedoch auch in Ordnung. Bitte zeigen Sie Ihre gewählte Ausgabe in Ihrer Antwort.
Sie können ein Programm oder eine Funktion schreiben und nehmen keine Eingaben vor. Geben Sie das Diagramm entweder an STDOUT (oder an die nächstgelegene Alternative) oder als Funktionsrückgabewert in Form einer Zeichenfolge oder einer Liste von Zeichenfolgen (die jeweils eine Zeile darstellen) aus.
Es gelten die Standardregeln für Code-Golf , sodass der kürzeste Code (in Byte) gewinnt.
quelle
01234567
als Ein- und verbindet dann das zu01234567
? Damit Sie die Links selbst herausfinden müssen? Gerade beim Golfen wäre es eine deutlich anspruchsvollere Aufgabe.Antworten:
Eigentlich 69 Bytes
Probieren Sie es online! (Die Ausrichtung ist im Online-Interpreter ein wenig durcheinander)
Tatsächlich hat dies einen RIESIGEN Vorteil: Alle Box-Zeichen befinden sich im CP437, sie sind also jeweils nur ein Byte. Obwohl jedes benötigte Zeichen theoretisch in 4 Bits codiert werden könnte (da es nur 9 eindeutige Zeichen gibt), würden die durch Komprimieren der Zeichenfolge gesparten 31 Bytes aufgrund der sehr schlechten Stringverarbeitungsfähigkeiten von Actually verloren gehen. Dies bedeutet auch, dass jede 8x4-Konfiguration die gleiche Punktzahl ergibt. Da 8x4 die (vertikal) kürzeste mögliche Konfiguration zu sein scheint, ist dies optimal.
Danke an Martin für 3 Bytes!
Danke an TimmyD für 4 weitere Bytes!
Erläuterung:
quelle
PowerShell v2 +,
172153148145142131123 Byte (81 Zeichen)Ich habe das Weben weiter vertieft und durch die Verwendung von Inline-Codeblöcken die Notwendigkeit mehrerer Variablen beseitigt. Dies liegt wahrscheinlich innerhalb weniger Bytes des Optimums.
Wir beginnen mit der Einstellung
$a
des Bereichs0..7
, der mit Leerzeichen verbunden wurde. Dies liegt daran, dass der Standardwert$ofs
(Ausgabefeldtrennzeichen) für ein Array ein Leerzeichen ist. Wenn das Array also""+
mit einem String versehen wird (mit einem Operator wie diesem versucht PowerShell, das rechte Objekt implizit als linkes Objekt umzuwandeln ). Das Ergebnis ist der durch Leerzeichen getrennte Bereich.Das ist in Parens eingekapselt, was das Ergebnis in die Pipeline einfügt. Wir
$b
richten dann eine One-Helper-Variable ein , gefolgt von vier Ausgabezeilen mit der entsprechenden Variablen (aufgeteilt mit wörtlichen Zeilenumbrüchen) und verwenden Inline-Codeblöcke für Wiederholungsabschnitte, gefolgt von einer$a
erneuten Ausgabe . Die vier Zeilen und$a
werden ebenfalls in der Pipeline platziert, und die Ausgabe erfolgt am Ende implizit.quelle
Javascript ES6,
168167 BytesEdit: Whoops, stellte sich heraus, dass ich in einem Teil der Funktion das Pipe-
|
Zeichen anstelle von U + 2502 verwendet habe│
. Die Anzahl der Bytes wurde aktualisiert.Gibt eine Zeichenfolge zurück.
Ausgabe:
Extra: Mit der @ TimmyD-Methode habe ich eine weitere 167-Byte-Lösung:
quelle
JavaScript (ES6),
137134 BytesAls Klingelton erkannte ich dies sofort als die ersten beiden Zeilen von Plain Hunt Major (beachten Sie, dass das verknüpfte Bild 1-8 anstelle von 0-7 verwendet).
quelle
Pyth -
11910410081 BytesExtrem einfach. (Diesmal sind es tatsächlich Bytes).
Probieren Sie es hier online aus .
Ich habe auch die Ausgabe von @ TimmyD gestohlen:
quelle
MS-DOS-Stapel, 136 Byte
Verwendung der @ TimmyD-Ausgabe. Dies funktioniert möglicherweise auch in Windows Batch, aber auf meiner Codepage befindet sich CP850, nicht CP437.
quelle
MATLAB / Octave,
112109 BytesAusgabe:
Mein Code basiert auf den Ausgängen von @Dendrobium und @Neil .
quelle
/// 112 Bytes (100 Zeichen)
Danke @MartinEnder für -3 Bytes!
Danke @MartinEnder für -9 Bytes!
Vielen Dank an @MartinEnder (OP) für den Hinweis auf die 15-Zeichen-Regel
Verwendet die
@ TimmyD@ Marco Ausgabequelle
Python3, 209 Bytes
Gibt eine Zeichenfolge zurück.
Vielen Dank an @Mego für das Speichern von 2 Bytes!
Credits des Charakterkörpers gehen an @TimmyD!
quelle
a,
Teil nicht, was auch den Aufruf mit einem Parameter überflüssig macht.Korrigiert , 99 Bytes (87 Zeichen)
Verwendet die Ausgabe von @ Marco (ersetzen Sie jedes 16. Zeichen durch eine neue Zeile (Regex:
(.{15}).
->\1\n
)).quelle
Bash + GNU sed, 140 Bytes
Ausgabe:
Verwendung der Ausgabe von @ TimmyD : 142 Bytes
Ausgabe:
quelle
Tcl , 205 Bytes
Probieren Sie es online!
Ausgänge
quelle
SOGL V0.12 , 64 Bytes
Probieren Sie es hier aus!
Muster aus der Powershell gestohlen
quelle