Você recebe uma única string ASCII imprimível que não contém novas linhas e um "molde" de várias linhas, contendo espaços ( ) e hashes (
#
).
Você deve inserir caractere por caractere na sequência e substituir os hashes usando os caracteres da sequência na ordem superior esquerda, esquerda e direita. Se a sequência for muito curta para preencher o molde, você para de produzir; se a sequência for muito longa, você truncará a sequência para preencher exatamente o molde.
Exemplo de string / molde (string muito longa, 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.
###########################################################
##### ############## ###### ###### ######################
##### ## ###### # ##### ###### ######## ######
###### # # #### #### ##### ###### ####### ###### #####
###### ### ### ##### ###### ####### ####### #####
###### ##### ### ########### ###### ####### ### ######
###### ###### ### ########## ###### ##### #########
################## #### ##########################
###########################################################
Exemplo de saída:
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
Exemplo de string / molde (string muito curta, saída interrompida):
This probably won't look good.
### ### ### ###
# # # # # #
### ### # # #
# # # # #
# # ### ###
Saída correspondente:
Thi s p rob abl
y w o n '
t l ook g o
o d .
O menor código em bytes vence.
Crédito para a idéia neste site .
Respostas:
CJam,
1614 bytesAgradecimentos ao Sp3000 por salvar 2 bytes.
Termina com um erro se a sequência for muito curta, mas o erro é impresso em STDERR.
Experimente online!
Como alternativa (mesma contagem de bytes):
Explicação
fonte
LabVIEW, 37 Primitivas do LabVIEW
divide a string em texto e molde e depois as transforma em uma matriz. Verifica o molde se houver um # e coloca um caractere de texto, caso contrário ele não faz nada. Se o texto ou o molde estiverem vazios, saia do loop
fonte
Haskell, 48 bytes
chamado como "(substitua por string) # (string de marca de hash)":
Menos golfe:
fonte
import Control.Applicative;main=liftA2(#)getLine getContents>>=putStrLn
Retina ,
4240 bytesA contagem de bytes assume a codificação ISO 8859-1.
O avanço de linha à direita é significativo.
Experimente online!
Explicação
Primeiro, substituímos
#
as partes da grade pelo caractere não ASCII (mas ASCII estendido)×
para não confundi-los com nenhum#
que possa aparecer na primeira linha.Agora, preenchemos o maior número
×
possível da primeira linha, substituindo repetidamente a primeira×
que podemos encontrar pelo primeiro caractere na primeira linha (que é removida no processo).Finalmente, nos livramos de tudo o que resta na primeira linha e também do primeiro
×
para truncar a entrada nas duas direções.fonte
JavaScript (ES6),
575655 bytesGuardado 1 byte graças a @Neil !
Explicação
Funciona com hashes na cadeia de entrada e mantém o espaço em branco à direita após a conclusão da cadeia de entrada.
fonte
m.replace(/./g,c=>...)
é mais curto./[^]/
vez de/.|\n/
. (Também Desculpas para erroneamente sugerir/./
.)Python 3,
696867 bytesIdeone
Graças a FryAmTheEggman, Chiel ten Brinke pelo byte off. Como alternativa, eu poderia ter usado o Python 2 por um extra (
print
sem()
).fonte
print
porreturn
.pb , 359 bytes
Em pb, a entrada é estritamente unidimensional. Ele não entende que você está desenhando uma forma com sua entrada, apenas vê uma linha longa com alguns bytes com um valor de 10 jogados lá. A primeira coisa que este programa faz é copiar todos, exceto a primeira "linha" de entrada, em Y = 0, Y = 1, etc., para criar a forma do molde.
Algo que eu notei muito no código de golfe, mas especialmente ao jogar idiomas esotéricos, é que muitas vezes você não quer ter dois ramos para lidar; você apenas decide que faz a mesma coisa nos dois casos. A maneira ingênua de resolver esse problema provavelmente verificaria o comprimento da string em relação ao número de hashes no restante da entrada e faria algo dependendo do resultado, porque ele deveria se comportar de maneira diferente, dependendo do que for cortado. Mas isso é muitos bytes.
Em vez disso, após a conclusão do molde, uma linha extra é adicionada ao fundo. É simplesmente
n
hashes seguidos, onden
está o comprimento da string. Agora a corda está garantida para caber! Depois de inserir todos os caracteres da sequência, essa linha extra que foi adicionada é destruída incondicionalmente. Quaisquer hashes restantes no molde apropriado também são apagados, e essa é a saída necessária!Obviamente, violaria as especificações para simplesmente destruir todos os hashes. Afinal, pode haver um hash na string de entrada! Para lidar com isso, refiro-me a outra parte da especificação:
(Ênfase minha.) No momento em que lidamos com a string, não nos importamos se há novas linhas nela, mas sabemos que não há nenhuma. Portanto, todos os hashes são substituídos por novas linhas antes de serem inseridos no molde! Depois que todos os hashes são destruídos, todas as novas linhas são substituídas por hashes novamente. Isso não transforma toda a saída em uma única linha delimitada por hash, porque a natureza da saída 2D do pb significa que ele nunca coloca uma nova linha no final de cada linha, apenas passa para a próxima linha.
Ungolfed:
fonte
ES6, 59 bytes
70 bytes se o texto puder conter hashes:
fonte
Perl,
535142 + 2 = 44 bytesRequer
-p
para executar. Explicação:fonte
$a=<>;$/="";say<>=~s/#/substr$a,$i++,1/ger
$/
vez de joinGeléia,
108 bytesExperimente aqui!
fonte
#
entrada.Perl 6 , 72 bytes
fonte
ES6, 47 bytes
Provavelmente a solução mais direta.
Este código cria uma função anônima que recebe 2 parâmetros e retorna o resultado final.
O primeiro parâmetro
S
é a string "map" com o seu"#"
, enquanto o segundo parâmetroR
é a "substituição" deles"#"
.fonte
Python 3
152127 bytesUm programa completo.
106 bytes
Uma função que recebe o fluxo como entrada.
fonte