Dada a topografia da terra no formato de imagem ASCII, descubra para onde os lagos iriam e os preencha. Assuma uma quantidade infinita de chuva.
exemplo
entrada
#
##
# ####
# #########
## ###########
## ############# ####
## ############## #####
################# #######
#########################
#########################
resultado
#
##
#@####
#@@@@#########
##@@###########
##@#############@@@####
##@##############@@#####
#################@#######
#########################
#########################
A entrada conterá apenas espaços e #
marcas. Cada linha terá o mesmo comprimento. A saída deve ser o #
padrão idêntico aos espaços onde a água se acumularia preenchida com @
marcas.
A linha de entrada inferior sempre terá todas as marcas #. Não haverá buracos ou saliências na terra. O menor código vence.
@
que foram preenchidos.([char[]]"$a"-eq'@').Count
aqui. Não é muito adicionar. Mas concordamos que isso é um pouco fácil demais. No entanto, não cai no reino do que eu votaria.Respostas:
sed -r,
2724 (27 com-r
)24 (27):
27 (30):Compete com a melhor das duas soluções perlfonte
#|@
seria um char mais curtoe
s e outro da sugestão de S. Mark para voltar para 27.Perl, 25
fonte
-p
talvez?).e
não conta e, portanto, são necessários apenas 3 caracteres adicionais?Perl (> = v5.9.5), 24 caracteres
Corra com
perl -p
:Isso requer o Perl 5.9.5 ou posterior para usar a fuga especial
\K
.fonte
. I don't know the full rules about flags, so not sure the
contagens do` -pe e` .Windows PowerShell, 36
74138fonte
Retina , 10 bytes
A retina é (muito) mais nova que esse desafio. Mas esta solução é muito legal para não publicá-la:
Experimente online.
Este é simplesmente um estágio de transliteração que substitui os espaços
@
, mas a operação é restrita a correspondências de#.*#
, ou seja, caracteres cercados por terra dos dois lados.fonte
Ruby 1.8, 30 caracteres
Se alguém tiver uma idéia de por que isso não funciona no Ruby 1.9 (testado com 1.9.2p0 e 1.9.2p204), mesmo que a documentação diga que deve funcionar , me avise!
fonte
$_=$_.
o início da segunda linha faz com que funcione na versão 1.9.2, por isso é algo a verKernel.gsub
. Rubinius também falha sem adicionar explicitamente$_
.-p
bandeira). O hash-bash e o nome do intérprete não contam.Python,
9592 bytesfonte
05AB1E ,
1716 bytesExperimente online.
Explicação:
fonte
Javascript, 107 bytes
Ungolfed:
fonte
return
, e você pode remover os dois pontos e vírgulas, e pode apenas serfunction f(x)...
ouf=function(x)...
Python,
10810692 bytesfonte
Gelatina , 15 bytes
Experimente online!
fonte
Pip , 15 bytes
Recebe a entrada como uma cadeia de linhas múltiplas através do argumento da linha de comando: Experimente online! (Como alternativa, especifique os
-rn
sinalizadores e altere o primeiroa
parag
, e você pode fornecer informações via stdin: Experimente online! )A mesma idéia da resposta da Retina: substitua todas as correspondências da expressão regular
#.*#
pelo resultado do espaço de transliteração@
na correspondência. Pip não pode igualar a discrepância de Retina por um problema de regex puro - mas não é todo dia que você pode amarrar Jelly, afinal.fonte