Das folgende Muster bildet die Grundlage für diese Herausforderung.
/\
\/
/\
/ \
/ \
/\/ \/\
\/\ /\/
\ /
\ /
\/
/\
\/
Bei gegebener Eingabebreite und Eingabehöhe wird jeweils >=1
das obige ASCII-Kunstmuster so oft wiederholt ausgegeben, wobei die kleinen Rauten verbunden (und überlappt) werden.
Hier ist zum Beispiel eine Eingabe mit width = 2
und height = 1
:
/\ /\
\/ \/
/\ /\
/ \ / \
/ \ / \
/\/ \/\/ \/\
\/\ /\/\ /\/
\ / \ /
\ / \ /
\/ \/
/\ /\
\/ \/
Hier ist eine Eingabe width = 3
und height = 2
:
/\ /\ /\
\/ \/ \/
/\ /\ /\
/ \ / \ / \
/ \ / \ / \
/\/ \/\/ \/\/ \/\
\/\ /\/\ /\/\ /\/
\ / \ / \ /
\ / \ / \ /
\/ \/ \/
/\ /\ /\
\/ \/ \/
/\ /\ /\
/ \ / \ / \
/ \ / \ / \
/\/ \/\/ \/\/ \/\
\/\ /\/\ /\/\ /\/
\ / \ / \ /
\ / \ / \ /
\/ \/ \/
/\ /\ /\
\/ \/ \/
Regeln und I / O
- Die Ein- und Ausgabe kann auf jede bequeme Weise erfolgen .
- Sie können es an STDOUT drucken oder als Funktionsergebnis zurückgeben.
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig.
- Beliebige Leerzeichen sind zulässig, sofern die Zeichen richtig ausgerichtet sind.
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
Antworten:
Canvas ,
2625242118 ByteProbieren Sie es hier aus!
-3 Bytes durch Beheben der
m
nicht wiederholten ZeichenflächeErläuterung:
quelle
JavaScript (ES8),
167161159 BytesNB: Dies kodiert das Muster. Siehe meine andere Antwort für einen kürzeren mathematischen Ansatz.
Übernimmt die Eingabe als
(width)(height)
.Probieren Sie es online!
Wie?
Wir kodieren die obere Hälfte des Musters mit Ziffern:
\
/
Das gibt:
Für die untere Hälfte verwenden wir die Zeilen4 , 3 , 2 , 0 mit
/
und\
invertiert.quelle
JavaScript (ES6), 139 Byte
Dies ist ein ganz anderer Ansatz als meine ursprüngliche Antwort, daher poste ich dies separat.
Übernimmt die Eingabe als
(width)(height)
.Probieren Sie es online!
Wie?
Ausgehend von der Breitew und der Höhe h zeichnen wir die Ausgabe zeichenweise über ein Gitter, das wie folgt lautet:
Für alle anderen Zellen berechnen wir:
Wir zeichnen ein
"/"
if:Wir zeichnen ein
"\"
if:Oder wir zeichnen ein Leerzeichen, wenn keine dieser Bedingungen erfüllt ist.
quelle
C ++ (gcc) , 137 Bytes
Probieren Sie es online!
Erläuterung
quelle
#include
Haskell , 179 Bytes
Probieren Sie es online!
Haskell , 181 Bytes
Probieren Sie es online!
quelle
reverse.map(map k)<>id
over werden(++).reverse=<<map(map k)
in beiden Lösungen 3 Byte gespart.map t
kann sicht<$>
undtake$10*x+2
spart ein weiteres Byte zu und schließlich können Sie mitcycle"\\ /"!!n
über"\\ /"!!mod n 3
- jetzt die zweite ist kürzer :) Online ausprobieren!Holzkohle ,
242220 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Zeichnen Sie ein Achtel des ursprünglichen Musters.
Dupliziere es dreimal, um das ursprüngliche Muster zu vervollständigen.
Kopieren Sie die erforderliche Anzahl horizontal.
Kopieren Sie die erforderliche Anzahl vertikal.
quelle
Powershell, 146 Bytes
Erläuterung
Das Muster ist 10x10 Zeichen Array:
Das Drehbuch:
Zwei Dinge fürs Golfen:
replace
.quelle
Perl 5
-p
, 148 BytesProbieren Sie es online!
quelle
PHP, 159 Bytes
Muster aus mazzy genommen; übersetzt nach 1-2-3, konvertiert nach base26 -> vom Programm dekodiert
benötigt PHP 5.5 oder neuer. Laufen Sie mit
-nr
oder versuchen Sie es online .Berechnung kann kürzer sein (wie es für Arnauld war). Ich kann das untersuchen.
quelle
Kotlin ,
196.135Bytes61 Byte gespart dank dem Vorschlag von ASCII-only, den C ++ - Algorithmus von AZTECCO zu verwenden.
Probieren Sie es online!
quelle
Python 3 ,
194192187127 Bytes@ Nur-ASCII-Lösung:
Probieren Sie es online!
Ursprüngliche Lösung
Probieren Sie es online!
-2 Bytes dank @Black Owl Kai, der zeigt, dass auf die Tops und Bottoms vom generierten Array aus zugegriffen werden kann, anstatt in separaten Variablen.
-5 weitere Bytes dank @Black Owl Kai, der die Diamanten kreativer speichert
Erzeugt diesen Teil jedes Diamanten:
Ein
/\
am Ende jeder Zeile hinzugefügt, um es zu vervollständigen. Dann werden/
s und\
s vertauscht, um die Oberseite jedes Diamanten zu bilden, und die Reihenfolge der Linien wird umgekehrt, um die untere Hälfte zu bilden. Schließlich wird es in der obersten Reihe von hinzugefügt/\
s und in der untersten Reihe von\/
s hinzugefügt, um das Bild zu vervollständigen.quelle
+=
/*=
Zuweisungen und Umdrehen des gesamten Diamanten, wodurch die letzte Zeichenfolge leichter zu speichern ist