Wyzwanie
Biorąc pod uwagę graficzny kształt kształtu, określ, ile otworów jest w nim.
Nie duplikat
To pytanie zostało oznaczone jako możliwy duplikat Hrabiów . Uważam, że to wyzwanie różni się od wyzwania Count Island, ponieważ w tym musisz wymyślić, jak wyeliminować bloki dotykające granicy.
Wejście
Dane wejściowe będą podawane jako forma wprowadzania 2D, albo ciąg wielowierszowy, tablica ciągów lub tablica znaków. To reprezentuje kształt. Gwarantowany jest kształt w jednym kawałku, połączony krawędzią. Podaj sposób, w jaki chcesz pobierać dane wejściowe.
Wynik
Dane wyjściowe to pojedyncza liczba całkowita określająca, ile otworów ma kształt. Końcowy znak nowej linii jest dozwolony, ale nie ma innych początkowych lub końcowych białych znaków. Innymi słowy, wynik musi być zgodny z wyrażeniem regularnym ^\d+\n?$
.
Co to jest dziura?
Są to pojedyncze otwory:
####
# #
# #
####
####
# #
# ##
###
#####
# # #
# #
#####
To nie są dziury:
########
########
# ####
# ####
# ######
#
########
###
#
###
##########
#
# ########
# # #
# # #### #
# # ## #
# ###### #
# #
##########
Właściwie, jeśli szczelina łączy się z zewnętrzną krawędzią, nie jest to dziura.
Przypadki testowe
#####
# # # -> 2
#####
#####
#
# ### -> 1
# # #
#####
####
## # -> 1 (things are connected by edges)
# ##
####
###
### -> 0 (You must handle shapes with no holes, but input will always contain at least one filled space)
###
Możesz użyć dowolnej postaci zamiast „#” i zamiast spacji.
Kryteria punktacji obiektywnej
Wynik jest podawany jako liczba bajtów w twoim programie.
Zwycięski
Zwycięzcą zostanie zgłoszenie o najniższym wyniku do 4 kwietnia.
###|# #|##
jako przypadek testowy? To powinno być 0
, prawda?