Фон
Атомная бомба взорвалась возле завода ограждения! Поскольку ограждения необходимы для выживания нашей цивилизации, мы должны спасти как можно больше. Мы посылаем радиационно-стойких роботов для поиска в этом районе, и ваша задача - запрограммировать их искусственное зрение.
вход
Ваш ввод представляет собой прямоугольную сетку символов |-#
, представляющих два вида частей ограждения и обломков, заданных в виде строки с разделителями новой строки. Ограждения были ужасно искалечены взрывом, а некоторые даже были слиты вместе жаром. Мы определяем предполагаемую точку ограждения как горизонтальный шаблон, который начинается и заканчивается |
и имеет один или несколько -
s между ними (как |-|
или |---|
нет ||
), или вертикальный шаблон, который начинается и заканчивается -
и имеет один или несколько |
s между ними (по существу горизонтальный кандидатный забор повернут на 90 градусов). Фактический fencepost является кандидатом fencepost , который не разделяет какой - либо из его частей с другой кандидата fencepost.
Выход
Ваш вывод - это количество фактических заборов во входной сетке.
пример
Рассмотрим входную сетку
|#|-|#|##
#||--|||#
###|#|--#
###-||--|
-#-|#-|#-
#---#-#-|
#-#-|#--|
В этой сетке есть 5 потенциальных заборов, но только 2 из них являются действительными (показаны жирным шрифтом). Таким образом, правильный вывод 2
.
правила
Вы можете написать либо полную программу, либо функцию. Побеждает меньшее количество байтов, и стандартные лазейки запрещены.
Дополнительные тестовые случаи
Входные данные:
##--
||##
-#|-
|#|#
Вывод: 0
(0 потенциальных заборов)
Входные данные:
-##|-##--
#|#-|#||-
--|-#|#||
##||||-##
||#|--|-|
-#|-#--|#
|####|#-#
Вывод: 0
(5 потенциальных заборов)
Входные данные:
#|--|---|-|#
####|##--||-
-|-##||#|---
-#|#-|-#-|||
#|-##--###|-
---#-||-#-##
#|---|###|-#
-|---#-#|#|#
|#--|####-|-
Результат: 4
(8 кандидатов на ограждения)
Входные данные:
-|-||---##|#
---|######-#
####-##|#--|
|||##|#-||||
####-#-||-#|
---#--|#-#--
-|#-####-##-
#||-|-|-###|
|-##||-||-#-
Результат: 5
(7 кандидатов на ограждения)
Входные данные:
|#-|#|#-###|#-#
----#####|#----
|#--#-##-#|##-|
|#-|#-|--##||--
||#-#---##|||##
#|#-|||-#-#--||
--#|-||#|--|#|#
-#-|###||-#--#|
-#||-|#-##||##|
|--|-|||-##|-#|
Результат: 4
(9 кандидатов на ограждения)
Входные данные:
||-|-|-##-#-#-|#--#-
-##|-#|-#-##-|#|--|-
||#---###||-|#|##|-#
#||-#-#-|---|#||#|##
-#-###-##-|-#-|-#||#
##-#--#||-----||-|##
-|--#-#-#|---#-#|#-#
###|-|#-#|-|###|#-|#
#||#-#|--|-||#------
||##|-||#-|--#|#-#-#
|#-|-#-|-|--##-#|||#
-|#--#||##---##|-##-
#|-|-|-||-||#-#-|##-
|-#|##|-|#|#|--||#--
Вывод: 9
(30 потенциальных заборов)
|--...--|
шаблонах подстановочных знаков? Означает ли это, что горизонтальные заборы должны иметь как минимум 5 дефисов? Я немного смущен обозначениями.[[-,|,-],[#,#,-],[-,-,|]]
?Ответы:
Рубин, 266
268байтЧтобы начать это. Использует тот факт, что переменные указывают на объекты (1-символьная строка для каждого элемента 2D-массива), чтобы исключить перекрывающихся кандидатов.
Например. если вы выполняете
a="s";b=a
, обаa
иb
указывают на одну и ту же строку."test"=="test"
возвращает true, но"test".equal?("test")
возвращает false, потому что мы создали два разных объекта String.Тестовые случаи на ideone .
источник
map
вместоeach