Schreiben Sie ein Programm oder eine Funktion, die bei Bedarf n
eine n
lange Spirale aus lateinischem Alphabet ABCDEFGHIJKLMNOPQRSTUVWXYZ
ausgibt. Diese Spirale soll nur vorwärts durch das Alphabet laufen.
Bezogen auf Alphabet-Spirale , obwohl die Spirale vorwärts und rückwärts durch das Alphabet läuft und die Spirale konstant ist.
Testfälle
4 AB
DC
40 UVWXYZ
TGHIJA
NSFABKB
MREDCLC
LQPONMD
KJIHGFE
0
10 GHIJ
FAB
EDC
1000 UVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
TGHIJKLMNOPQRSTUVWXYZABCDEFGHIJA
SFABCDEFGHIJKLMNOPQRSTUVWXYZABKB
REZCDEFGHIJKLMNOPQRSTUVWXYZABCLC
QDYBMNOPQRSTUVWXYZABCDEFGHIJCDMD
PCXALEFGHIJKLMNOPQRSTUVWXYZKDENE
OBWZKDEFGHIJKLMNOPQRSTUVWXALEFOF
NAVYJCDMNOPQRSTUVWXYZABCDYBMFGPG
MZUXIBCLCDEFGHIJKLMNOPQREZCNGHQH
LYTWHABKBABCDEFGHIJKLMNSFADOHIRI
KXSVGZAJAZGHIJKLMNOPQROTGBEPIJSJ
JWRUFYZIZYFUVWXYZABCDSPUHCFQJKTK
IVQTEXYHYXETQRSTUVWXETQVIDGRKLUL
HUPSDWXGXWDSPUVWXYZYFURWJEHSLMVM
GTORCVWFWVCROTGHIJAZGVSXKFITMNWN
FSNQBUVEVUBQNSFABKBAHWTYLGJUNOXO
ERMPATUDUTAPMREDCLCBIXUZMHKVOPYP
DQLOZSTCTSZOLQPONMDCJYVANILWPQZQ
CPKNYRSBSRYNKJIHGFEDKZWBOJMXQRAR
BOJMXQRARQXMLKJIHGFELAXCPKNYRSBS
ANILWPQZQPWVUTSRQPONMBYDQLOZSTCT
ZMHKVOPYPONMLKJIHGFEDCZERMPATUDU
YLGJUNOXONMLKJIHGFEDCBAFSNQBUVEV
XKFITMNWVUTSRQPONMLKJIHGTORCVWFW
WJEHSLMLKJIHGFEDCBAZYXWVUPSDWXGX
VIDGRKJIHGFEDCBAZYXWVUTSRQTEXYHY
UHCFQPONMLKJIHGFEDCBAZYXWVUFYZIZ
TGBEDCBAZYXWVUTSRQPONMLKJIHGZAJA
SFAZYXWVUTSRQPONMLKJIHGFEDCBABKB
REDCBAZYXWVUTSRQPONMLKJIHGFEDCLC
QPONMLKJIHGFEDCBAZYXWVUTSRQPONMD
LKJIHGFE
Regeln
- Ihre Eingabe ist eine nicht negative Ganzzahl
0 <= n <= 1000
, aber Ihr Code sollte theoretisch jede nicht negative Ganzzahl verarbeiten können. - Ihr Ausgabeformat kann in jedem vernünftigen Format vorliegen, gegebenenfalls mit Trennzeichen.
- Drehungen und Reflexionen sind gleichwertig.
- Ihr Alphabet kann in Groß- oder Kleinbuchstaben geschrieben sein.
- Die leeren Stellen in Ihrer Spirale können mit allen nicht-alphabetischen Nullen gefüllt werden, die Sie für richtig halten.
- Die Spirale selbst kann jede Form haben, die Sie für richtig halten. Rechteckige Spiralen funktionieren am besten mit ASCII-Lösungen, grafische Lösungen können jedoch mit kreisförmigen Spiralen kürzer sein.
- Führende und nachfolgende Leerzeichen und Zeilenumbrüche sind zulässig.
- Das ist Code Golf. Die kürzeste Antwort in Bytes (oder Äquivalent) gewinnt.
Wie immer, wenn etwas unklar oder falsch ist, lassen Sie es mich bitte in den Kommentaren wissen. Viel Glück und gutes Golfen!
Antworten:
Logo,
12987 BytesGrafische Lösung, als Funktion implementiert
Dies basiert auf dem Logo-Interpreter von Calormen.com . Die
S
Funktion nimmt die Anzahl der Zeichen als Parameter und zeichnet sie spiralförmig.Die. Ich entschied, dass es schöner aussah (und 42 Bytes ausgab ), die Buchstabenausrichtung nicht zu korrigieren. Ich habe auch den Abstand verschärft, der die Byteanzahl nicht verändert hat. Wenn Sie tatsächlich ein Alphabet aufrollen würden, würde es sowieso eher so aussehen.T
Funktion gibt Buchstaben aufrecht aus, um zu verhindern, dass sie sich mit der Spirale drehen.Aktualisierte Version (Buchstabenrolle)
Aufruf
Rufen Sie Folgendes auf:
S
IterationenBeispielausgabe
Alte Version (Buchstaben immer aufrecht)
Alte Ausgabe aus Platzgründen entfernt. Sehen Sie es hier .
quelle
95
wird die Enge der Spirale geändert, und15
durch Anpassen von wird der lineare Abstand der Buchstaben angepasst.Javascript (ES6),
203 bis201 ByteDemo
Die Demo unten sollte vorzugsweise ganzseitig ausgeführt werden.
Code-Snippet anzeigen
quelle
R, 46 oder 51 Bytes, je nach Abstand
(Aktualisierte Version des Plots: Die graue Spirale wird standardmäßig nicht gezeichnet, aber ich habe sie nachträglich hinzugefügt, um zu zeigen, dass die Buchstaben tatsächlich auf einer Spirale liegen.)
Die Spirale hat keinen konstanten Abstand, also hoffe ich, dass dies in Ordnung ist. Wenn ein konstanter Abstand erforderlich ist, beginnen Sie
s=(1:scan())^.5
stattdessen mit und addieren Sie 5 Byte zur Gesamtsumme. Dann ist die Ausgabe wie folgt (n = 150):quelle
Python 3.5,
180157152147141 Bytes-6 wegen Sherlock9
-5 wegen Kap.
Überarbeitete Lösung, Python 3.x:
Vorherige Lösung:
Erläuterung
r
ist eine Liste von Listen, die die Spirale enthält. Die Grundidee ist, dass der unteren Reihe der Spirale (r[-1].append(chr(x%26+65))
) neue Buchstaben hinzugefügt werden . Wenn die unterste Reihe gefüllt ist, wird die Spirale um 90 im Uhrzeigersinn gedreht und eine neue leere Reihe hinzugefügt (r = list(zip(*r[::-1]))+[[]]
).Der Trick besteht darin, herauszufinden, wann die Spirale gedreht werden muss. In der ersten Lösung
(j<1for i in R(n)for j in R(i//2+1))
erzeugt der Generator eine Folge von Richtig / Falsch-Werten, die angeben, wann die Spirale gedreht werden soll. In der überarbeiteten Lösung habe ich die Art derr
Initialisierung geändert . Wenn die Länge der unteren Reihe der Länge der oberen Reihe entspricht, muss die Spirale gedreht werden.quelle
if len(r[-1])==len(r[0]):r=list(zip(*r[::-1]))+[[]]
mitif len(r[-1])==len(r[0]):r=[*zip(*r[::-1]),[]]
zu speichern 5 Byte.range
einmal verwenden, können Sie entfernenR
, um Bytes zu sparen. Sie können auch speichern Bytes durch Ihre Antwort auf ein volles Programm konvertieren, obwohl die Verwendung von zu erhalten[*zip(*r[::-1]),[]]
, müssen Sie verwenden müssenrange(int(input()))
.for x in range(int(input())):r=len(r[-1])<len(r[0])and r or[*zip(*r[::-1]),[]];r[-1]+=[chr(x%26+65)]
prüfen Sie, ob die letzte Zeile mit der ersten Zeile übereinstimmt oder größer ist.n
in dieser Version nicht definiert . Entweder müssen Sieint(input())
eine Funktion verwenden oder eine Sicherungskopie erstellen.for
Schleife:for x in range(int(input())):r=len(r[-1])<len(r[0])and r or[*zip(*r[::-1]),[]];r[-1]+=[chr(x%26+65)]
MATL ,
2118 BytesDie Eingabe wird
0
mit einem Fehler beendet (was standardmäßig zulässig ist ).Probieren Sie es online!
Erläuterung
quelle
Python 2,
8482 BytesIch benutze wieder Turtle. Es macht so viel Spaß! : D
Probieren Sie es online aus
Leider hat Trinket.io eine schrecklich kleine Leinwand. Ich änderte
9+i
an9+i/9
und die Schildkröte Ausgangspunkt für die Zwecke der Screen Capturing dieses Bildes eingestellt, so dass mehr von dem Ausgang passen würde:quelle
from turtle import*
und ein anderes vom Ändern vonwhile
zufor i in range(input())
Pyth, 32 Bytes
Ein Programm, das eine rechteckige ASCII-Spirale in Kleinbuchstaben druckt. Abhängig von der Eingabe kann eine Zeile oder Spalte mit führenden oder nachfolgenden Leerzeichen vorhanden sein.
Probieren Sie es online aus
Wie es funktioniert
quelle
TSQL,
386362358306 BytesBitte beachten Sie, dass TSQL keine Möglichkeit hat, Text zu drehen. Dieses Skript beginnt bei A und berechnet, in welche Richtung der nächste Buchstabe gesetzt werden soll. (rechts, unten, links, links, links, oben, oben, rechts ...)
Das Skript kann maximal 7744 Buchstaben verarbeiten.
Golf gespielt:
Ungolfed:
Geige
quelle
Python 2, 243 Bytes
Ideone es!
quelle
PHP , 219 Bytes
Probieren Sie es online!
PHP, 260 Bytes
Alte Version
quelle