Un remplissage de chevalier est un remplissage d'inondation utilisant la connectivité de la pièce d'échecs de chevalier. Plus précisément:
1 1
1 1
0
1 1
1 1
(0 est le point initial, 1s montre les cellules connectées)
Défi
Étant donné une grille 2D d'espaces et de murs et un emplacement initial, effectuez un remplissage de chevalier sur la grille. Le code le plus court gagne.
Règles
Vous pouvez prendre des entrées et produire des sorties dans n'importe quel format que vous souhaitez (image, chaîne, tableau, peu importe). Vous pouvez prendre l'emplacement initial dans le cadre de la grille d'entrée ou comme coordonnée distincte. Aux fins de cette explication, le format suivant sera utilisé:
######## # = wall ######## x = initial location ## x ## ## ## ######## ## ## ######## ########
La sortie est une copie de la grille d'entrée avec le résultat de remplissage de chevalier ajouté
Votre remplissage ne doit pas être de la même "couleur" que l'espace ou les murs, mais peut être le même que le marqueur d'emplacement initial. Par exemple, étant donné l'image ci-dessus, une sortie valide serait:
######## # = wall ######## @ = fill (could also have been x) ## @ @## ## @ @## ######## ##@ @ ## ######## ########
Vous pouvez supposer que la grille d'entrée contiendra toujours un mur à 2 cellules de tous les côtés
- Vous pouvez supposer que l'emplacement initial ne sera jamais à l'intérieur d'un mur
- Vous pouvez supposer que la grille ne sera jamais supérieure à 1000 x 1000
- Les bâtis sont bien
- Le code le plus court (en octets) gagne
Cas de test
Dans tous les cas de test, #
désigne un mur, indique un espace vide et
x
indique l'emplacement initial du remplissage. @
désigne le remplissage de sortie.
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:
##############
##############
##@@@@@@@@@###
##@@@@@@@@@###
##@@@@@@@@@###
##@@@###@@@###
##@@@#@#@@@###
##@@@###@@@###
##@@@@@@@@@###
##@@@@@@@@@###
##@@@@@@@@@###
##############
##############