Ok, meine erste Golffrage. Bitte sei sanft :) Ich weiß, dass es viel zu viele ASCII-Rätsel gibt: P, aber los geht's.
Die Aufgabe ist einfach: Verwenden Sie Ihre bevorzugte Programmiersprache, um eine Dreieckswellung zu drucken. Die Eingabe sollte die Größe der Welligkeit haben.
Jedes Dreieck ist gleichmäßig verteilt. Grundsätzlich fügen Sie die Dreiecke so lange hinzu, bis nicht mehr genügend Platz für das kleinste Dreieck vorhanden ist.
Sie dürfen überall Leerzeichen verwenden, solange die Wellen die gleichen sind wie im Beispiel mit der richtigen Größe.
Beispiel
q)g 1
__
\/
q)g 2
____
\ /
\/
q)g 3
______
\ /
\ /
\/
q)g 4
________
\ __ /
\ \/ /
\ /
\/
q)g 5
__________
\ ____ /
\ \ / /
\ \/ /
\ /
\/
q)g 6
____________
\ ______ /
\ \ / /
\ \ / /
\ \/ /
\ /
\/
q)g 7
______________
\ ________ /
\ \ __ / /
\ \ \/ / /
\ \ / /
\ \/ /
\ /
\/
q)g 8
________________
\ __________ /
\ \ ____ / /
\ \ \ / / /
\ \ \/ / /
\ \ / /
\ \/ /
\ /
\/
Wie immer gewinnt der kürzeste Code :)
Antworten:
Pyth, 31 Bytes
Demonstration.
Erläuterung:
quelle
GNU sed -nr, 210
Ein Anfang:
Die Eingabe ist gemäß dieser Meta-Frage eine positive unäre Ganzzahl über STDIN .
Ausgabe:
quelle
C 165 Bytes
Vor den Golfschritten, die die Lesbarkeit zerstören:
Dies durchläuft alle Zeichen im Rechteck, das die Figur enthält, und wertet die Liniengleichungen aus, die die Innenseite des Dreiecks von der Außenseite trennen, sowie diejenigen, die die verschiedenen Teile des Dreiecks trennen.
quelle
n,x,y,b,c;main(c,v)char**v;{for(n=atoi(v[1]);y<=n;++y)for(x=-n;x<=n;putchar(x++-n?b>6*y?95:b<6*y-4&c>0&c%4==1?"/\\"[x<1]:32:10))c=(b=2*n-abs(2*x+1))-2*y+2;}
Netzhaut , 182 Bytes
Nimmt Eingaben als unär.
Jede Zeile sollte in eine eigene Datei gehen und
#
in den Dateien in eine neue Zeile geändert werden. Dies ist unpraktisch, aber Sie können den Code so wie er ist als eine Datei mit dem-s
Flag ausführen , wobei die#
Markierungen erhalten bleiben. Sie können die#
Zeilenumbrüche in der Ausgabe zur besseren Lesbarkeit ändern , wenn Sie dies wünschen. Z.B:Der Code ist (noch) nicht besonders gut.
quelle
C - 206 Bytes
i,j,m,k,a,b;main(i,v)char**v;{m=atoi(v[1])*2;while(k<m*(m/2+1)){i=k/m;j=k%m;a=i*3,b=(i+j)%2;putchar("_\\/ "[j>=a&&j<m-a?0:j>i-2&&b&&j<i*3-1&&j<m/2?1:j<=m-i&&!b&&j>m-a&&j>=m/2?2:3]);if(j==m-1)puts("");k++;};}
Beispielausgabe
quelle
int
. Wenn Sie sie im globalen Bereich deklarieren, werden sie automatisch auf 0 initialisiert. Anstattputchar()
mehrere Anrufe in verschiedenen Zweigen zu tätigen, können Sie einen einzigen Anruf verwenden und den anderen ersetzenif
Anweisungen durch ternäre Operatoren . Natürlich wird es schwierig, so zu lesen, aber es liegt ganz im Sinne dieser Site, hässlichen Code zu schreiben, wenn er kürzer ist. :)JavaScript ( ES6 ) 165
180 204Führen Sie zum Testen das Snippet in Firefox aus. Wenn die Rückgabe der Zeichenfolge nicht ausreicht, werden bei Verwendung von alert 2 Zeichen mehr ausgegeben.
quelle