Sie erhalten eine einzelne druckbare ASCII-Zeichenfolge, die keine Zeilenumbrüche enthält, und eine mehrzeilige "Form", die Leerzeichen ( ) und Hashes (
#
) enthält.
Sie müssen Zeichen für Zeichen in der Zeichenfolge eingeben und Hashes durch die Zeichen aus der Zeichenfolge in der Reihenfolge von links nach rechts und von oben nach unten ersetzen . Wenn die Zeichenfolge zu kurz ist, um die Form zu füllen, hören Sie mit der Ausgabe auf. Wenn die Zeichenfolge zu lang ist, kürzen Sie die Zeichenfolge, um die Form genau zu füllen.
Beispiel String / Form (String zu lang, abgeschnitten):
Loremipsumdolorsitamet,consecteturadipiscingelit.Namsuscipitmagnanoneratgravidacondimentum.Vestibulumnecnisllorem.Fuscemolestieviverranibh,eueleifendnislplaceratnon.Namblanditturpislacus,vitaemolestielacusimperdietquis.Nullapulvinar,exquissollicitudinfacilisis,eratnullavolutpatlectus,etluctusenimvelitegetex.Inhachabitasseplateadictumst.Donecinterdumnullalacinia,sodalesloremin,eleifendturpis.Pellentesqueanisimi.Aeneannonlobortisdiam,quisaliquetquam.Aeneanaugueipsum,imperdietsedaliquetnon,volutpategetsapien.Nullampharetranullaquispretiumornare.Aliquamfermentumvestibulummassavitaevehicula.
###########################################################
##### ############## ###### ###### ######################
##### ## ###### # ##### ###### ######## ######
###### # # #### #### ##### ###### ####### ###### #####
###### ### ### ##### ###### ####### ####### #####
###### ##### ### ########### ###### ####### ### ######
###### ###### ### ########## ###### ##### #########
################## #### ##########################
###########################################################
Beispielausgabe:
Loremipsumdolorsitamet,consecteturadipiscingelit.Namsuscipi
tmagn anoneratgravid acondi mentum .Vestibulumnecnisllore
m.Fus ce molest i evive rranib h,euelei fendni
slplac e r atno n.Na mblan dittur pislacu s,vita emole
stiela cus imp erdie tquis. Nullapu lvinar, exqui
ssolli citud inf acilisis,er atnull avolutp atl ectus,
etluct usenim vel itegetex.I nhacha bitas seplatead
ictumst.Donecinter dumn ullalacinia,sodalesloremin
,eleifendturpis.Pellentesqueanisimi.Aeneannonlobortisdiam,q
Beispiel String / Mold (String zu kurz, Ausgabe gestoppt):
This probably won't look good.
### ### ### ###
# # # # # #
### ### # # #
# # # # #
# # ### ###
Entsprechende Ausgabe:
Thi s p rob abl
y w o n '
t l ook g o
o d .
Kürzester Code in Bytes gewinnt.
Dank für die Idee zu dieser Website .
Antworten:
CJam,
16 bis14 BytesDanke an Sp3000 für das Speichern von 2 Bytes.
Beendet mit einem Fehler, wenn die Zeichenfolge zu kurz ist, der Fehler jedoch in STDERR ausgegeben wird.
Probieren Sie es online!
Alternativ (gleiche Byteanzahl):
Erläuterung
quelle
LabVIEW, 37 LabVIEW-Grundelemente
Teilt die Zeichenfolge in Text und Form und wandelt sie dann in ein Array um. Überprüft die Form, ob es ein # gibt, und setzt ein Zeichen aus dem Text, sonst macht es nichts. Wenn entweder der Text oder die Form leer sind, verlassen Sie die Schleife
quelle
Haskell, 48 Bytes
heißt wie "(durch String ersetzen) # (Hashmark-String)":
Weniger golfen:
quelle
import Control.Applicative;main=liftA2(#)getLine getContents>>=putStrLn
Retina ,
42 bis40 BytesDie Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.
Der Zeilenvorschub am Ende ist signifikant.
Probieren Sie es online!
Erläuterung
Wir ersetzen zuerst
#
die Teil des Rasters sind, durch das Nicht-ASCII-Zeichen (aber erweitertes ASCII-Zeichen),×
damit wir sie nicht mit denen verwechseln#
, die in der ersten Zeile erscheinen könnten.Jetzt füllen wir so viele
×
wie möglich aus der ersten Zeile, indem×
wir die erste Zeile, die wir finden, wiederholt durch das erste Zeichen in der ersten Zeile ersetzen (das dabei entfernt wird).Schließlich entfernen wir alles, was in der ersten Zeile noch übrig ist, sowie alles, was aus der ersten Zeile stammt
×
um die Eingabe in beide Richtungen abzuschneiden.quelle
JavaScript (ES6),
575655 Bytes1 Byte gespeichert dank @Neil gespeichert !
Erläuterung
Arbeitet mit Hashes in der Eingabezeichenfolge und behält den nachgestellten Leerraum bei, nachdem die Eingabezeichenfolge beendet wurde.
quelle
m.replace(/./g,c=>...)
kürzer./[^]/
statt/.|\n/
. (Auch entschuldigt sich für falsch vorschlagen/./
.)Python 3,
696867 BytesIdeone
Danke an FryAmTheEggman, Chiel ten Brinke für das Byte off. Alternativ hätte ich Python 2 für ein zusätzliches verwenden können (
print
ohne()
).quelle
print
mitreturn
.pb , 359 bytes
In pb ist die Eingabe nur eindimensional. Es versteht sich nicht, dass Sie mit Ihrer Eingabe eine Form zeichnen, es wird nur eine lange Zeile mit einigen Bytes mit dem Wert 10 angezeigt. Das erste, was dieses Programm tut, ist, alle Eingaben außer der ersten "Zeile" auf Y = 0, Y = 1 usw. zu kopieren, um die Form der Form zu erzeugen.
Etwas, das mir beim Codegolf sehr aufgefallen ist, aber besonders beim Golfspielen in esoterischen Sprachen, ist, dass Sie häufig nicht zwei Zweige haben möchten, mit denen Sie sich befassen müssen. Sie haben sich einfach so eingestellt, dass Sie in beiden Fällen dasselbe tun. Die naive Art, dieses Problem zu lösen, würde wahrscheinlich die Länge des Strings mit der Anzahl der Hashes im Rest der Eingabe vergleichen und je nach Ergebnis etwas tun, da es sich anders verhalten muss, je nachdem, was abgeschnitten wird. Aber das sind viele Bytes.
Stattdessen wird nach Abschluss der Form eine zusätzliche Linie am Boden hinzugefügt. Es sind einfach
n
Hashes in einer Reihe, wobein
die Länge der Zeichenkette ist. Jetzt passt die Saite garantiert! Nach dem Einfügen aller Zeichen der Zeichenfolge wird die hinzugefügte zusätzliche Zeile unbedingt gelöscht. Alle verbleibenden Hashes in der eigentlichen Form werden ebenfalls gelöscht, und das ist die erforderliche Ausgabe!Natürlich würde es die Spezifikation verletzen, einfach alle Hashes zu zerstören. Schließlich könnte es einen Hash in der Eingabezeichenfolge geben! Um damit umzugehen, verweise ich auf einen anderen Teil der Spezifikation:
(Hervorheben von mir.) Bis wir uns mit der Saite befassen, ist es uns eigentlich egal, ob sie Zeilenumbrüche enthält, aber wir wissen, dass es keine gibt. Also werden alle Hashes durch Zeilenumbrüche ersetzt, bevor sie in die Form gegeben werden! Nachdem alle Hashes zerstört wurden, werden alle Zeilenumbrüche wieder durch Hashes ersetzt. Dadurch wird nicht die gesamte Ausgabe in eine einzige durch Hash-Zeichen getrennte Zeile umgewandelt, da aufgrund der Art der 2D-Ausgabe von pb nie eine neue Zeile am Ende jeder Zeile eingefügt wird, sondern lediglich die nächste Zeile.
Ungolfed:
quelle
ES6, 59 Bytes
70 Bytes, wenn der Text Hashes enthalten kann:
quelle
Perl,
535142 + 2 = 44 BytesMuss
-p
ausgeführt werden. Erläuterung:quelle
$a=<>;$/="";say<>=~s/#/substr$a,$i++,1/ger
$/
anstatt mitzumachenJelly,
108 BytesProbieren Sie es hier aus!
quelle
#
der Eingaben ist.Perl 6 , 72 Bytes
quelle
ES6, 47 Bytes
Wahrscheinlich die einfachste Lösung.
Dieser Code erstellt eine anonyme Funktion, die 2 Parameter empfängt und das Endergebnis zurückgibt.
Der erste Parameter
S
ist die "Map" -Zeichenfolge mit Ihrem"#"
, während der zweite ParameterR
die "Ersetzung" für diese ist"#"
.quelle
Python 3
152127 BytesEin volles Programm.
106 Bytes
Eine Funktion, die den Stream als Eingabe verwendet.
quelle