Se le proporciona una única cadena ASCII imprimible que no contiene líneas nuevas y un "molde" multilínea, que contiene espacios ( ) y hashes (
#
).
Debe ir carácter por carácter en la cadena y reemplazar los hashes utilizando los caracteres de la cadena en orden de izquierda a derecha, de arriba a abajo. Si la cadena es demasiado corta para llenar el molde, deja de salir, si la cadena es demasiado larga, trunca la cadena para llenar exactamente el molde.
Ejemplo de cadena / molde (cadena demasiado larga, truncada):
Loremipsumdolorsitamet,consecteturadipiscingelit.Namsuscipitmagnanoneratgravidacondimentum.Vestibulumnecnisllorem.Fuscemolestieviverranibh,eueleifendnislplaceratnon.Namblanditturpislacus,vitaemolestielacusimperdietquis.Nullapulvinar,exquissollicitudinfacilisis,eratnullavolutpatlectus,etluctusenimvelitegetex.Inhachabitasseplateadictumst.Donecinterdumnullalacinia,sodalesloremin,eleifendturpis.Pellentesqueanisimi.Aeneannonlobortisdiam,quisaliquetquam.Aeneanaugueipsum,imperdietsedaliquetnon,volutpategetsapien.Nullampharetranullaquispretiumornare.Aliquamfermentumvestibulummassavitaevehicula.
###########################################################
##### ############## ###### ###### ######################
##### ## ###### # ##### ###### ######## ######
###### # # #### #### ##### ###### ####### ###### #####
###### ### ### ##### ###### ####### ####### #####
###### ##### ### ########### ###### ####### ### ######
###### ###### ### ########## ###### ##### #########
################## #### ##########################
###########################################################
Salida de ejemplo:
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
Ejemplo de cadena / molde (cadena demasiado corta, salida detenida):
This probably won't look good.
### ### ### ###
# # # # # #
### ### # # #
# # # # #
# # ### ###
Salida correspondiente:
Thi s p rob abl
y w o n '
t l ook g o
o d .
El código más corto en bytes gana.
Crédito por la idea de este sitio web .
Respuestas:
CJam,
1614 bytesGracias a Sp3000 por guardar 2 bytes.
Termina con un error si la cadena es demasiado corta, pero el error se imprime en STDERR.
Pruébalo en línea!
Alternativamente (mismo recuento de bytes):
Explicación
fuente
LabVIEW, 37 primitivas de LabVIEW
divide la cadena en texto y molde y luego los transforma en una matriz. Comprueba el molde si hay un # y pone un carácter del texto; de lo contrario, no hace nada. Si el texto o el molde están vacíos, salga del bucle
fuente
Haskell, 48 bytes
llamado como "(reemplazar con una cadena) # (cadena de hashmark)":
Menos golfizado:
fuente
import Control.Applicative;main=liftA2(#)getLine getContents>>=putStrLn
Retina ,
4240 bytesEl recuento de bytes asume la codificación ISO 8859-1.
El avance de línea final es significativo.
Pruébalo en línea!
Explicación
Primero reemplazamos los
#
que son parte de la cuadrícula con el carácter no ASCII (pero ASCII extendido)×
para no confundirlos con ninguno#
que pueda aparecer en la primera línea.Ahora llenamos tantos
×
como sea posible desde la primera línea reemplazando repetidamente el primero×
que podemos encontrar con el primer carácter en la primera línea (que se elimina en el proceso).Finalmente, nos deshacemos de todo lo que queda en la primera línea, así como de cualquier cosa desde el primero
×
para truncar la entrada en ambas direcciones.fuente
JavaScript (ES6),
575655 bytes¡Guardado 1 byte gracias a @Neil !
Explicación
Funciona con hashes en la cadena de entrada y conserva los espacios en blanco al final de la cadena de entrada.
fuente
m.replace(/./g,c=>...)
es más corto./[^]/
lugar de/.|\n/
. (También disculpas por sugerir erróneamente/./
).Python 3,
696867 bytesIdeone
Gracias a FryAmTheEggman, Chiel ten Brinke por el byte apagado. Alternativamente, podría haber usado Python 2 para uno adicional (
print
sin()
).fuente
print
conreturn
.pb , 359 bytes
En pb, la entrada es estrictamente unidimensional. No entiende que está dibujando una forma con su entrada, solo ve una línea larga con algunos bytes con un valor de 10. Lo primero que hace este programa es copiar todo menos la primera "línea" de entrada en Y = 0, Y = 1, etc., para crear la forma del molde.
Algo que he notado mucho en el golf de código, pero especialmente cuando se practica golf en idiomas esotéricos, es que a menudo no quieres tener dos ramas con las que lidiar; simplemente configuras que haces lo mismo en cualquier caso. La forma ingenua de resolver este problema probablemente verificaría la longitud de la cadena contra el número de hashes en el resto de la entrada y haría algo dependiendo del resultado, porque tiene que comportarse de manera diferente dependiendo de lo que se corta. Pero eso es muchos bytes.
En cambio, después de completar el molde, se agrega una línea adicional al fondo. Es simplemente
n
hash en una fila, donden
está la longitud de la cadena. ¡Ahora la cuerda está garantizada! Después de insertar todos los caracteres de la cadena, esa línea adicional que se agregó se destruye incondicionalmente. Los restos de hash en el molde también se borran, ¡y esa es la salida necesaria!Por supuesto, violaría la especificación simplemente destruir todos los hashes. Después de todo, ¡podría haber un hash en la cadena de entrada! Para manejar esto, me refiero a otra parte de la especificación:
(El énfasis es mío). Para cuando tratamos con la cadena, realmente no nos importa si hay nuevas líneas en ella, pero sabemos que no hay ninguna. Por lo tanto, ¡todos los hashes se reemplazan por saltos de línea antes de colocarlos en el molde! Después de que se destruyen todos los hashes, todas las líneas nuevas se reemplazan con hashes nuevamente. Esto no convierte toda la salida en una sola línea delimitada por hash porque la naturaleza de la salida 2D de pb significa que nunca puso una nueva línea al final de cada línea, simplemente pasó a la siguiente línea.
Sin golf:
fuente
ES6, 59 bytes
70 bytes si el texto puede contener hashes:
fuente
Perl,
535142 + 2 = 44 bytesRequiere
-p
correr. Explicación:fuente
$a=<>;$/="";say<>=~s/#/substr$a,$i++,1/ger
$/
lugar de unirseJalea,
108 bytesPruébalo aquí!
fuente
#
en la entrada.Perl 6 , 72 bytes
fuente
ES6, 47 bytes
Probablemente la solución más sencilla.
Este código crea una función anónima que recibe 2 parámetros y devuelve el resultado final.
El primer parámetro
S
es la cadena de "mapa" con su"#"
, mientras que el segundo parámetroR
es el "reemplazo" de esos"#"
.fuente
Python 3
152127 bytesUn programa completo
106 bytes
Una función que toma la secuencia como entrada.
fuente