Schreiben Sie den kürzesten Code, gemessen durch die Anzahl der Bytes, um ein aus Rhomben zusammengesetztes ASCII-Gitter mit den folgenden Parametern zu generieren:
- m - Anzahl der vollständigen Rhomben in einer Reihe
- n - Anzahl der Zeilen
- s - Seite der kleinsten Raute
- r - Verschachtelungsebene - Wie viele Rhomben befinden sich in den "Basis" (die als Fonud zwischen den Schnittpunkten des Gitters fungieren)
Beispiele
1. Input: 5 3 1 0
Output:
/\/\/\/\/\
\/\/\/\/\/
/\/\/\/\/\
\/\/\/\/\/
/\/\/\/\/\
\/\/\/\/\/
A 5x3 grid of rhombi with side 1, no nesting
2. Input: 3 2 2 0
Output:
/\ /\ /\
/ \/ \/ \
\ /\ /\ /
\/ \/ \/
/\ /\ /\
/ \/ \/ \
\ /\ /\ /
\/ \/ \/
A 3x2 grid of rhombi with side 2, no nesting
3. Input: 5 2 1 2
Output:
///\\\///\\\///\\\///\\\///\\\
///\\\///\\\///\\\///\\\///\\\
///\\\///\\\///\\\///\\\///\\\
\\\///\\\///\\\///\\\///\\\///
\\\///\\\///\\\///\\\///\\\///
\\\///\\\///\\\///\\\///\\\///
///\\\///\\\///\\\///\\\///\\\
///\\\///\\\///\\\///\\\///\\\
///\\\///\\\///\\\///\\\///\\\
\\\///\\\///\\\///\\\///\\\///
\\\///\\\///\\\///\\\///\\\///
\\\///\\\///\\\///\\\///\\\///
A 5x2 grid of rhombi with side 1 (the smallest rhombus), level of nesting is 2
4. Input: 4 2 2 1
Output:
//\\ //\\ //\\ //\\
///\\\///\\\///\\\///\\\
// \\// \\// \\// \\
\\ //\\ //\\ //\\ //
\\\///\\\///\\\///\\\///
\\// \\// \\// \\//
//\\ //\\ //\\ //\\
///\\\///\\\///\\\///\\\
// \\// \\// \\// \\
\\ //\\ //\\ //\\ //
\\\///\\\///\\\///\\\///
\\// \\// \\// \\//
A 4x2 grid of rhombi with side 2 with level of nesting 1
5. Input: 4 2 3 3
Output:
////\\\\ ////\\\\ ////\\\\ ////\\\\
/////\\\\\ /////\\\\\ /////\\\\\ /////\\\\\
//////\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\
//////\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\
///// \\\\\///// \\\\\///// \\\\\///// \\\\\
//// \\\\//// \\\\//// \\\\//// \\\\
\\\\ ////\\\\ ////\\\\ ////\\\\ ////
\\\\\ /////\\\\\ /////\\\\\ /////\\\\\ /////
\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\//////
\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\//////
\\\\\///// \\\\\///// \\\\\///// \\\\\/////
\\\\//// \\\\//// \\\\//// \\\\////
////\\\\ ////\\\\ ////\\\\ ////\\\\
/////\\\\\ /////\\\\\ /////\\\\\ /////\\\\\
//////\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\
//////\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\
///// \\\\\///// \\\\\///// \\\\\///// \\\\\
//// \\\\//// \\\\//// \\\\//// \\\\
\\\\ ////\\\\ ////\\\\ ////\\\\ ////
\\\\\ /////\\\\\ /////\\\\\ /////\\\\\ /////
\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\//////
\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\//////
\\\\\///// \\\\\///// \\\\\///// \\\\\/////
\\\\//// \\\\//// \\\\//// \\\\////
A 4x2 grid of rhombi with side 3, level of nesting 3
Stellen Sie sicher, dass die teilweise sichtbaren Rhomben an den Kanten und Ecken angezeigt werden, wo dies erforderlich ist.
Antworten:
SOGL V0.12 , 20 Bytes
Probieren Sie es hier aus! Nimmt die Eingabe in umgekehrter Reihenfolge vor wie in den Beispielen - r, s, n, m.
Erläuterung:
quelle
∙*
...Kohle ,
483937 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Zeichnen Sie ein Quadrat der Größe
r + 1
. Dies ist ein Viertel eines verschachtelten Diamanten der Größe 1.Kopieren Sie das Quadrat 1 Quadrat nach rechts und nach unten
s - 1
, um es auf die richtige Größe zu bringen.Reflektiere es, um ein voll verschachtelter Diamant zu werden.
Berechnen Sie die Größe dieses verschachtelten Diamanten.
Kopieren Sie den Diamanten zu den richtigen
m - 1
Zeiten.Kopieren Sie den Diamanten
n - 1
mal nach unten .quelle
Python 2 ,
160159158 Bytes-1 Byte danke an Jonathan Frech
Probieren Sie es online!
Hierbei wird die Tatsache ausgenutzt, dass der Boden der Raute oben invertiert ist (
[::-1]
). Dabei wird iteriertrange(n*2)
und~x%2*2-1
gesteuert, ob es sich um den oberen oder unteren Rand handelt.Für die Oberseite (und die Unterseite) ist die rechte Seite nur die linke Seite invertiert und ersetzt
/
durch\
->l.replace(*'/\\')..[::-1]
Um das Muster / die Verschachtelung zu erzeugen , wird eine solche
~-s*' '+'/'*(1+r*2)+~-s*' '
Zeichenfolge///
iteriert und geschnitten:quelle
(1+r*2)
kann sein(r-~r)
.Julia 0,6 , 190 Bytes
Dies ist eine funktionale Lösung, die für jedes Indexpaar berechnet,
i,j
was das Symbol anzeigen soll.Probieren Sie es online!
Illustration
Beginnen Sie mit einem Raster
r > 0
bedeutet dickere LinienBehandeln Sie die Ecken, indem Sie prüfen, welche Linie auf dem ursprünglichen Raster am nächsten ist
Eine Fee fordert uns auf, alle zu entfernen
s-1
ZeileSchräg verfahren und fertig
quelle
JavaScript (ES6), 154 Byte
Berechnet direkt das Zeichen in jeder Zelle der Ausgabe.
quelle
CJam, 44
Probieren Sie es online aus
Erläuterung:
quelle
C # (.NET Core) , 167 Byte
Probieren Sie es online!
Ich bin überrascht von der Größe, die ich geschafft habe. Ich hatte zunächst eine längere Lösung erwartet. Wenn ich das sage, bin ich sicher, dass es andere Tricks gibt, die ich verpasst habe.
DeGolfed
quelle
Python 2 ,
201189 BytesProbieren Sie es online!
Verwendet die Tatsache, dass der Boden derselbe ist wie der obere, aber verschoben:
22 Bytes dank Jonathan Frech gespeichert
quelle
s-i-1
kann seins+~i
, zwei Bytes zu sparen.r+1+min(...
kann seinr-~min(...
, einen anderen zu retten.L=[(...)*m for
kann seinL=[m*(...)for
, ein weiteres Byte zu speichern.L+=[...];print'\n'.join(L*n)
kann seinprint'\n'.join((L+[...])*n)
, ein anderes Byte zu speichern, was 196 Bytes ergibt .s+r-i-1
mits+~i+r
.exec
und String-Formatierung.Perl 5, 159 + 3 (-anl) Bytes
Probieren Sie es online
quelle