Eine Ritterfüllung ist eine Überflutungsfüllung, die die Konnektivität der Ritterschachfigur verwendet. Speziell:
1 1
1 1
0
1 1
1 1
(0 ist der Anfangspunkt, 1s zeigt die verbundenen Zellen)
Herausforderung
Führen Sie bei einem 2D-Raster aus Räumen und Wänden und einer anfänglichen Position eine Ritterfüllung auf dem Raster durch. Kürzester Code gewinnt.
Regeln
Sie können Eingaben und Ausgaben in jedem beliebigen Format (Bild, Zeichenfolge, Array, was auch immer) erstellen. Sie können die ursprüngliche Position als Teil des Eingaberasters oder als separate Koordinate verwenden. Für diese Erklärung wird das folgende Format verwendet:
######## # = wall ######## x = initial location ## x ## ## ## ######## ## ## ######## ########
Die Ausgabe ist eine Kopie des Eingaberasters mit dem hinzugefügten Ritterfüllungsergebnis
Ihre Füllung darf nicht dieselbe "Farbe" wie der Raum oder die Wände haben, sondern kann dieselbe sein wie die ursprüngliche Ortsmarkierung. In dem obigen Bild wäre eine gültige Ausgabe beispielsweise:
######## # = wall ######## @ = fill (could also have been x) ## @ @## ## @ @## ######## ##@ @ ## ######## ########
Sie können davon ausgehen, dass das Eingabegitter immer eine 2-Zellen-Wand auf allen Seiten enthält
- Sie können davon ausgehen, dass sich der ursprüngliche Standort niemals innerhalb einer Wand befindet
- Sie können davon ausgehen, dass das Raster niemals größer als 1000x1000 ist
- Builtins sind in Ordnung
- Kürzester Code (in Bytes) gewinnt
Testfälle
#
Bezeichnet in allen Testfällen eine Wand, bezeichnet einen leeren Raum und
x
bezeichnet den anfänglichen Ort der Füllung. @
bezeichnet die Ausgabefüllung.
Input 1:
########
########
## x ##
## ##
########
## ##
########
########
Output 1:
########
########
## @ @##
## @ @##
########
##@ @ ##
########
########
Input 2:
############
############
## ## x##
## ## ##
##### ##
## ##
############
############
Output 2:
############
############
## ##@@@@@##
##@##@@@@@##
#####@@@@@##
## @@@@@@@##
############
############
Input 3:
####################
####################
## ## ##
## ## ##
## ## ######## ##
## ## ######## ##
## ## ## ## ##
## ## ## ## ##
## ## ## ## ##
## ## ## ## ##
## ## ######## ##
## ## ######## ##
## ## ## ##
## ## x## ##
## ############ ##
## ############ ##
## ##
## ##
####################
####################
Output 3:
####################
####################
##@@##@@@@@@@@@@@@##
##@@##@@@@@@@@@@@@##
##@@##@@########@@##
##@@##@@########@@##
##@@##@@## ##@@##
##@@##@@## ##@@##
##@@##@@## ##@@##
##@@##@@## ##@@##
##@@##@@########@@##
##@@##@@########@@##
##@@##@@@@@@@@##@@##
##@@##@@@@@@@@##@@##
##@@############@@##
##@@############@@##
##@@@@@@@@@@@@@@@@##
##@@@@@@@@@@@@@@@@##
####################
####################
Input 4:
################
################
## ###
## x ###
## ####### ###
## ####### ###
## ## ## ###
## ## ## ###
## ## ## ###
## ######## ##
## ######## ##
## ## ##
## ## ##
################
################
Output 4:
################
################
## @ @ ###
## @ @ @ ###
## ####### ###
##@ ####### @###
## ## ## ###
## @## ##@ ###
## ## ## ###
##@ ########@ ##
## ######## ##
## @ @ ## @##
## @ @## ##
################
################
Input 5:
##############
##############
## ###
## ###
## ###
## ### ###
## #x# ###
## ### ###
## ###
## ###
## ###
##############
##############
Output 5:
##############
##############
##@@@@@@@@@###
##@@@@@@@@@###
##@@@@@@@@@###
##@@@###@@@###
##@@@#@#@@@###
##@@@###@@@###
##@@@@@@@@@###
##@@@@@@@@@###
##@@@@@@@@@###
##############
##############