Biorąc pod uwagę topografię terenu w formacie obrazu ASCII, dowiedz się, dokąd pójdą jeziora i wypełnij je. Załóż nieskończoną ilość deszczu.
przykład
Wejście
#
##
# ####
# #########
## ###########
## ############# ####
## ############## #####
################# #######
#########################
#########################
wynik
#
##
#@####
#@@@@#########
##@@###########
##@#############@@@####
##@##############@@#####
#################@#######
#########################
#########################
Dane wejściowe będą zawierać tylko spacje i #
znaki. Każda linia będzie tej samej długości. Wyjście powinno mieć identyczny #
wzór ze spacjami, w których gromadziłaby się woda wypełnionymi @
znakami.
Dolny wiersz wejściowy zawsze będzie oznaczony # znakami. Na ziemi nie będzie dziur ani nawisów. Najkrótszy kod wygrywa.
@
które zostały wypełnione.([char[]]"$a"-eq'@').Count
tutaj. Nie za bardzo dodaj. Zgodził się jednak, że jest to trochę zbyt łatwe. Jednak nie mieści się w sferze tego, co głosowałem.Odpowiedzi:
sed -r,
2724 (27 z-r
)24 (27):
27 (30):Konkuruje z lepszym z dwóch rozwiązań perlaźródło
#|@
byłby o jeden char krótszye
s, a drugi od sugestii S. Mark, aby wrócić do 27.Perl, 25
źródło
-p
może?).e
nie liczy, a zatem wymagane są tylko 3 dodatkowe znaki?Perl (> = v5.9.5), 24 znaki
Biegnij z
perl -p
:Wymaga to Perla 5.9.5 lub nowszego, aby skorzystać ze specjalnej ucieczki
\K
.źródło
. I don't know the full rules about flags, so not sure the
liczy się` -pe e`.Windows PowerShell, 36
74138źródło
Siatkówka , 10 bajtów
Siatkówka jest (znacznie) nowsza od tego wyzwania. Ale to rozwiązanie jest zbyt fajne, aby go nie opublikować:
Wypróbuj online.
Jest to po prostu etap transliteracji, który zastępuje spacje
@
, ale operacja jest ograniczona do dopasowań#.*#
, tj. Znaków otoczonych lądem po obu stronach.źródło
Ruby 1.8, 30 znaków
Jeśli ktoś ma pomysł, dlaczego to nie działa w Ruby 1.9 (testowane z 1.9.2p0 i 1.9.2p204), nawet jeśli dokumentacja mówi, że powinno działać , daj mi znać!
źródło
$_=$_.
na początku drugiej linii sprawia, że działa ona w wersji 1.9.2, więc ma to coś wspólnegoKernel.gsub
. Rubinius również zawiedzie bez wyraźnego dodania$_
.-p
flagi). Hash-bash i nazwa tłumacza się nie liczą.Python,
9592 bajtówźródło
05AB1E ,
1716 bajtówWypróbuj online.
Wyjaśnienie:
źródło
JavaScript, 107 bajtów
Nie golfowany:
źródło
return
, można usunąć dwa średniki, a to może być tylkofunction f(x)...
albof=function(x)...
Python,
10810692 bajtówźródło
Galaretka , 15 bajtów
Wypróbuj online!
źródło
Pip , 15 bajtów
Pobiera dane wejściowe jako ciąg wielowierszowy za pomocą argumentu wiersza polecenia: Wypróbuj online! (Alternatywnie, określ
-rn
flagi i zmień pierwszya
nag
, a możesz podać dane wejściowe za pośrednictwem stdin: Wypróbuj online! )Ten sam pomysł, co odpowiedź Retina: zamień każde dopasowanie wyrażenia regularnego
#.*#
wynikiem transliteracji spacji do@
w dopasowaniu. Pip nie może dorównać zwięzłości Retiny z powodu czystego problemu wyrażenia regularnego - ale przecież nie codziennie można związać się z Galaretką.źródło