Schreiben Sie ein Programm oder eine Funktion, die unter Berücksichtigung der Größe der Arme als Eingabe einen ASCII-Stern zeichnet.
Hier ist ein Stern von Größe 1
_/\_
\ /
|/\|
Hier ist ein Stern von Größe 2
/\
__/ \__
\ /
\ /
| /\ |
|/ \|
Hier ist ein Stern von Größe 3
/\
/ \
___/ \___
\ /
\ /
\ /
| /\ |
| / \ |
|/ \|
Und so weiter.
Eingang
Eine einzelne positive ganze Zahl in jedem geeigneten Format , n > 0
.
Ausgabe
Eine ASCII-artige Darstellung eines Sterns nach den oben genannten Regeln. Führende / nachfolgende Zeilenumbrüche oder andere Leerzeichen sind optional, sofern die Punkte richtig ausgerichtet sind.
Regeln
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
Antworten:
Kohle ,
2017 Bytes-3 Bytes dank Neil.
Probieren Sie es online! Link ist zur ausführlichen Version.
Ich bin ziemlich glücklich mit diesem Golf, also ...
Erläuterung
quelle
Polygon
... Mache ich etwas falsch?Polygon
der Cursor auf dem letzten Zeichen bleibt, aber ich habe nicht verwendetPolygon
... Tatsächlich habe ich auch nicht den besten Code verwendet, ich bin jetzt auf 17 gesunken.Move(:Right); for (n) Print("_");
.SOGL V0.12 ,
2724 BytesProbieren Sie es hier aus!
Erläuterung:
quelle
Python 2 ,
166 160 157 155152 BytesDer
exec
Ansatz ist genau die gleiche Anzahl von Bytes.Probieren Sie es online!
3 Bytes dank Jonathan Frech gespeichert .
quelle
t=" ";y,z=t*2,"\\"
mitt,z=" \\";y=t+t
.Java 8,
385376344304285280268264252250+ 19BytesProbieren Sie es online!
quelle
int o=
die Schleife ebenfalls nach außen verschieben ( 268 Bytes )++
direkt beim letzten Auftreten voni
wie folgt vorgehen : 264 Bytes .Mathematica, 189 Bytes
Zeile 2 definiert den Hilfsoperator
±
, mit dem Zeile 4 ausgewertet wird, um:In Zeile 3 nimmt das
ReplaceAll
(/.
) eine Matrix, die den Stern der Größe 1 sowie die Liste der obigen Regeln darstellt. Für die letzten Schritte verwenden wirArrayFlatten
, was kürzer alsSubstitutionSystem
und istStringRiffle
.quelle
Java 7, 295 Bytes
Lösung ist Methode
f
.Probieren Sie es online testen (JDK 8)
Ungolfed
Danksagung
quelle
x
von Anfang an um 1 senken :<T>String s(T s,int n){return"".format("%"+-~n+"s",s);}String f(int x){String n="\n",s="/",b="\\",o="",u="_";int i=0;for(x--;i<x;u+="_")o+=s(s,2*x-i+1)+s(b,2*i++)+n;o+=u+s+s(b,2*i++)+u+n;for(;i-->0;)o+=s(b,x-i)+s(s,4*x-2*(x+~i))+n;for(;++i<=x;)o+=s("|",x)+s(s,x-i)+s(b,2*i)+s("|",x-i)+n;return o;}
Python 2 , 137 Bytes
Probieren Sie es online!
quelle