Ihr Job ist ganz einfach: Schreiben Sie ein Programm, das druckt Hello, world!
. Wenn Sie es verdrehen, erstellen Sie ein Programm, das druckt Twister!
.
Wie Saiten verdreht sind
Der Verdrehungsalgorithmus ist sehr einfach. Jede Spalte wird um ihren Index nach unten verschoben (Spalte 0 verschiebt sich um 0, Spalte 1 verschiebt sich um 1, ...). Die Spaltenverschiebung wird nach oben verschoben. Es sieht irgendwie so aus:
a
ba
cba
----
cba
cb
c
Alles unter der Linie nach oben. Reales Beispiel:
Original:
\\\\\\\\\\\\
............
............
............
Twisted:
\...\...\...
.\...\...\..
..\...\...\.
...\...\...\
(Weitere Beispiele und ein Twister in Ihrer Lieblingssprache finden Sie hier )
Wertung
Ihr Programm muss ein gepolstertes Rechteck sein. Dies ist Codegolf, also gewinnt die niedrigste Bytezahl!
Regeln
- Ihr erstes Programm muss gedruckt werden
Hello, world!
. Es ist nur eine nachgestellte Zeile zulässig. - Ihr erstes und zweites Programm müssen in derselben Sprache sein.
- Ihr zweites Programm muss gedruckt werden
Twister!
. Es ist nur eine nachgestellte Zeile zulässig. - Ihr Programm muss mindestens 2 Zeilen und 2 Spalten enthalten.
½
und bildet die Quadratwurzel einer Zahl. Welches der beiden sollte als neue Linie für diese Herausforderung angesehen werden?Antworten:
Jelly ,
333129 BytesOriginal
Probieren Sie es online aus.
Verdrehte
Probieren Sie es online!
Wie es funktioniert
In jedem Programm definiert jede Zeile eine Verknüpfung. Der letzte Link ist der Hauptlink und wird beim Programmstart ausgeführt. Da es keine Verweise auf den ersten Link gibt, wird dieser einfach ignoriert.
“ɗ⁻%OḶ$“¡¦ḟṠ»
Ergibt für beide Programme die Liste['Hello, world!', 'Twister!']
unter Verwendung der statischen Wörterbuchkomprimierung von Jelly .Der einzige Unterschied zwischen dem ursprünglichen und dem verdrehten Code ist das letzte Zeichen des Hauptlinks.
Ḣ
Wählt die erste Zeichenfolge der Liste undṪ
die letzte aus.quelle
Python 2, 59 Bytes
Verdrehte:
Grundsätzlich werden die
Twister!
Daten in die ungeraden Indizes der Zeichenfolge eingefügt, und anschließend werden stattdessen die ersten beiden Zeichen (Füllzeichen) entfernt und alle anderen Zeichen entfernt.quelle
print " Hello, world!" [2::]
Fission ,
215162565350 BytesHier ist ein Anfang:
Probieren Sie es online!
Wenn verdreht:
Probieren Sie es online!
Erläuterung
Der
Hello, world!
Code ist ziemlich einfach:D
erzeugt ein einzelnes Atom, das nach unten geht.\
(Spiegel) lenken es auf die zweite Säule um."Hello, world!"
druckt den gewünschten String.1
ist ein Portal. Es teleportiert das Atom1
in Lesereihenfolge zum nächsten und behält dabei seine Richtung bei (diejenige neben derr
).;
was das Atom zerstört und das Programm beendet.Der Kontrollfluss für den
Twister!
Code ist etwas mehr ... verdreht ...D
spawnt das Atom.\
lenkt es nach rechts ab, in die1
.1
. Das Atom trifft auf das,o
was nur seine Masse ändert, aber das können wir ignorieren. Der Code wird umgebrochen, sodass das Atom wieder auf dasselbe trifft1
und zwei Zeilen nach unten überspringt. Auch hier können wir das ignorierenl
, das Atom wickelt sich um und trifft das1
wieder.1
Der Code enthält jetzt kein weiteres Element, sodass das Atom ganz nach oben zurückspringt1
.\
geht nun wieder nach unten."Twister!"
druckt den erforderlichen Code.1
teleportiert das Atom erneut nach dem ersten;
, aber es;
wartet noch ein weiteres Mal darauf, dass es das Programm beendet.quelle
Spaltung , 35 Bytes
Teilungsansatz Nr. 3 (Nr. 4 mit der Nummer, die ich in meinem ersten Beitrag bearbeitet habe).
Probieren Sie es online!
Probieren Sie es online!
Erläuterung
Dies ist die bisher einfachste der Fission-Lösungen. In beiden Programmen gibt es zwei Einstiegspunkte:
R
Erstellt ein nach rechts undL
ein nach links gerichtetes Atom. In jedem Fall;
zerstört der eine sofort.Jetzt im
Hello, world!
Programm druckt das Atom zuerst die Hälfte der Zeichenkette mit und lenkt"Hello, "
dann (das sind Spiegel) das Atom auf die zweite nach links gehende Linie ab. (In Richtung des sich bewegenden Atoms lesen) Druckt den Rest der Zeichenfolge. ist jetzt ein No-Op und zerstört auch dieses Atom, wodurch das Programm beendet wird.\
/
"world!"
L
;
Das
Twister!
Programm ist im Wesentlichen das gleiche, aber um 180 Grad gedreht. Dieses MalL
überlebt das Atom und beginnt mit dem Drucken"Twist"
. Das\
und/
lenken es wieder auf die andere Linie um, jetzt gehts rechts."er!
druckt den Rest der Zeichenkette,R
ist ein No-Op und;
beendet das Programm.quelle
Spaltung, 53
Probieren Sie es online!
und verdreht:
Probieren Sie es online!
quelle
Japt,
676157 Bytes6 Bytes dank @JAtkin gespeichert, 4 Bytes dank @Ian
Verdrehte:
Testen Sie es online: Original , Twisted
Wie es funktioniert
quelle
Twister!
indem Sie die Leerzeichen durch ersetzen.
."T.w.i.s.t.e.r.!. . . . . "k".(newline)"H.e.l.l.o.,. .w.o.r.l.d.!"k".
Python, 398
414 380 456Byte *Es ist gelungen, ein Update durchzuführen, damit es den Regeln entspricht, aber ich zögere immer noch, dies als wettbewerbsfähig zu bezeichnen. Da die kommentierten Zeilen für die Ausführung benötigt werden, habe ich sie in die Byteanzahl aufgenommen
Diese Lösung folgt nicht den Regeln, da zusätzlich zur erlaubten Ausgabe Fehlermeldungen ausgegeben werden.Ich wollte nur sehen, ob dies in Python möglich ist. Es kann, aber es ist nicht schön.
Wenn verdreht wird
quelle
rint '
in jeder Zeile entfernen .C (gcc) 87 Bytes
Aufgedreht
Probieren Sie es online!
Verdrehte
Probieren Sie es online!
quelle
Brainfuck,
467367285 BytesAufgedreht
Probieren Sie es online!
Verdrehte
Probieren Sie es online!
quelle