Der Code auf dieser Site wird schnell aufgebraucht. Wir müssen in erneuerbare Saiten investieren. Sie müssen also ein Programm schreiben, das einen String aufnimmt und in eine Windmühle umwandelt.
Die Herausforderung
Nehmen wir als Beispiel eine einfache Windmühlenschnur. Nimm die Schnur abc
. In diesem Fall ist der Drehpunkt das zentrale Zeichen b
. Da die Zeichenfolge 3 Zeichen lang ist, ist jede Ausgabe genau drei Zeilen groß und drei Zeichen breit. Hier ist Ihre Ausgabe in Schritt 1. (Beachten Sie das Leerzeichen)
ABC
Um den nächsten Schritt zu erreichen, drehen Sie jedes Zeichen im Uhrzeigersinn um den Drehpunkt. Hier ist Schritt 2:
ein b c
Hier sind die Schritte 3-8:
ein b c
ein b c
cba
c b ein
c b ein
c b ein
Beim neunten Schritt schließt sich der Kreis zur ursprünglichen Zeichenfolge:
ABC
Beachten Sie, dass b
die ganze Zeit an der gleichen Stelle geblieben ist. Dies liegt daran, dass b
es sich um das Pivot-Zeichen handelt. Sie müssen ein Programm oder eine Funktion schreiben, die eine Zeichenfolge als Eingabe verwendet und diese Sequenz wiederholt ausgibt, bis das Programm geschlossen wird.
Klarstellungen
Alle eingegebenen Zeichenfolgen haben eine ungerade Anzahl von Zeichen. (Damit jede Windmühle einen Drehpunkt hat)
Um die Herausforderung einfach zu halten, enthalten alle Zeichenfolgen nur Groß- und Kleinbuchstaben.
Die Ausgabe muss
len(input_string)
Zeichen breit und hoch sein.Es spielt keine Rolle, mit welchem Schritt der Sequenz Sie beginnen, solange Sie sich weiter drehen und für immer eine Schleife bilden.
Mehr Test IO:
Da der Beitrag schon ziemlich lang ist, hier ein Link zur Ausgabe für "windmill":
Randnotiz:
Da dies eine Windmühle sein soll, wäre es fantastisch, wenn Sie einen Boilerplate-Code einfügen, um ihn mit einer kleinen Zeitverzögerung oder einer Benutzereingabe zwischen den einzelnen Schritten zu animieren. Da einige Sprachen jedoch keine integrierten Zeitfunktionen haben, ist dies nicht zwingend erforderlich. Der konkurrierende Teil Ihrer Einreichung kann die Sequenz einfach so schnell wie möglich ausdrucken.
Antworten:
MATL ,
353321 BytesIm Folgenden wird die Windmühle animiert ( 26 Byte) )
Online Demo
In dieser Version ist die
Xx
gibt das an, dass die Anzeige gelöscht werden soll, und es1Y.
erfolgt eine Pause von 1 Sekunde.Erläuterung
Die Grundidee ist, dass wir zwei Versionen der Eingabe erstellen möchten. Eine "orthogonale" Version
Und eine "diagonale" Version
Wir schieben diese beiden Versionen auf den Stapel. Jedes Mal, wenn wir die Schleife durchlaufen, wechseln wir die Stapelreihenfolge und drehen die obere im Uhrzeigersinn.
quelle
JavaScript (ES6), 291 Byte
quelle
05AB1E ,
8853 BytesCode:
Probieren Sie es online! . Stellen Sie sicher, dass Sie die Kill-Taste direkt nach dem Ausführen drücken, da sie in eine Endlosschleife übergeht.
quelle
Ruby,
122119 BytesUngolfed-Version mit Schlaf, im Testprogramm
Die Rotation ist bei voller Konsolenhöhe nicht sehr überzeugend. Wenn Sie jedoch die Höhe auf die Länge der Eingabezeichenfolge reduzieren, ist die Drehung viel überzeugender.
quelle
MATL ,
4744 BytesProbieren Sie es online! (aber sofort töten, Endlosschleife)
Mit 1-Sekunden-Pause: 56 Bytes
Probieren Sie es online! (wieder Endlosschleife)
quelle
Python 3 , 193 Bytes
Ungolfed
Rekursiv, 177 Bytes
(Absturz nach wenigen Sekunden)
Ungolfed
Eine andere Lösung, 268 Bytes
Ungolfed
quelle
Pyth, 48 Bytes
Probieren Sie es online! (Hinweis: Dies ist eine Version, die keine Endlosschleife ausführt, da der Interpreter abstürzen würde.)
Schamlos übersetzt aus der Python 3-Lösung von @ByHH .
Wie es funktioniert:
quelle