Un riempimento cavaliere è un riempimento inondazione che utilizza la connettività del pezzo degli scacchi cavaliere. In particolare:
1 1
1 1
0
1 1
1 1
(0 è il punto iniziale, 1s mostra le celle collegate)
Sfida
Data una griglia 2D di spazi e pareti e una posizione iniziale, eseguire un riempimento cavaliere sulla griglia. Il codice più corto vince.
Regole
Puoi prendere input e produrre output in qualsiasi formato tu voglia (immagine, stringa, matrice, qualunque cosa). È possibile prendere la posizione iniziale come parte della griglia di input o come coordinate separate. Ai fini di questa spiegazione, verrà utilizzato il seguente formato:
######## # = wall ######## x = initial location ## x ## ## ## ######## ## ## ######## ########
L'output è una copia della griglia di input con il risultato di riempimento del cavaliere aggiunto
Il riempimento non deve avere lo stesso "colore" dello spazio o dei muri, ma può essere uguale al marcatore di posizione iniziale. Ad esempio, data l'immagine sopra, un output valido sarebbe:
######## # = wall ######## @ = fill (could also have been x) ## @ @## ## @ @## ######## ##@ @ ## ######## ########
Si può presumere che la griglia di input conterrà sempre una parete a 2 celle su tutti i lati
- Si può presumere che la posizione iniziale non sarà mai all'interno di un muro
- Si può presumere che la griglia non sarà mai più grande di 1000x1000
- I builtin vanno bene
- Il codice più breve (in byte) vince
Casi test
In tutti i casi di test, #
indica un muro, indica spazio vuoto e
x
indica la posizione iniziale del riempimento. @
indica il riempimento in uscita.
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:
##############
##############
##@@@@@@@@@###
##@@@@@@@@@###
##@@@@@@@@@###
##@@@###@@@###
##@@@#@#@@@###
##@@@###@@@###
##@@@@@@@@@###
##@@@@@@@@@###
##@@@@@@@@@###
##############
##############