Herausforderung
Bestimmen Sie anhand einer grafischen Eingabe einer Form, wie viele Löcher sich darin befinden.
Nicht duplizieren
Diese Frage wurde als mögliches Duplikat von Count Islands markiert . Ich glaube, diese Herausforderung unterscheidet sich von der Count Island-Herausforderung, weil Sie in dieser herausfinden müssen, wie Sie Blöcke entfernen, die die Grenze berühren.
Eingang
Die Eingabe erfolgt in Form einer 2D-Eingabe, entweder als mehrzeilige Zeichenfolge, als Array von Zeichenfolgen oder als Array von Zeichenfeldern. Dies repräsentiert die Form. Die Form ist garantiert nur einteilig und durch eine Kante verbunden. Bitte geben Sie an, wie die Eingabe erfolgen soll.
Ausgabe
Die Ausgabe ist eine einzelne Ganzzahl, die angibt, wie viele Löcher sich in der Form befinden. Ein abschließender Zeilenumbruch ist zulässig, jedoch kein anderes führendes oder abschließendes Leerzeichen. Mit anderen Worten, die Ausgabe muss mit dem regulären Ausdruck übereinstimmen ^\d+\n?$
.
Was ist ein Loch?
Dies sind Einzellöcher:
####
# #
# #
####
####
# #
# ##
###
#####
# # #
# #
#####
Dies sind keine Löcher:
########
########
# ####
# ####
# ######
#
########
###
#
###
##########
#
# ########
# # #
# # #### #
# # ## #
# ###### #
# #
##########
Ziemlich genau, wenn sich die Lücke mit der Außenkante verbindet, ist es kein Loch.
Testfälle
#####
# # # -> 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)
###
Sie können anstelle des '#' und anstelle der Leerzeichen ein beliebiges Zeichen verwenden.
Objektive Bewertungskriterien
Die Punktzahl wird als Anzahl der Bytes in Ihrem Programm angegeben.
Gewinnen
Der Gewinner ist die Einsendung mit der niedrigsten Punktzahl bis zum 4. April.
###|# #|##
als Testfall hinzufügen ? Das sollte sein 0
, richtig?