Одним из интересных аспектов гравитации является то, что, насколько я знаю, нельзя просто плавать в воздухе.
Однако, кажется, не все в Ассоциации Строителей Случайных Замков знают об этом факте, что приводит к таким замкам, как этот:
#
#
# # # # ###
#### #### # #
#### # # #### ###
############## ###
###### ###### ###
##### ##### ###
###
``````````````````````````````
и этот:
# # # # # #
##############
### #### ###
# # # # # # # # ### #### ### # # # # # # # #
#### #### #### #### ############## #### #### #### ####
#### # # #### # # #### # # #### ## ######## ## #### # # #### # # #### # # ####
####################################################################################
###### ######## ######## ######## ######## ######## ######## ######## ######
################################### ###### ###################################
################################### ###### ###################################
##
##
##
##
##
````````````````````````````````````````````````````````````````````````````````````````````
и даже этот:
##########
#### # ###
#######################
#
#
#
#
# # # #
# # ###
# # ###
# # # # ##
# # ## ###
# # #####
# #####
# # #####
#####
## ##
#####
#####
## ##
## ##
````````````````````````````````````````````
Вызов
Для действующего замка все блоки будут подключены к земле прямо или косвенно. Ваша программа или функция получит замок, такой как приведенный выше, в качестве входных данных, и ваша программа должна вернуть значение true или false, отражающее, является ли замок действительным или нет.
правила
- Ввод дан в виде строки.
- Все действующие замки покоятся на поверхности
````````
. (Если входная строка не содержит поверхности, замок недействителен.) - Вы можете предположить, что все входные данные будут удовлетворять этим критериям:
- Поверхность всегда будет плоской.
- Поверхность всегда будет по крайней мере такой же ширины, как замок, поэтому не будет блоков слева или справа от земли.
- Ввод никогда не будет
#
ниже поверхности. - Входные данные будут содержать только символы, указанные в этом вызове. (
#
,`
пробел или перевод строки) - Вы можете предположить, что ввод всегда будет содержать хотя бы один символ.
- Блоки связаны, если они расположены горизонтально или вертикально. Диагональ не в счет!
- Связанный:
# or ##
# - Нет соединения:
# or # # or #
#
#
- Связанный:
- Замки должны существовать, чтобы быть действительными. (Другими словами, входы без каких-либо
#
должны давать ложные значения.) - Входные данные будут содержать только символы, указанные в этом вызове. (
#
,`
пробел или перевод строки) - Вы можете предположить, что ввод всегда будет содержать хотя бы один символ.
- Применяются стандартные правила ввода / вывода и лазейки .
Контрольные примеры
Falsy
- Все примеры приведены выше.
# # # #
(Нет земли.)
#### ####
#### # # ####
##############
###### ######
## ### ######
(Верхний блок не связан ни горизонтально, ни вертикально.)
### ####
#### # # ####
##############
###### ######
##### # ####
`` `` `` `` `` `` ``
`` `
(Центральная башня не связана с остальной частью замка, потому что нет горизонтально или вертикально смежных блоков, соединяющих его.)
# # # # # #
##############
##### ## #####
# # # # # # # # #### # # #### # # #### # # # # # # # #
#### #### #### #### ## #### ## #### #### #### ####
## ## # # #### # # #### # # #### # # #### # # #### # # #### # # #### # # #### # # ####
################################################## ##################################
###### ######## ## ###### ######## ######## ######## ######## ######## #### ##
################################### ###### ####### ############################
################################### ###### ######### ##########################
`` `` `` `` `` `` `` `` `` `` `` ` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` ` ` `` `` `` `` `` `` `
(Нет замка, только один символ новой строки.)# #
(Крайний правый блок не соединен ни горизонтально, ни вертикально.)
#
`` `` `` `
`` `
Truthy
#
`# # # #
#### ####
#### # # ####
##############
###### ######
## ### #####
`` `` `` `` `` `` ``#
#
# # # # ###
#### #### # #
#### # # #### ###
############## ###
# ##### ###### ###
##### ##### ###
##### ##### ###
`` `` `` `` `` ` ` `` `` `` `` `` `` `` `` `` `# # # # # #
##############
### #### ###
# # # # # # # ### #### ### # # # # # # # #
#### #### #### #### ############## #### #### #### ## ##
#### # # #### # # #### # # #### ## ######## ## #### # # #### # # ## ## # # ####
########################################## ##########################################
###### ## ###### ######## ######## ######## ######## ######## #### #### ######
################################### ##### # ###################################
################################### ###### ######### ##########################
`` `` `` `` `` `` `` `` `` `` `` ` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` ` ` `` `` `` `` `` `` `` `` `#### ###
# #### ###
# ###
# ##
#
###
#####
#######
#########
### ## #####
##### #####
###### ######
#################
# ### ########## #
#############
#############
#############
###### ######
###### ######
#############
#############
#############
#############
###### ##### #
###### ######
#############
#############
########### ##
#############
###### ######
###### ######
########### ##
#############
#############
#############
######### ####
##### #####
##### #####
##### #####
`` `` `` `` `` `` `` `` ` ` `` ``
####
#####
######
####
####
#####
########
##########
#### ######
###########
############
##############
##### ## ##############
########### #################
###########################################
####### #################################
################# ####################
############################## ####
############################
################## #
`` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` ` `
Удачи!