Dada la topografía de la tierra en formato de imagen ASCII, averigüe dónde irían los lagos y complételos. Suponga una cantidad infinita de lluvia.
ejemplo
entrada
#
##
# ####
# #########
## ###########
## ############# ####
## ############## #####
################# #######
#########################
#########################
salida
#
##
#@####
#@@@@#########
##@@###########
##@#############@@@####
##@##############@@#####
#################@#######
#########################
#########################
La entrada contendrá solo espacios y #
marcas. Cada línea tendrá la misma longitud. El resultado debe ser el mismo #
patrón con espacios donde el agua se acumularía llena de @
marcas.
La fila de entrada inferior siempre serán todas las marcas #. No habrá agujeros ni salientes en la tierra. El código más corto gana.
@
que se llenaron en.([char[]]"$a"-eq'@').Count
aquí. No es demasiado agregar. Sin embargo, coincidió en que esto es un poco demasiado fácil. Sin embargo, no cae en el ámbito de lo que yo votaría negativamente.Respuestas:
sed -r,
2724 (27 con-r
)24 (27):
27 (30):Compite con la mejor de las dos soluciones perlfuente
#|@
sería un char más cortoe
embargo, puede cortar dos para eliminar el s, y otro de la sugerencia de S.Mark para volver al 27.Perl, 25
fuente
-p
¿tal vez?).e
no cuenta y, por lo tanto, solo se requieren 3 caracteres adicionales?Perl (> = v5.9.5), 24 caracteres
Correr con
perl -p
:Esto requiere Perl 5.9.5 o posterior para usar el escape especial
\K
.fuente
. I don't know the full rules about flags, so not sure the
recuentos` -pe e`.Windows PowerShell, 36
74138fuente
Retina , 10 bytes
La retina es (mucho) más nueva que este desafío. Pero esta solución es demasiado ordenada para no publicarla:
Pruébalo en línea.
Esta es simplemente una etapa de transliteración que reemplaza espacios con
@
, pero la operación está restringida a coincidencias de#.*#
, es decir, personajes que están rodeados por tierra en ambos lados.fuente
Ruby 1.8, 30 caracteres
Si alguien tiene una idea de por qué esto no funciona en Ruby 1.9 (probado con 1.9.2p0 y 1.9.2p204), a pesar de que la documentación dice que debería funcionar , ¡hágamelo saber!
fuente
$_=$_.
al comienzo de la segunda línea hace que funcione en 1.9.2, por lo que es algo que tiene que verKernel.gsub
. Rubinius también falla sin agregar explícitamente$_
.-p
bandera). El hash-bash y el nombre del intérprete no cuentan.Python,
9592 bytesfuente
05AB1E ,
1716 bytesPruébalo en línea.
Explicación:
fuente
Javascript, 107 bytes
Sin golf:
fuente
return
, y puede eliminar los dos puntos y comas, y puede ser simplementefunction f(x)...
of=function(x)...
Python,
10810692 bytesfuente
Jalea , 15 bytes
Pruébalo en línea!
fuente
Pip , 15 bytes
Toma datos como una cadena multilínea a través del argumento de la línea de comandos: ¡ Pruébelo en línea! (Alternativamente, especifique los
-rn
indicadores y cambie el primeroa
ag
, y puede dar entrada a través de stdin: ¡ Pruébelo en línea! )La misma idea que la respuesta de Retina: reemplace cada coincidencia de la expresión regular
#.*#
con el resultado de transliterar el espacio@
en la coincidencia. Pip no puede igualar la brevedad de Retina para un problema de expresión regular pura, pero no todos los días se puede vincular con Jelly, después de todo.fuente