Bei dieser Herausforderung müssen Sie ASCII-Grafiken (normalerweise 2D) in 3D bringen!
Wie?
so was,
X X DD
X D D
X X DD
zu...
X X DD
X X DD D
X X DDDD
X XDDD
X X DD
Wie machen wir das dann ?
N
Wiederholen Sie diese N
Zeiten angesichts der ASCII-Kunst und .
- für jeden Charakter (wir werden das nennen
A
): - Sei
B
das Zeichen, das genau 1 richtig und 1 höher istA
- Wenn
B
es sich um ein Leerzeichen handelt oder undefiniert ist: - gesetzt
B
zuA
.
Technische Daten
- Die erste Eingabe kann eine Zeichenfolge mit Zeilenumbrüchen oder eine Liste von Zeichenfolgen sein, die die 2D-ASCII-Grafik darstellen.
- Sie dürfen
%END%
das Ende der Eingabe markieren, dies ist jedoch nicht erforderlich. - Der zweite Eingang wird sein
N
. Es wird eine positive ganze Zahl sein. - Alle Zeilen der Zeichenfolgen sind gleich lang.
Beispiele
Eingang: ("###\n###",1)
Ausgabe:
###
####
###
Regeln
Es gelten grundlegende Code-Golf- Regeln.
Wenn Sie Fragen haben, stellen Sie diese bitte in den Kommentaren!
Antworten:
Perl, 81 Bytes
75 Bytes Code + 6 für
-i -n0
.Beachten Sie, dass die
\e
Zeichen ASCII-Zeichen sind,\x1b
aber\e
zum leichteren Testen verwendet werden.Beachten Sie, dass diese Lösung ANSI-Escape-Sequenzen verwendet und ein kompatibles Terminal erfordert sowie das
-i
Befehlszeilenargument verwendet, um die Anzahl der gewünschten 'Dimensionen' zu übergeben.Verwendung:
Führen Sie in einem Linux-kompatiblen Terminal
PS1=
zuerst aus, um sicherzustellen, dass Ihre Eingabeaufforderung das angezeigte Bild nicht überschreibt.quelle
CJam,
2524 BytesEin unbenannter Block, der eine Liste von Zeichenfolgen und die Anzahl der Wiederholungen auf dem Stapel erwartet und stattdessen eine neue Liste von Zeichenfolgen hinterlässt.
Testen Sie es hier. (Enthält einen Test-Wrapper, der die Zeichenfolge der Einfachheit halber aus STDIN liest.)
Erläuterung
quelle
S
für den Anfangsraum? Darf man auch Variablen (die möglicherweise überschrieben wurden) in einer Funktion verwenden?S
funktioniert nicht, da dannf
stattdessen eine Zuordnung über diesen String erfolgt. Ich glaube, dass es in "normalen" Sprachen auch viele Funktionsübermittlungen gibt, die sich auf globale Elemente stützen, die zwischen den Aufrufen nicht manipuliert werden.APL, 49 Bytes
Eingabe: Vektor der Zeichenvektoren. Beispiel:
Wie es funktioniert:
↑⍵
verwandelt das Argument in eine Matrix von Zeichen⎕UCS
von char bis integer(32∘≠×⊣)
Ersetzen Sie die Leerzeichen (32) durch Nullen...⍣⍺⊣
wende ⍺ (das linke Argument) mal die Funktion auf der linken Seite ans←0⍪⍵,0
Rand mit Nullen oben und rechts das Argument1⊖¯1⌽
1 nach oben und 1 nach rechts drehens+(s=0)×
Summe der verschobenen Version zum Original, jedoch nur über den Nullen des Originals32⌈
verwandelt die Nullen in 32s zurück⎕UCS
von Integer zu Charquelle
MATL , 24 Bytes
Eingabeformat ist
Das andere Beispiel ist also
Die Ausgabe enthält zusätzliche Leerzeichen, die von der Herausforderung zugelassen werden.
Probieren Sie es online aus!
Wenn ein 2D-Zeichenarray als Eingabe akzeptabel ist (ich habe das OP zweimal gefragt ...), kann das erste
c
entfernt werden, also 23 Bytes :Das Eingabeformat ist in diesem Fall (alle Zeichenfolgen sind gleich lang, was möglicherweise ein Auffüllen mit Leerzeichen erfordert):
Probieren Sie es online aus!
Erläuterung
quelle
Konvex , 23 Bytes
Die Byteanzahl setzt eine CP-1252-Codierung voraus.
Ein unbenannter Block, der eine Liste von Zeichenfolgen und die Anzahl der Wiederholungen auf dem Stapel erwartet und stattdessen eine neue Liste von Zeichenfolgen hinterlässt.
Probieren Sie es online aus!
Dies ist ein direkter Port meiner CJam-Antwort auf Convex (die stark auf CJam basiert). Der einzige Unterschied besteht darin, dass Convex
Ë
anstelle derer
Transliteration ein Byte spart. Vielen Dank an GamrCorps, dass Sie mich darüber informiert haben.quelle
Pyth,
5433 BytesTestsuite.
quelle
;
?;
ist;
in Programmiersprachen nicht üblich .;
ist eine Variable.;
in Lambdas ...I
,.?
,V
,F
,;
, (explizite Aussagen) sehr weniger, und sie wird ersetzt durch?
,m
,u
,F
,M
,L
,R
,#
, ...JavaScript (ES6), 128 Byte
Akzeptiert ein Array von Zeichenfolgen und gibt es zurück, stellt eine zusätzliche Zeile für die Ausgabe voran, stellt sicher, dass jede Zeile mindestens ein Leerzeichen enthält, teilt sie alle in Zeichen auf, führt Schleifen durch, obwohl versucht wird, die Zeichen in die Zeile oben und die Spalte rechts zu kopieren ruft sich rekursiv auf, um die Schleife zu vervollständigen.
quelle
Python 2, 116 Bytes
Ich werde das bald mehr Golf spielen.
quelle
lambda
nicht kürzer ist?e
dort. Auchexec
ist eine Aussage, so kann es nicht in einem Lambda sein.Ruby, 95 Bytes
Jedes
<Esc>
ist ein wörtliches ESC-Zeichen (0x1b
).Verwendung
Ordnen Sie das Lambda einer Variablen zu, z
func
.Ungolfed
Die
forward
Escape-Sequenz\e[1C
bewegt den Cursor 1 Feld vorwärts (rechts) und\e[<n>A
bewegt ihn nach obenn
. Grundsätzlich druckt dieser Code die "Ebenen" von hinten nach vorne und ersetzt Leerzeichen durch dieforward
Sequenz, um zu vermeiden, dass die anderen Ebenen durch ein Leerzeichen überschrieben werden.quelle
f=
vor das->
in der Golfversion gesetzt. Entfernen Sie es für -2 Bytes.