Der erste vom Vorgänger fertiggestellte Ascii-Würfel (PAC 1) ist ein einfacher Würfel mit der Seitenlänge 1 und sieht folgendermaßen aus:
/////\
///// \
\\\\\ /
\\\\\/
Der PAC 2 hat eine geometrische Form, sodass durch die Kombination mit seinem Vorgänger (dem PAC 1 ) ein Würfel der Seitenlänge 2 entsteht:
front back
/////////\ /////////\
///////// \ ///////// \
/////\\\\\ \ ///////// \
///// \\\\\ \ ///////// \
\\\\\ ///// / \\\\\\\\\ /
\\\\\///// / \\\\\\\\\ /
\\\\\\\\\ / \\\\\\\\\ /
\\\\\\\\\/ \\\\\\\\\/
Da die Rückseite -Blick irgendwie langweilig ist, sind wir nur im Interesse Front -Blick.
Gleiches gilt für den PAC 3 : Mit einigem visuellen Denken kann der PAC 2 gedreht und in den PAC 3 eingesteckt werden , um einen festen Würfel mit Seitenlänge 3 zu bilden:
/////////////\
///////////// \
/////\\\\\\\\\ \
///// \\\\\\\\\ \
///// /////\\\\\ \
///// ///// \\\\\ \
\\\\\ \\\\\ ///// /
\\\\\ \\\\\///// /
\\\\\ ///////// /
\\\\\///////// /
\\\\\\\\\\\\\ /
\\\\\\\\\\\\\/
Und so weiter mit PAC 4 :
/////////////////\
///////////////// \
/////\\\\\\\\\\\\\ \
///// \\\\\\\\\\\\\ \
///// /////////\\\\\ \
///// ///////// \\\\\ \
///// /////\\\\\ \\\\\ \
///// ///// \\\\\ \\\\\ \
\\\\\ \\\\\ ///// ///// /
\\\\\ \\\\\///// ///// /
\\\\\ \\\\\\\\\ ///// /
\\\\\ \\\\\\\\\///// /
\\\\\ ///////////// /
\\\\\///////////// /
\\\\\\\\\\\\\\\\\ /
\\\\\\\\\\\\\\\\\/
Aufgabe:
Schreiben Sie ein vollständiges Programm oder eine vollständige Funktion, die eine positive ganze Zahl n als Eingabe verwendet und die entsprechende Vorderansicht von PAC n genau wie oben gezeigt zurückgibt oder ausgibt . Zusätzliches Leerzeichen am Ende ist zulässig.
Das ist Code-Golf , also versuchen Sie, so wenig Bytes wie möglich in der Sprache Ihrer Wahl zu verwenden.
Antworten:
JavaScript (ES6), 229 Byte
quelle
Batch,
559432400 BytesErläuterung: Die untere Hälfte des Würfels wird durch Spiegelung der oberen Hälfte gezeichnet. Die Hälften sind weiter in
sieben,sechs unddreiStreifenteileunterteilt, wie in diesem Diagramm gezeigt, das die obere Hälfte zeigt:Bearbeiten: Mehr als 20% gespart durch Verbesserung des Codes, der die obere bis untere Hälfte widerspiegelt. Einsparung von fast 10% durch Zusammenführen der linken zwei und mittleren drei Streifen.
quelle
Canvas , 36 Bytes
Probieren Sie es hier aus!
quelle
SOGL V0.12 , 32 Bytes
Probieren Sie es hier aus!
Einfache Erklärung:
1. Iterierte für jede 1..x
2. Stellen Sie eine
⌐
Form mit der Breitei*4+1
und Höhe =(0-indexed)i // 2
3. pad es so aussieht wie es
⦧
4. append a „\“ -Form auf , die horizontal
5. Setzen der vorherigen Schritt in diesem umgekehrten 6. nach allem vertikal spiegeln
Volles Programm:
quelle
Haskell ,
232227224187183180175 BytesDie anonyme Funktion in der letzten Zeile verwendet ein ganzzahliges Argument und gibt die Zeilen an, die für einen Würfel dieser Größe gedruckt werden sollen.
Die Idee ist, mithilfe der Rekursion größere Würfel aus kleineren zu ziehen. Schauen wir uns die obere Hälfte eines Würfels der Größe 1 an. Dann erhalten wir die obere Hälfte eines Würfels der Größe 2, indem wir die vorherige Hälfte spiegeln und ein festes Muster aus Schrägstrichen und Leerzeichen hinzufügen:
Der Algorithmus zum Zeichnen eines Würfels der Größe n lautet also
/
s und\
s) und füllen Sie////
und\
um.////
n plus/\
und voran/ \
.quelle
g=
.(\l->r l++k(k m)l)
ist das gleiche wieliftM2 (++) r (k(k m))
, was wiederum zu verkürzen ist(++).r<*>k(k m)
. Probieren Sie es online!Ruby ,
174 167 169167 BytesProbieren Sie es online!
Erstellt eine Reihe von
n*4
Zeichenfolgen, die mit Leerzeichen gefüllt sind, und überschreibt sie dann mit immer kleineren Würfeln.Kommentierter Code
quelle
Python 2 ,
254234226203201199 BytesEndlich unter 200!
Tricks:
Diese Funktion Swap verwendet wird , alle
\
mit/
und umgekehrtein bisschen lang in Python2 - funktioniert nur mit Unicode -
Check out diese , wie es funktioniert
Erzeugt neue oberste zwei Zeilen für jede Iteration
. Derzeit kann ich keine kompakte Möglichkeit finden, diese Zeilen aus der vorherigen Iteration zu erhalten
Kehren Sie alle Zeilen der vorherigen Iteration um und tauschen Sie Schrägstriche aus
Kopieren Sie die obere Hälfte in umgekehrter Reihenfolge und tauschen Sie die Schrägstriche aus
Gepflegte Methode zum Auffüllen von Saiten in der Mitte
Probieren Sie es online!
quelle
Stax , 36 Bytes
Führen Sie es aus und debuggen Sie es
Dieser Ansatz baut die obere Hälfte der Ausgabe iterativ auf. Der Hauptblock wird so oft ausgeführt, wie angegeben. In diesem Block wird jede Zeile gespiegelt und mit einem Präfix und einem Suffix versehen. Die beiden obersten neuen Zeilen werden separat hinzugefügt. Wenn alle Zeilen erstellt sind, werden sie zentriert und der Boden vertikal gespiegelt.
Hier ist das Programm entpackt, ungolfed und kommentiert.
Führen Sie dieses aus
quelle
Haskell, 193 Bytes
Länger als der Gewinner, aber der Ansatz kann interessant sein - verwendet sogar
cos
undpi
:)Code:
Führen Sie es so aus:
Dieses Programm 'zeichnet' im Grunde viele Diamanten wie diesen:
Funktion
i s e f
'zeichnet' einen Diamanten der Größes
, woe, f
sind(abs$z-y)(abs$z+y-1)
.Die Funktion
w
bewegt die gezogenen Diamanteni
, um Stellen zu korrigieren.head
In seiner Definition wird nur die oberste Ebene betrachtet.Probieren Sie es hier aus
quelle
Holzkohle , 42 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Zeichne die Würfel vom kleinsten zum größten. (Das Zeichnen vom Größten zum Kleinsten bedeutete, dass ich ein Spiegelbild für ungerade Zahlen erhielt, deren Behebung zu viele Bytes kostete.)
Drucken Sie eine Zeile mit
/
s. (Dies wird das\
s auf der rechten Seite sein, aber die Zeichnung wird gespiegelt ausgeführt, da es am Ende der Schleife besser ist, sie zu spiegeln.)Drucken Sie die oberen beiden Reihen von
\
s. (Das Zeichnen aller\
s in einem Polygon bedeutete, dass sich der Cursor an einer unangenehmen Position befand, deren Behebung zu viele Bytes kostete.)Drucken Sie die linken vier Zeilen von
\
s. (Die fünfte Reihe stammt aus dem vorherigen Würfel.)Gehe zum Anfang des nächsten Würfels.
Horizontal spiegeln, bereit für den nächsten Würfel.
Spiegele alles vertikal, um den Würfel zu vervollständigen.
quelle