Рассмотрим следующую стандартную сетку кроссвордов 15 × 15 .
Мы можем представить это в искусстве ASCII, используя #
для блоков и (пробел) для белых квадратов.
# #
# #
#
# #
### ## ##
## #
# #
# ##
## ## ###
# #
#
# #
# #
Учитывая приведенную выше сетку кроссвордов в художественном формате ASCII, определите, сколько слов в ней содержится. (Вышеуказанная сетка состоит из 78 слов. Это, пожалуй, загадка « Нью-Йорк Таймс» в прошлый понедельник .)
Слово - это группа из двух или более последовательных пробелов, проходящих вертикально или горизонтально. Слово начинается и заканчивается либо блоком, либо краем сетки и всегда проходит сверху вниз или слева направо, а не по диагонали или назад. Обратите внимание, что слова могут охватывать всю ширину головоломки, как в шестом ряду головоломки выше. Слово не обязательно должно быть связано с другим словом.
подробности
- На входе всегда будет прямоугольник, содержащий символы
#
или(пробел) со строками, разделенными символом новой строки (
\n
). Вы можете предположить, что сетка состоит из любых 2 различных печатаемых символов ASCII вместо#
и.
- Вы можете предположить, что есть дополнительный завершающий перевод строки. Символы в конце пробела имеют значение, так как они влияют на количество слов.
- Сетка не всегда будет симметричной, и это могут быть все пробелы или все блоки.
- Ваша программа теоретически должна работать на сетке любого размера, но для этой задачи она никогда не будет больше 21 × 21.
- Вы можете взять саму сетку в качестве ввода или имя файла, содержащего сетку.
- Возьмите входные данные из аргументов stdin или командной строки и выведите их в stdout.
- Если вы предпочитаете, вы можете использовать именованную функцию вместо программы, принимая сетку в качестве строкового аргумента и выводя целое число или строку через стандартный вывод или возврат функции.
Контрольные примеры
Входные данные:
# # #
Вывод:
7
(перед каждым есть четыре пробела#
. Результат будет одинаковым, если убрать каждый числовой знак, но Markdown удаляет пробелы из пустых строк.)Входные данные:
## # ##
Вывод:
0
(Однобуквенные слова не учитываются.)Входные данные:
###### # # #### # ## # # ## # #### #
Вывод:
4
Вход: (10 мая, воскресенье, Нью-Йорк Таймс )
# ## # # # # # # # ### ## # # ## # # # ## # ## # ## # # ### ## # ## ## # ## ### # # ## # ## # ## # # # ## # # ## ### # # # # # # # ## #
Вывод:
140
счет
Самый короткий код в байтах побеждает. Tiebreaker - самый старый пост.