Einführung
Lange Rede, kurzer Sinn: Vor ein paar Tagen habe ich aus Versehen angefangen, eine Socke zu stricken, und die hübsche logische Struktur der einfachen Stiche hat mich auf die Idee gebracht: Warum stricken wir nicht einfach eine Socke im ASCII-Format?
Eingang
Die Eingabe ist eine gerade Ganzzahl N im Bereich [2,30]
.
Ausgabe
Die Ausgabe ist offensichtlich eine Socke.
Struktur
Da wir nur normale Stiche verwenden, werden Sie nur für einen Stich nach v
unten und >
für einen Stich nach rechts verwenden. Lassen Sie mich die gesamte Struktur anhand eines Beispiels erläutern für N=8
:
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvv>>>
vvvvvv>>>>>>
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
- Der erste Block ist der obere Teil. Es hat die Breite
N
und die HöheN*1.5
- Danach beginnt die Ferse. Sie subtrahieren eine
v
pro Zeile von der rechten Seite, bis Sie dieN/2
Breite haben. Anschließend fügen SieN/2
Reihen mit der BreiteN/2
darunter hinzu, um die Abwärtsstrickarbeiten zu beenden. Beachten Sie, dass es insgesamtN/2 + 1
Zeilen mit der Breite gibtN/2
erster Teil:
vvvvvvvv //begin with width N
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv // N*1.5 times
vvvvvvv // reduce
vvvvvv
vvvvv
vvvv // till here
vvvv // repeat N/2 times
vvvv
vvvv
vvvv
- Jetzt fangen die Seitenwirkereien an. Sie beginnen mit der ersten verkleinerten Zeile, füllen
>
bis Sie die Breite habenN
und fügen zwei weitere hinzu. Setzen Sie diesen Vorgang mit der ersten Zeile mit derN/2
Breite fort - Füllen Sie die Zeilen unterhalb auf dieser Ebene und fügen Sie
N*1.5
mal>
zu , dass - Lassen Sie die äußeren Teile wie sie sind und fügen Sie die Reihe unter der ersten und über der Las zwei weitere hinzu,
>'s
bis es fertig ist
zweiter Teil:
vvvvvvvv
vvvvvvv>>> //fill to N and add two >
vvvvvv>>>>>> //repeat
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>> //till here
vvvv>>>>>>>>>>>>>>>>>>>>>>>> //fill to the row above and add N*1.5 times >
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row above
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row beneath
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
Regeln
Neue Zeilen nachziehen ist in Ordnung.
Sie können zwischen Groß- und Kleinschreibung wählen V
, diese muss jedoch konsistent sein.
Das ist Code-Golf, also gewinnt der kürzeste Code in Bytes.
Testfälle
N=2
vv
vv
vv
v>>>
v>>>>>>
N=4
vvvv
vvvv
vvvv
vvvv
vvvv
vvvv
vvv>>>
vv>>>>>>
vv>>>>>>>>>>>>
vv>>>>>>>>>>>>
N=6
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvv>>>
vvvv>>>>>>
vvv>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
N=12
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvv>>>
vvvvvvvvvv>>>>>>
vvvvvvvvv>>>>>>>>>
vvvvvvvv>>>>>>>>>>>>
vvvvvvv>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
v
oderV
austauschbar? Ich gehe für den Moment davon aus, dass diesv
der einzige zulässige ist, aber das ZulassenV
wirkt sich auf die Anzahl der Bytes ausAntworten:
Pyth - 93 Bytes
Erläuterung:
Sie können es hier ausprobieren!
quelle
Mathematica, 104 Bytes
Unbenannte Funktion, die eine positive gerade Ganzzahl als Eingabe verwendet und eine Zeichenfolge zurückgibt (mit einer nachgestellten Newline). Beachten Sie, dass die neue Zeile zwischen den beiden obigen Codezeilen Teil des Codes ist. Die Hauptarbeit wird von der Funktion geleistet
c
, deren ungolfed DefinitionErstellt eine Tabelle mit Listen, von denen jede aus mehreren
"v"
s in einer Reihe besteht, gefolgt von mehreren">"
s, gefolgt von einer neuen Zeile. Glücklicherweise kann der Bereich#3
für den äußerenTable
einen Variablennamen haben, auf den in den Ausdrücken#1
und verwiesen werden kann#2
. Dadurch kann die Funktionc
sowohl mit konstanten als auch mit variablen Argumenten aufgerufen werden. Der Rest ist nur eine Berechnung, und der Operator für""<>
das Verbinden von Zeichenfolgen reduziert die verschachtelten Listen, die kostenlos entstehen.quelle
Python, 3.5
183177 BytesErklärung eingehend.
Probieren Sie es online!
quelle
n,v=int(input()),'v'
? Dann spart es nichts.Groovy, 168 Bytes
Dies ist eine namenlose Schließung. Der Ansatz ist meiner Python 3.5- Antwort völlig ähnlich .
Probieren Sie es online!
quelle
Batch, 279 Bytes
Hinweis: Die zweite Zeile endet in einem Leerzeichen. Batch hat Probleme mit dem Echo von
>
s in Variablen, daher muss ich a) einen Ersatz verwenden b) eine Unterroutine aufrufen, um die korrigierte Zeichenfolge wiederzugeben. Tatsächlich habe ich drei Unterprogramme:a
wird für die Ferse verwendet.v
Jeweils eine wird entfernt und drei>
s hinzugefügt. Es werden zwei zusätzliche>
s hinzugefügt, damit das Unterprogramm in dasb
Unterprogramm hineinfallen kann .b
wird für die Unterseite des Fußes verwendet.>
Jeweils zwei s werden entfernt. Das Unterprogramm fällt dann in dasc
Unterprogramm durch.c
druckt die aktuelle Zeile des Strumpfs und ersetzt das Platzhalterzeichen, damit das>
s richtig gedruckt wird.Die vierte Linie regelt die Breite des Beins, während die fünfte Linie die Länge regelt. Die siebte Zeile behandelt die Länge des Fußes, während die achte Zeile die obere Hälfte der Fußhöhe behandelt, indem
>>
jeder Zeile nach dem Drucken zwei hinzugefügt werden . Dies funktioniert für Sockengrößen, die ein Vielfaches von 4 sind, und es wird eine Anpassung für andere Sockengrößen vorgenommen, damit die längste Linie nicht wiederholt wird.quelle
PHP, 229 Bytes
ein ziemlich fauler Ansatz
druckt eine führende Newline. Laufen Sie mit
-nr
.Nervenzusammenbruch
quelle
Gleichstrom , 269 Bytes
Also gut ... das ist gewaltig . Es war nicht einfach, ich werde Ihnen so viel sagen, was mit all den Registerreferenzen, Vergleichen, Makros, mangelnden Manipulationsfähigkeiten für Zeichenfolgen usw. zu tun hat. Trotzdem hatte ich Spaß daran, dies zusammenzustellen, und das ist alles, was wirklich wichtig ist, richtig ? ;)
Probieren Sie es online!
quelle