Berechnen Sie anhand der Topografie des Landes im ASCII-Bildformat, wohin die Seen führen und füllen Sie sie aus. Nehmen Sie eine unendliche Menge Regen an.
Beispiel
Eingang
#
##
# ####
# #########
## ###########
## ############# ####
## ############## #####
################# #######
#########################
#########################
Ausgabe
#
##
#@####
#@@@@#########
##@@###########
##@#############@@@####
##@##############@@#####
#################@#######
#########################
#########################
Die Eingabe enthält nur Leerzeichen und #
Markierungen. Jede Zeile hat die gleiche Länge. Die Ausgabe sollte das gleiche #
Muster haben wie die Bereiche, in denen sich Wasser ansammeln würde, und mit @
Markierungen gefüllt sein .
Die unterste Eingabezeile enthält immer alle # -Zeichen. Es wird keine Löcher oder Überhänge im Land geben. Kürzester Code gewinnt.
@
, die ausgefüllt wurden.([char[]]"$a"-eq'@').Count
hier. Nicht zu viel hinzufügen. Einverstanden, dass dies etwas zu einfach ist. Fällt jedoch nicht in den Bereich dessen, was ich abgelehnt hätte.Antworten:
sed -r,
2724 (27 mit-r
)24 (27):
27 (30):Konkurriert mit der besseren der beiden Perl-Lösungenquelle
#|@
wäre ein char kürzere
wenn Sie das s entfernen , und ein weiteres aus S. Marks Vorschlag, auf 27 zurückzukehren.Perl, 25
quelle
-p
vielleicht?).e
nicht und somit werden nur 3 zusätzliche Zeichen benötigt?Perl (> = 5.9.5), 24 Zeichen
Laufen mit
perl -p
:Dies erfordert, dass Perl 5.9.5 oder höher das spezielle Escape verwendet
\K
.quelle
. I don't know the full rules about flags, so not sure the
e` Zählungen.Windows PowerShell, 36
74138quelle
Retina , 10 Bytes
Retina ist (viel) neuer als diese Herausforderung. Aber diese Lösung ist zu ordentlich, um sie nicht zu posten:
Probieren Sie es online aus.
Dies ist einfach eine Transliterationsstufe, die Leerzeichen durch ersetzt
@
, die Operation ist jedoch auf Übereinstimmungen von#.*#
Zeichen beschränkt , dh Zeichen, die auf beiden Seiten von Land umgeben sind.quelle
Ruby 1.8, 30 Zeichen
Wenn jemand eine Idee hat, warum dies in Ruby 1.9 (getestet mit 1.9.2p0 und 1.9.2p204) nicht funktioniert , lassen Sie es mich wissen , obwohl die Dokumentation besagt, dass es funktionieren sollte !
quelle
$_=$_.
man den Anfang der zweiten Zeile hinzufügt , funktioniert es in 1.9.2, also hat es etwas damit zu tunKernel.gsub
. Rubinius schlägt auch fehl, ohne es explizit hinzuzufügen$_
.-p
Flagge). Der Hash-Bash und der Name des Interpreters zählen nicht.Python,
95 bis92 Bytesquelle
05AB1E ,
1716 BytesProbieren Sie es online aus.
Erläuterung:
quelle
Javascript, 107 Bytes
Ungolfed:
quelle
return
, und Sie können die beiden Semikolons entfernen, und es kann nur sein,function f(x)...
oderf=function(x)...
Python,
10810692 Bytesquelle
Gelee , 15 Bytes
Probieren Sie es online!
quelle
Pip , 15 Bytes
Nimmt die Eingabe als mehrzeilige Zeichenfolge über das Befehlszeilenargument entgegen: Probieren Sie es online aus! ( Geben Sie alternativ die
-rn
Flags an und ändern Sie die erstea
ing
, und Sie können Eingaben über stdin vornehmen: Probieren Sie es online aus! )Gleiche Idee wie die Retina-Antwort: Ersetzen Sie jedes Match des Regex
#.*#
durch das Ergebnis des Transliterierens des Leerzeichens@
in das Match. Pip kann nicht mit Retinas Knappheit mithalten, um ein reines Regex-Problem zu lösen - aber es ist nicht jeden Tag so, dass man sich mit Jelly anlegen kann.quelle