Einführung
Schreiben Sie ein Programm, um die Ausgangsspirale des berühmten Pangrams nach vorgegebenen Regeln auszugeben.
Herausforderung
Ein Pangram ist ein Satz, der jeden Buchstaben eines bestimmten Alphabets mindestens einmal verwendet. Einer der bekanntesten Pangrams ist der, der in der Windows-Schriftartenanzeige ausgiebig verwendet wird, nämlich " Der schnelle braune Fuchs springt über den faulen Hund ". Die Herausforderung besteht darin, eine Spirale basierend auf diesem Text auszugeben.
Ihre Aufgabe gibt genau diesen Text aus:
heeeeellllllllllllazzzzzzzzzzz
hummmmmmmmmmmmmppppppppppppppy
hubrrrrrrrrrrrrrrrrrrooooooosy
hukyddddoooooooooooooooggggwsy
hukyveeeeerrrrrrrrrrrrrrrrtwsy
hukyvxjjjjjjjjjjuuuuuuuuuttwsy
hukyvxkbbrrrrrrrrrrrrrrrmttwsy
hukyvxkogggggggttttttttomttwsy
tukyvokoellllllllllllahomttwsy
tukyvokoeovvvvvvvvvvvzhomttwsy
tukyvocoeoummmmmmmmmezhomttwsy
tukyvocoeoufooooooopezhomttwsy
tukyvocohoufroooooxpezhomttwsy
tukyvoiohoufrquuuwxpezhomttwsy
tucyvoiohoufbqttiwxpezhomttwsy
tucyvoiohoufbeehiwxprzhomttwsy
tucyvoiohoufkccciwxprzeomttwsy
tjiyvoidhounnnnnnwxprzeomttwsy
tjiyvoidhojjjjjjjjxprzeomttwsy
tjiyvoidhssssssssssprzeopttwsy
tjiyvoidttttttttttttrzeopttwsy
tjiyvoiyyyyyyyyyyyyyyzqopttwoy
tjiyvouuuuuuuuuuuuuuuuqwpttwoy
tjiyvffffnnnnnnnnnnnnnnwpttwoy
tjiyossssssssssssssssssspthwoy
tjizzzzalllllllllllleeeeehhwoy
tjuuqqqqqqqqqqqqqqqqqeeeeehnod
txxxxxoooooooooooooooffffffnod
reeeeevvvvvvvvvvvvvvvvvvvvvvod
gggggggoooooooooooooood
Hier ist, wie es erzeugt wird,
- Es gab einen eifrigen Fuchs, der den Pangram "Der schnelle braune Fuchs springt über den faulen Hund" genoss. Eines Tages befand er sich in der Mitte einer äußeren Spirale und beschloss, hineinzuspringen und mitzumalen.
- Er möchte den Pangram von Anfang bis Ende durchgehen, und wenn ein Buchstabe der n-te Buchstabe im Alphabet ist, möchte er ihn n-mal malen.
- Der Fuchs war jedoch nicht sehr gut darin, Kurven zu fahren, so dass er beim Erreichen jeder Kurve auch anhalten und zum nächsten Buchstaben wechseln musste.
- Er beschloss auch, den Pangram dreimal zu wiederholen, um zu betonen, dass er der schnelle braune Fuchs ist.
- Ihre Aufgabe ist es, zu zeigen, wie die Spirale aussehen würde, nachdem der Fuchs all diese Buchstaben gemalt hat.
(Einfache Version ohne Geschichtenerzählen)
Der berühmte Pangram "Der schnelle braune Fuchs springt über den faulen Hund" wird dreimal wiederholt, wobei die Leerzeichen entfernt und alle Buchstaben in Kleinbuchstaben geschrieben werden
thequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydog
Die Spirale beginnt in der Mitte und beginnt mit dem Buchstaben "t". Sie beginnt nach rechts und geht im Uhrzeigersinn nach außen. Wenn das aktuelle Zeichen der n-te Buchstabe im Alphabet ist, wird immer zum nächsten Zeichen gewechselt
- die Spirale erreicht eine Ecke oder
- Die aktuellen Buchstaben werden genau n-mal gedruckt.
Um es besser zu veranschaulichen, werde ich erklären, wie die Spirale in Bezug auf die ersten drei Wörter "thequickbrown" erzeugt wird.
rooooo
rquuuw
bqttiw
beehiw
kccciw
nnnnnnw
Der Fuchs beginnt bei "t", geht nach rechts, erreicht die erste Ecke, malt sie mit "t" und wechselt dann zu "h" und geht nach unten, erreicht die zweite Ecke, wechselt zu "e" und geht nach links, erreicht die 3. Ecke, wechselt zu "q" und geht nach oben, erreicht die 4. Ecke, wechselt zu "u" und geht nach rechts, erreicht eine Ecke und wechselt zu "i", geht nach unten, erreicht eine Ecke und wechselt zu "c", geht links, malt erfolgreich 3 "c" s vor Erreichen der nächsten Ecke , wechselt zu "k" und geht nach links , erreicht eine Ecke sofort, wechselt zu "b" und steigt auf, malt 2 "b" s vor Erreichen die nächste Ecke wechselt zu "r"und geht weiter nach oben , erreicht eine Ecke und wechselt zu "o", geht rechts, dann "w", runter, "n", links.
Technische Daten
Sie können eine optionale Eingabe vornehmen, die eine beliebige Standardform der Zeichenfolge enthält
thequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydog
Ihre Ausgabe muss als Zeichenfolge formatiert sein und muss mit korrekt platzierten Zeilenumbrüchen zu STDOUT anstelle von Dateien oder STDERR gehen. Leerzeilen überschreiben und abschließen spielt keine Rolle. Überschriften und abschließende Leerzeichen in jeder Zeile sind zulässig, müssen jedoch konsistent sein. Wenn Sie also 5 Leerzeichen vor einer Zeile des angegebenen Texts einfügen, müssen Sie genau 5 Leerzeichen vor jeder Zeile einfügen, damit die Spirale gleich aussieht.
Dies ist Code-Golf , die niedrigste Anzahl von Bytes gewinnt.
Wie üblich gelten hier Standardlücken .
Erklärungen sind willkommen, aber nicht notwendig.
Titel bearbeitet, um es zu einem Pangram pro Kommentar von Caird Coinheringaahing zu machen.
Der faule Hund ist zu faul, um in der Geschichte zu erscheinen.
Ich möchte eine Zeichenfolge-Abfrage erstellen, bei der der auszugebende Buchstabe nicht durch einfache Funktionen der Koordinaten berechnet werden kann.
quelle
Antworten:
Stax ,
35343332 BytesFühren Sie es online aus und debuggen Sie es
Stax ist eine Sprache, an der ich seit ungefähr 6 Monaten arbeite. Dies ist das erste öffentliche Golfen damit. Kommen wir zur Sache.
Stax wird normalerweise in den druckbaren ASCII-Zeichensatz geschrieben. Diese 34-Byte-Übermittlung ist in eine Variante des CP437-Zeichensatzes gepackt . Die entsprechende ASCII-Darstellung lautet
Stax ist eine stapelbasierte Sprache, hat jedoch zwei Datenstapel, "main" und "input". Die meisten Operationen verwenden den Hauptstapel, aber die Eingabe beginnt auf dem Eingabestapel. Stax-Anweisungen sind meistens ASCII-Sequenzen mit einem oder zwei Zeichen. Die meisten von ihnen sind überlastet, was bedeutet, dass ihr Verhalten von den wenigen obersten Werten auf dem Stapel bestimmt wird.
Auf einer hohen Ebene erstellt dieses Programm ein Raster, indem wiederholt Zeichenfolgen an die letzte Zeile angehängt werden. Wenn die letzte Zeile voll ist, wird das Raster im Uhrzeigersinn gedreht. Am Ende wird das Raster horizontal gespiegelt. Im Detail funktioniert das Programm so.
quelle
Charcoal ,
664036 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Bearbeiten: Speichert 16 Bytes, indem der Text als Eingabe verwendet wird. Erläuterung:
Beginnen Sie mit 2
t
s aus irgendeinem Grund.Überfliege alle Buchstaben im Pangram.
Haben wir schon eine Ecke erreicht?
Bewegen Sie sich eine Zeile nach unten (oder in die nächste Richtung).
Drehen Sie die Druckrichtung um 90 ° im Uhrzeigersinn.
Berechnen Sie die Länge der nächsten Seite.
Beenden Sie die Korrektur der Cursorposition. (Holzkohle hätte es vorgezogen, wenn die Seite kurz vor der Ecke endete, sodass Sie sich an der Ecke selbst drehten.)
Schleife so oft wie der aktuelle Buchstabe im Alphabet.
Wenn wir die Ecke nicht erreicht haben,
Verringern Sie die Anzahl und drucken Sie den aktuellen Buchstaben.
quelle
Ruby ,
217212209208 BytesProbieren Sie es online!
Verbringen Sie viel Zeit mit dem Verwalten von Zeigern, sodass möglicherweise Platz für mehr Golf vorhanden ist.
-5 Bytes: Verdreifachen Sie den Pangram vor der Eingabe. Dank Weijun Zhou .
-3 Bytes: Füllen Sie die Eingabezeichenfolge auf und kürzen Sie das letzte Bein, anstatt das letzte Bein von Grund auf neu zu generieren.
-1 Byte: Verwenden Sie
&&
anstelle eines ternären Operators einen Wegwerfwert.Erläuterung:
quelle
r
undl
Lambdas. Basierend auf den aktuellen Antworten scheint das letzte Bein ein Problem zu sein, obwohl es nicht war, als ich mein C-Snippet schrieb, um die Beispielausgabe zu generieren ...s*=3
Ganze speichern und auch0
im?:
Operator weglassen . tio.run/…0
allerdings, oder Ruby ruft dasc+=1
aus der nächsten Zeile auf und führt es nur die meiste Zeit aus. Und schöne Herausforderung!