Die Aufgabe ist sehr einfach, wenn eine Eingabe gegeben ist, geben Sie eine der folgenden Spiralen aus:
Input = 1
ergibt eine Spirale mit dem Buchstaben A
beginnend in der oberen linken Ecke:
A B C D E F
T U V W X G
S 5 6 7 Y H
R 4 9 8 Z I
Q 3 2 1 0 J
P O N M L K
Input = 2
ergibt eine Spirale mit dem Buchstaben, der A
in der oberen rechten Ecke beginnt:
P Q R S T A
O 3 4 5 U B
N 2 9 6 V C
M 1 8 7 W D
L 0 Z Y X E
K J I H G F
Input = 3
ergibt eine Spirale mit dem Buchstaben, der A
in der unteren rechten Ecke beginnt:
K L M N O P
J 0 1 2 3 Q
I Z 8 9 4 R
H Y 7 6 5 S
G X W V U T
F E D C B A
Input = 4
ergibt eine Spirale mit dem Buchstaben A
beginnend in der linken unteren Ecke:
F G H I J K
E X Y Z 0 L
D W 7 8 1 M
C V 6 9 2 N
B U 5 4 3 O
A T S R Q P
Wie Sie sehen, bewegt sich die Spirale immer im Uhrzeigersinn von außen nach innen .
Die Regeln sind einfach:
- Sie müssen ein vollständiges Programm mit STDIN und STDOUT oder dem nächstgelegenen Äquivalent bereitstellen, falls dies nicht möglich ist.
- Bei einer Eingabe (
1, 2, 3, 4
) wird die zugehörige Spirale ausgegeben. - Nachgestellte Leerzeichen sind zulässig
- Führende Leerzeichen sind zulässig, wenn sie konsistent verwendet werden
- Sie müssen für die Ausgabe Großbuchstaben verwenden, Kleinbuchstaben sind nicht zulässig.
- Das ist Code-Golf , also gewinnt das Programm mit der geringsten Anzahl von Bytes!
Antworten:
CJam,
454342 BytesTeste es hier.
Erläuterung
quelle
Japt , 53 Bytes
58 59 605 Bytes gespart dank @ETHproductions
Dabei wird der Befehl "Drehen" verwendet, von dem ich nie gedacht hätte, dass er so nützlich ist
Erklärung && Ungolfed
Probieren Sie es online aus
quelle
"FGHIJK EXYZ0L DW781M CV692N BU543O ATSRQP"¸zU ®¬¸} ·
Mathematica 156 Bytes
Konvertiert die Anfangsbuchstabenfolge
"ABCDEFTUVWXGS567YHR498ZIQ3210JPONMLK"
in ein Array.Nest
giltf
für diese Array-n-1
Zeiten, wobei n die Eingangsnummer ist.f
Funktioniert, indemTranspose
das Array gefolgt vonReverse
auf jede Zeile angewendet wird.g
wandelt das endgültige Array in einen String um.Beispiel
Wenn die Ausgabe als Array angegeben werden könnte, wäre die Funktion
g
nicht erforderlich.quelle
MATLAB,
6189 BytesIch werde sehen, ob ich es ein bisschen runterholen kann. Bin mir aber nicht sicher.
Dadurch wird ein Array aller Buchstaben von A bis Z erstellt, gefolgt von 0 bis 9. Anschließend wird eine Spirale erstellt, mit der die Daten in der richtigen Reihenfolge angeordnet werden. Das Array wird dann um den vom Benutzer angegebenen Betrag gedreht und ausgedruckt.
Die Ausgabe verwendet konsistent führende Leerzeichen, wie in der Frage angegeben (ohne zusätzliche Bytekosten könnten stattdessen nachfolgende Leerzeichen verwendet werden). Hier ist ein Beispiel:
Wie ich gesehen habe, dass Leerzeichen erforderlich sind, ist dieser ursprüngliche Code (für 61) ungültig, da zwischen den einzelnen Zeichen kein Leerzeichen eingefügt wird. Aber ich werde es hier als Referenz hinzufügen.
und produziert:
quelle
JavaScript ES6, 165
172Einfache Drehung ausgehend von einer fest codierten Zeichenfolge
Hinweis 1 Byte gespeichert dank @ user81655
Testschnipsel:
quelle
`<newline>`
ein Byte kürzer sind als`\n`
.Pyth - 60 Bytes
Codiert die Zeichenfolge fest und verwendet Matrixoperationen, um alle Optionen abzurufen.
Test Suite .
quelle
+<G6"
statt"ABCDEF
spart 2 Bytes.Ruby, 173 Bytes
Ungolfed:
Verwendung:
quelle
Python, 152 Bytes
quelle