Bei einer Eingabe eines ASCII-Kunstbilds wird das ASCII-Kunstbild kursiv ausgegeben.
So setzen Sie die ASCII-Grafik in Kursivschrift:
Fügen Sie vor der letzten Zeile keine Leerzeichen ein, ein Leerzeichen vor der vorletzten Zeile, zwei Leerzeichen vor der vorletzten Zeile usw.
Entfernen Sie alle zusätzlichen führenden Leerzeichen, die möglicherweise erstellt wurden. Das heißt, wenn jeder Zeile mindestens
n
Leerzeichen vorangestellt sind, entfernen Sien
Leerzeichen am Anfang jeder Zeile.Ersetzen Sie alle
\
s mit|
, alle|
s mit/
und alle/
s mit_
. Bestehendes_
beibehalten.Die Eingabe enthält garantiert nur die Zeichen
\|/_
und Leerzeichen.
Zum Beispiel die Eingabe
/\/\/\ /\/\/\ /\/\/\ /\/\/\
/\ /\ /\ /\ /\ /\
/\/\/\ /\/\/\ /\ /\ /\/\
/\ /\ /\ /\ /\
/\ /\ /\/\/\ /\/\/\
muss ausgeben
_|_|_| _|_|_| _|_|_| _|_|_|
_| _| _| _| _| _|
_|_|_| _|_|_| _| _| _|_|
_| _| _| _| _|
_| _| _|_|_| _|_|_|
was wiederum als Eingang, Ausgänge zur Verfügung gestellt
_/_/_/ _/_/_/ _/_/_/ _/_/_/
_/ _/ _/ _/ _/ _/
_/_/_/ _/_/_/ _/ _/ _/_/
_/ _/ _/ _/ _/
_/ _/ _/_/_/ _/_/_/
was ausgeben würde
______ ______ ______ ______
__ __ __ __ __ __
______ ______ __ __ ____
__ __ __ __ __
__ __ ______ ______
Eingabe und Ausgabe können entweder eine einzelne Zeichenfolge (mit optionalem Zeilenumbruch) oder ein Array von Zeilen sein.
Da es sich um Code-Golf , wird der kürzeste Code in Bytes gewinnen.
Zusätzliche Testfälle:
|||||
/////
\\\\\
_____
/////
_____
|||||
_____
________
________
(Das heißt, die Eingabe einer leeren Zeichenfolge führt zur Ausgabe einer leeren Zeichenfolge.)
Antworten:
CJam,
4338 BytesErfordert, dass die Eingabe in ein Rechteck aufgefüllt wird.
Probieren Sie es online!
Erläuterung
quelle
G
, wird es durch die Transformation nach oben reduziert .Pyth, 32
Probieren Sie es hier aus oder starten Sie die Test Suite
Jede Zeile hat mehrere nachgestellte Leerzeichen. Dies funktioniert durch Anwenden
.r
der Rotation, die in jede Zeile der Zeichenfolge integriert ist. Bei der Drehung wird jedes Zeichen in der Zeichenfolge verwendet, das mit dem anderen Argument übereinstimmt,"\|/__"
und durch das nächste Zeichen ersetzt. Der doppelte Unterstrich verhindert, dass Unterstriche zu Backslashes werden. Die Zeichenfolgen werden auch basierend auf ihrem Index aufgefüllt.Sobald dies erledigt ist, werden die Zeilen zusammengezippt und jede Spalte, die nur Leerzeichen enthält, herausgefiltert, bis eine von ihnen dies nicht mehr tut. Dann entpacken wir und verbinden uns auf Newlines.
quelle
MATL ,
383329 BytesAusgabezeilen haben nachgestellte Leerzeichen, um mit der längsten Zeile übereinzustimmen (dies ist durch die Abfrage zulässig).
Die Eingabe ist ein Zellenarray (Liste) von Zeichenfolgen. Das Array verwendet geschweifte Klammern und Zeichenfolgen einfache Anführungszeichen (klicken Sie auf jeden Link, um es online auszuprobieren! ).
Erstes Beispiel :
Zweites Beispiel :
Drittes Beispiel :
Erläuterung
Das Array wird zunächst gespiegelt. Jede Zeichenfolge wird in einer Schleife verarbeitet und die geänderte Zeichenfolge wird auf den Stapel geschoben. Bei der Verarbeitung werden die Zeichen ersetzt und eine Reihe von Leerzeichen angehängt. Die Anzahl der Leerzeichen entspricht der aktuellen Anzahl der Elemente im Stapel (dank der Tatsache, dass das Array gespiegelt wurde).
Nach der Schleife werden die Zeichenfolgen in einem Array gesammelt, das zurückgedreht, in ein 2D-Zeichen-Array konvertiert und von unerwünschten führenden Leerzeichen befreit wird: führende Leerzeichen, die in allen Zeilen des 2D-Zeichen-Arrays vorhanden sind.
quelle
JavaScript (ES6),
171149148 BytesAkzeptiert und gibt Zeilen als Array von Zeichenfolgen zurück.
Bearbeiten: 22 Bytes dank @ user81655 gespeichert. 1 Byte gespart, indem erkannt wurde, dass die Eingabe auf 5 Zeichen
\|/_
und Leerzeichen beschränkt ist.quelle
replace
s können kombiniert werden.replace(/[\\|/]/g,m=>"|/_"["\\|/".indexOf(m)])
,match(/ */)
können kombiniert werdenmatch` *`
, zuerst können zweimap
s kombiniert werdena.map(s=>(t=' '.repeat(--i)+s,(l=t.match` *`[0].length)<n?n=l:l,t),...
, äußere Klammern ((a=...)
) können jetzt entfernt werden. 149 Bytes:a=>a.map(s=>(t=' '.repeat(--i)+s,(l=t.match` *`[0].length)<n?n=l:l,t),n=i=a.length).map(s=>s.slice(n).replace(/[\\|/]/g,m=>"|/_"["\\|/".indexOf(m)]))
replace
.)Dyalog APL (ältere Versionen),
2348 BytesDas Anpassen von Leerzeichen ist teuer:
Dies erfordert
⎕ML←0
, was bis vor kurzem Standard war .quelle