Als kleines Kind habe ich sehr gerne mit diesen Spielsachen gespielt:
Sie wollten wahrscheinlich, dass diese für die Kunst verwendet werden, aber ich habe sie immer für die Mathematik verwendet! Fraktale, Muster usw. Einmal wurde mir diese Herausforderung gestellt:
Bauen Sie ein Dreieck, ohne die grünen Dreiecksplättchen zu verwenden.
Diese Herausforderung hat mich am längsten überrascht, bis ich auf einen wirklich schönen und einfachen Weg gestoßen bin, es mit nur 3 Trapezoiden zu tun:
/\
/_/\
/__\_\
Nehmen Sie nun dieses Dreieck und drehen Sie es:
______
\ \__/
\/ /
\/
Mit diesen beiden Dreiecken können wir größere Dreiecke daraus konstruieren. Hier ist ein Dreieck der Höhe 2:
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
Und hier sind Dreiecke der Höhe 3-7:
#3
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
#4
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
#5
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
#6
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
#7
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
Die Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die eine Zahl n annimmt und ein dreieckloses Dreieck der Höhe n ausgibt . Es ist zulässig, in jeder Zeile Leerzeichen nachzustellen, und es kann auch bis zu einer nachgestellten oder führenden neuen Zeile angegeben werden. IO kann in jedem vernünftigen Format vorliegen. Es ist garantiert, dass die Eingabe eine positive Ganzzahl ist, sodass Sie sich nicht um negative Zahlen, Dezimalzahlen, Nicht-Zahlen usw. kümmern müssen.
Kürzeste Antwort in Bytes gewinnt!
quelle
Antworten:
CJam, 47
Erläuterung:
Probieren Sie es online aus
quelle
Rubin, 79
A. (-4 Byte,
-1
+1
) geändert von 0-indiziert (.times
) zu 1-indiziert (1.upto
)B. (-5 Bytes) geändert von einem Array aus drei Zeichenfolgen mit 6 Zeichen zur Auswahl einer 6-Zeichen-Teilzeichenfolge aus einer Zeichenfolge mit 18 Zeichen.
C. (-1 Byte)
m=n*3
->n*=3
D. (-5 Bytes) reduzierte alle fünf doppelten Backslashes zu einfachen Backslashes (teilweise möglich durch Neuordnung des für Punkt A erforderlichen Strings)
Ruby, 94
Erläuterung
Die Grundeinheit ist eine 3x6-Raute wie folgt (letztes Zeichen in jeder Zeile aus Gründen der Klarheit dupliziert :)
Alles, was wir tun müssen, ist ein geeignetes Fenster dieses Musters anzuzeigen. Mit Ruby's
ljust
können Sie mit einer beliebigen Zeichenfolge auffüllen, nicht nur mit Leerzeichen. Normalerweiseljust
wird eine Zeichenfolge mit druckbaren Zeichen aufgefüllt, indem am Ende Leerzeichen hinzugefügt werden. In diesem Fall wird die Zeichenfolge umgekehrt aufgefüllt, indem am Ende druckbare Zeichen hinzugefügt werden.im Testprogramm ungolfed
quelle
Netzhaut ,
150122118 BytesDie Ausgabe für diese Herausforderung sieht übrigens fantastisch aus!
Die Eingabe ist unär. Die Ausgabe enthält einen nachfolgenden Zeilenvorschub. Der Code verwendet die ISO 8859-1-Codierung. Beachten Sie das Leerzeichen in der vorletzten Zeile.
Probieren Sie es online aus
Erläuterung
Wenn Sie eine ausführlichere Erklärung wünschen, können Sie mich im Chat kommentieren oder eine Nachricht senden.
Vielen Dank an Martin für 32 Bytes Golf.
quelle
Tarmos ASCII-Drucksprache, 46 Byte. (nicht konkurrierend)
Wenn ich nur auf so seltsame Programmiersprachen wie CJam schaue, wird mir schwindlig, wie komplex, unnatürlich und kryptisch Sprache sein kann, dass ich "mutig dahin gehen wollte, wo noch kein Mensch war" und meine eigene Sprache erfinden wollte. Als Ergebnis habe ich meine eigene Sprache für das Drucken von ASCII-Mustern erstellt.
Die Grundidee ist, dass Sie zuerst das Muster definieren und dann drucken können - mit der gleichen Art von Zeichen '1' oder '2' oder einer beliebigen Zahl - Sie können Ihr eigenes Druckmuster definieren.
Sobald das Muster definiert ist (beginnt mit der Nummer bis zum Ende der Nummer), werden die nächsten Nummern zum Drucken des Musters verwendet.
Zum Beispiel
Ausgaben wie diese:
Definiert Muster 1 und druckt es dann sofort aus. Muster ist definiert alles getrennt mit '|' Charakter. 0 am Ende - wirkt wie eine Musterbeendigung.
Sonderzeichen wie '$' sind als Zeilenvorschub reserviert, und '~' ist für den halben Abstand eines bestimmten Musters reserviert.
Gibt folgenden Text aus:
Weiter geht's mit For-Loops. Diese muss gut sichtbar sein - also habe ich {} Klammern für for-Schleifen beibehalten, aber Variablennamen werden automatisch benannt - die erste Klammer verwendet 'a' Variable, die zweite 'b' und so weiter. Die Iteration erfolgt immer von 0 bis zu einer bestimmten Zahl - und diese Zahl wird vor {} Klammern definiert.
'n' ist eine reservierte Variable für die gesamte Funktionseingabe.
Also Code:
Will Ausgänge (mit n == 4):
Und '#' ist ein spezieller Modifikator für das Trimmen von Blei-Leerzeichen.
Und schließlich die ganze Lösung:
DrawPatterns.cs:
Mit folgenden Befehlszeilenargumenten: -d "1 / \ | / _ / \ | / ___ \ 2 __ | / 0n {na-1 {½} 1a {2 # 1} $}" 3
Will gibt Folgendes aus:
quelle
JavaScript (ES6), 119 Byte
Wobei
\n
das wörtliche Zeilenumbruchzeichen darstellt. Wenn eine führende Zeile mitn*3
Leerzeichen und eine neue Zeile zulässig ist,.slice(1)
kann diese entfernt werden, um 9 Byte zu sparen.quelle
Python 2, 118 Bytes
Ähnliche Annäherung an Level River St's Ruby-Antwort .
Probieren Sie es online aus
quelle
Python 2, 142 Bytes
Das Prinzip ist anderen Antworten sehr ähnlich: Nehmen Sie drei sich wiederholende Zeichenfolgen und legen Sie sie so übereinander, dass Sie nur einige davon abschneiden müssen, um das Dreieck zu erhalten. Füllen Sie sie dann links auf.
quelle
C ++, 395 Bytes
Zum ersten Mal Code Golf mit einer Größe von 395 Bytes in C ++. In meinem Fall fühlt es sich ein bisschen wie ein Wettbewerb um die Verschleierung an: D
quelle
Pyth, 66 Bytes
Probieren Sie es online!
quelle