Учитывая топографию земли в формате изображения ASCII, определите, куда озера пойдут, и заполните их. Предположите бесконечное количество осадков.
пример
вход
#
##
# ####
# #########
## ###########
## ############# ####
## ############## #####
################# #######
#########################
#########################
выход
#
##
#@####
#@@@@#########
##@@###########
##@#############@@@####
##@##############@@#####
#################@#######
#########################
#########################
Входные данные будут содержать только пробелы и #
метки. Каждая строка будет одинаковой длины. На выходе должен быть идентичный #
шаблон с пространствами, в которых будет скапливаться вода, заполненными @
отметками.
В нижней строке ввода всегда будут все # отметки. На земле не будет дыр или свесов. Самый короткий код выигрывает.
@
которые были заполнены.([char[]]"$a"-eq'@').Count
здесь. Не так уж много добавить. Договорились, что это слишком легко. Впрочем, это не относится к тому, что я бы понизил.Ответы:
сед-р,
2724 (27 с-r
)24 (27):
27 (30):Конкурирует с лучшими из двух решений Perlисточник
#|@
будет на один символ корочеe
s, а другой от предложения С.Марка, чтобы вернуться к 27, хотя.Perl, 25
источник
-p
возможно?).e
не считается и, следовательно, требуется только 3 дополнительных символа?Perl (> = v5.9.5), 24 символа
Запустить с
perl -p
:Для этого требуется Perl 5.9.5 или новее, чтобы использовать специальный escape
\K
.источник
. I don't know the full rules about flags, so not sure the
e`.Windows PowerShell, 36
74138источник
Сетчатка , 10 байт
Сетчатка (намного) новее, чем этот вызов. Но это решение слишком аккуратно, чтобы не публиковать его:
Попробуйте онлайн.
Это просто этап транслитерации, который заменяет пробелы на
@
, но операция ограничивается совпадениями#.*#
, то есть символами, которые окружены землей с обеих сторон.источник
Ruby 1.8, 30 символов
Если у кого-то есть идея, почему это не работает в Ruby 1.9 (протестировано с 1.9.2p0 и 1.9.2p204), хотя в документации сказано, что это должно работать , дайте мне знать!
источник
$_=$_.
к началу второй строки заставляет его работать в 1.9.2, так что это как-то связаноKernel.gsub
. Рубиниус также терпит неудачу без явного добавления$_
.-p
флага). Hash-bash и имя интерпретатора не учитываются.Python,
9592 байтаисточник
05AB1E ,
1716 байтПопробуйте онлайн.
Объяснение:
источник
Javascript, 107 байт
Ungolfed:
источник
return
, и вы можете удалить две точки с запятой, и это может быть простоfunction f(x)...
илиf=function(x)...
Python,
10810692 байтаисточник
Желе , 15 байт
Попробуйте онлайн!
источник
Пип , 15 байт
Принимает ввод в виде многострочной строки через аргумент командной строки: попробуйте онлайн! (В качестве альтернативы укажите
-rn
флаги и измените первыйa
наg
, и вы можете вводить данные через stdin: попробуйте онлайн! )Та же идея, что и в ответе Retina: заменять каждое совпадение регулярного выражения
#.*#
на результат транслитерации пространства@
в совпадении. Пип не может сравниться с краткостью Ретины из-за проблем с регулярным выражением - но ведь не каждый день ты можешь связать себя с Джелли.источник