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
oder V
austauschbar? Ich gehe für den Moment davon aus, dass dies v
der einzige zulässige ist, aber das Zulassen V
wirkt sich auf die Anzahl der Bytes aus