Лицарська заливка - це заливна заливка, що використовує зв’язок лицарської шахової фігури. Конкретно:
1 1
1 1
0
1 1
1 1
(0 - початкова точка, 1s показують з'єднані комірки)
Виклик
Враховуючи 2D сітку просторів і стін та початкове місце розташування, виконайте рицарську заливку на сітці. Найкоротший код виграє.
Правила
Ви можете приймати дані та отримувати вихід у будь-якому форматі, який вам подобається (зображення, рядок, масив, будь-який інший). Ви можете взяти початкове місце як частину вхідної сітки або як окрему координату. Для цього пояснення буде використаний наступний формат:
######## # = wall ######## x = initial location ## x ## ## ## ######## ## ## ######## ########
Вихід - це копія вхідної сітки з доданим результатом лицарської заливки
Заповнення не повинно бути такого ж "кольору", як простір або стіни, але може бути таким же, як початковий маркер місця. Наприклад, враховуючи зображення вище, допустимим результатом буде:
######## # = wall ######## @ = fill (could also have been x) ## @ @## ## @ @## ######## ##@ @ ## ######## ########
Ви можете припустити, що вхідна сітка завжди буде містити 2-комірну стінку з усіх боків
- Ви можете припустити, що початкове місце розташування ніколи не буде всередині стіни
- Ви можете припустити, що сітка ніколи не буде більше 1000x1000
- Вбудовані чудово
- Найкоротший код (у байтах) виграє
Випробування
У всіх тестових випадках #
позначає стінку, позначає порожній простір і
x
позначає початкове місце заливки. @
позначає вихідну заливку.
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:
##############
##############
##@@@@@@@@@###
##@@@@@@@@@###
##@@@@@@@@@###
##@@@###@@@###
##@@@#@#@@@###
##@@@###@@@###
##@@@@@@@@@###
##@@@@@@@@@###
##@@@@@@@@@###
##############
##############