Desafío
Dada una entrada gráfica de una forma, determine cuántos agujeros hay en ella.
No duplicado
Esta pregunta fue marcada como un posible duplicado de Count Islands . Creo que este desafío es diferente del desafío Count Island porque en este, tienes que descubrir cómo eliminar los bloques que tocan el borde.
Entrada
La entrada se dará como una forma de entrada en 2D, ya sea una cadena multilínea, una matriz de cadenas o una matriz de matrices de caracteres. Esto representa la forma. Se garantiza que la forma sea de una sola pieza, conectada por el borde. Especifique cómo desea que se tome la entrada.
Salida
La salida es un entero entero que indica cuántos agujeros hay en la forma. Se permite una nueva línea final, pero no otros espacios en blanco iniciales o finales. En otras palabras, la salida debe coincidir con la expresión regular ^\d+\n?$
.
¿Qué es un hoyo?
Estos son agujeros individuales:
####
# #
# #
####
####
# #
# ##
###
#####
# # #
# #
#####
Estos no son agujeros:
########
########
# ####
# ####
# ######
#
########
###
#
###
##########
#
# ########
# # #
# # #### #
# # ## #
# ###### #
# #
##########
Más o menos, si la brecha se une al borde exterior, no es un agujero.
Casos de prueba
#####
# # # -> 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)
###
Puede usar cualquier carácter en lugar del '#' y en lugar de los espacios.
Criterios de puntuación objetiva
La puntuación se da como el número de bytes en su programa.
Victorioso
El ganador será la presentación con el puntaje más bajo, antes del 4 de abril.
###|# #|##
como un caso de prueba? Eso debería ser 0
, ¿verdad?