Étant donné la topographie des terres au format ASCII, déterminez où les lacs iraient et remplissez-les. Supposez une quantité infinie de pluie.
exemple
contribution
#
##
# ####
# #########
## ###########
## ############# ####
## ############## #####
################# #######
#########################
#########################
production
#
##
#@####
#@@@@#########
##@@###########
##@#############@@@####
##@##############@@#####
#################@#######
#########################
#########################
L'entrée ne contiendra que des espaces et des #
marques. Chaque ligne aura la même longueur. La sortie devrait être le #
modèle identique avec des espaces où l'eau s'accumulerait remplie de @
marques.
La ligne d'entrée inférieure sera toujours composée de tous les signes #. Il n'y aura pas de trous ou de surplombs dans la terre. Le code le plus court gagne.
@
qui ont été remplies.([char[]]"$a"-eq'@').Count
ici. Pas trop ajouter. Je suis d'accord pour dire que c'est un peu trop facile, cependant. Cependant, cela ne tombe pas dans le domaine de ce que je dévaloriserais.Réponses:
sed -r,
2724 (27 avec-r
)24 (27):
27 (30):Concourt avec le meilleur des deux solutions Perlla source
#|@
serait un caractère plus courte
s, et un autre de la suggestion de S.Mark de revenir à 27 cependant.Perl, 25
la source
-p
peut-être?).e
compte pas et donc seulement 3 caractères supplémentaires requis?Perl (> = v5.9.5), 24 caractères
Courir avec
perl -p
:Cela nécessite Perl 5.9.5 ou une version ultérieure pour utiliser l'échappement spécial
\K
.la source
. I don't know the full rules about flags, so not sure the
e».Windows PowerShell, 36
74138la source
Rétine , 10 octets
La rétine est (beaucoup) plus récente que ce défi. Mais cette solution est trop soignée pour ne pas la poster:
Essayez-le en ligne.
Il s'agit simplement d'une étape de translittération qui remplace les espaces par
@
, mais l'opération est limitée aux correspondances de#.*#
, c'est-à-dire aux personnages qui sont entourés de terres des deux côtés.la source
Ruby 1.8, 30 caractères
Si quelqu'un a une idée pourquoi cela ne fonctionne pas dans Ruby 1.9 (testé avec 1.9.2p0 et 1.9.2p204), même si la documentation dit que cela devrait fonctionner , faites le moi savoir!
la source
$_=$_.
au début de la deuxième ligne le fait fonctionner en 1.9.2 donc c'est quelque chose à voir avecKernel.gsub
. Rubinius échoue également sans ajouter explicitement$_
.-p
drapeau). Le hash-bash et le nom de l'interpréteur ne comptent pas.Python,
9592 octetsla source
05AB1E ,
1716 octetsEssayez-le en ligne.
Explication:
la source
Javascript, 107 octets
Non golfé:
la source
return
, et vous pouvez supprimer les deux points-virgules, et cela peut être simplementfunction f(x)...
ouf=function(x)...
Python,
10810692 bytesla source
Gelée , 15 octets
Essayez-le en ligne!
la source
Pip , 15 octets
Prend l'entrée sous forme de chaîne multiligne via un argument de ligne de commande: Essayez-le en ligne! (Alternativement, spécifiez les
-rn
indicateurs et changez le premiera
eng
, et vous pouvez donner votre entrée via stdin: essayez-le en ligne! )Même idée que la réponse Retina: remplacer chaque correspondance de l'expression régulière
#.*#
par le résultat de la translittération de l'espace@
dans la correspondance. Pip ne peut pas égaler la gravité de Retina pour un problème de regex pur - mais ce n'est pas tous les jours que vous pouvez nouer avec Jelly, après tout.la source