Eu sempre quis cercar algum texto com #
s, mas tenho dificuldade em descobrir o que cercava, então neste desafio você estará escrevendo um programa para fazer exatamente isso
Exemplos
As entradas / saídas são separadas por uma nova linha.
###
#a#
###
a
#
#a#
#
a
###
# a #
# b c #
#######
a
b c
ABCDHIJ
E####GK
F# M #L
# N#O
P####
M
N
###A###
#C#B#o#
#d###e#
# go#
###
C o
d e
go
Spec
#
s são o que "envolve" um bloco de texto#
sempre estarão adjacentes um ao outro (incluindo na diagonal)#
sempre formará uma forma fechada- Haverá apenas uma
#
forma - No caso de uma forma côncava, os furos devem ser preenchidos com espaços.
- O espaço em branco deve ser preservado na saída
#
lá vai você ... e depois ficou difícil.\n
após cada linha de entrada e passado como um parâmetro de função para o meu programa ou o quê?_M_\n___N
(usando sublinhados em vez de espaços por causa de problemas de formatação), enquanto nos exemplos abc e Codego a saída também inclui um espaço em branco onde #s estavam na entrada. Se apenas o texto cercado por #s for impresso, a saída do exemplo abc deve ser_a_\n_b_c_
(em vez de__a_\n_b_c
) e a saída do exemplo Codego deve serCo\nde\n_go
(em vez deC___o\nd___e\n__go
).MN
exemplo. como não de deve sido um espaço extra após M.Respostas:
Perl,
144138132129128127126124 bytesInclui +2 para
-p0
O código assume que
\0
não é um caractere de entrada válido (pelo menos dentro do#
).Execute com a entrada em STDIN:
surround.pl
:O código funciona como está, mas substitua as versões literais
\0
e as\n
pela pontuação reivindicada. Observe que há um espaçono final da linha. O código faz um loop muitas vezes, portanto, talvez você precise esperar 30 segundos ou mais pela saída.
Explicação
Vou fazer um aterro com
\0
paradas#
do lado de fora nas direções ortogonais. Depois disso, cortarei os#
lados e substituirei tudo o que for deixado por espaços. Para evitar ter que lidar com todas as direções no aterro, girarei repetidamente a área de destino e apenas aterro da direita para a esquerdaNeste ponto, por exemplo
será substituído por:
Basicamente, todas as colunas e linhas que não estão diretamente próximas ao interior foram cortadas. Quaisquer caracteres externos restantes foram substituídos por \ 0. No topo e à direita, há uma camada extra de \ 0. Então, tudo o que resta é a limpeza:
fonte
#
opções removidas. verifique minha sessão bash: codepad.org/YbCzB4O4Javascript,
48546444217396390 bytesSim. Eu tentei. E, embora eu esteja com
485bytes, estou ganhando porque ninguém mais teve vontade de responder a essa pergunta. Então, ah!E também, estou ciente de que poderia jogar golfe, estou cansado no momento ... bem, agora estou com 396 anos. Graças a Conor pela maior parte do golfe ...: D
fonte
y=z=0