Uno de los aspectos interesantes de la gravedad es que, hasta donde yo sé, no puedes tener cosas flotando en el aire.
Sin embargo, parece que no todos en la Asociación de Constructores de Castillo Aleatorio son conscientes de este hecho, lo que lleva a castillos como este:
#
#
# # # # ###
#### #### # #
#### # # #### ###
############## ###
###### ###### ###
##### ##### ###
###
``````````````````````````````
y éste:
# # # # # #
##############
### #### ###
# # # # # # # # ### #### ### # # # # # # # #
#### #### #### #### ############## #### #### #### ####
#### # # #### # # #### # # #### ## ######## ## #### # # #### # # #### # # ####
####################################################################################
###### ######## ######## ######## ######## ######## ######## ######## ######
################################### ###### ###################################
################################### ###### ###################################
##
##
##
##
##
````````````````````````````````````````````````````````````````````````````````````````````
e incluso este:
##########
#### # ###
#######################
#
#
#
#
# # # #
# # ###
# # ###
# # # # ##
# # ## ###
# # #####
# #####
# # #####
#####
## ##
#####
#####
## ##
## ##
````````````````````````````````````````````
Reto
Para un castillo válido, todos los bloques estarán conectados al suelo, ya sea directa o indirectamente. Su programa o función recibirá un castillo como los anteriores como entrada, y su programa debe devolver un valor verdadero o falso que refleje si el castillo es válido o no.
Reglas
- La entrada se da como una cadena.
- Todos los castillos válidos descansan sobre una superficie,
````````
. (Si la cadena de entrada no contiene una superficie, el castillo no es válido). - Puede suponer que todas las entradas satisfarán estos criterios:
- La superficie siempre será plana.
- La superficie siempre será al menos tan ancha como el castillo, por lo que no habrá bloques a la izquierda o derecha del suelo.
- La entrada nunca tendrá
#
debajo de la superficie. - La entrada solo contendrá caracteres dados en este desafío. (
#
,`
espacio o nueva línea). - Puede suponer que la entrada siempre contendrá al menos un carácter.
- Los bloques están conectados si son adyacentes horizontal o verticalmente. Diagonal no cuenta!
- Conectado:
# or ##
# - No conectado:
# or # # or #
#
#
- Conectado:
- Los castillos deben existir para ser válidos. (En otras palabras, las entradas sin ninguna
#
deben dar un valor falso). - La entrada solo contendrá caracteres dados en este desafío. (
#
,`
espacio o nueva línea). - Puede suponer que la entrada siempre contendrá al menos un carácter.
- Se aplican las reglas estándar de E / S y lagunas .
Casos de prueba
Falsa
- Todos los ejemplos dados anteriormente.
# # # #
(Sin suelo)
#### ####
#### # # ####
##############
###### ######
## ### #######
(El bloque superior no está conectado ni horizontal ni verticalmente).
### ####
#### # # ####
##############
###### ######
##### # ####
`` `` `` `` `` `` ``
`` `
(La torre central no está conectada con el resto del castillo porque no hay bloques adyacentes horizontal o verticalmente que lo conecten).
# # # # # #
##############
##### ## #####
# # # # # # # # #### # # #### # # # # # # # #
#### #### #### #### ## #### ## #### #### #### ####
## ## # # #### # # #### # # #### # # #### # # #### # # #### # # #### # # ####
################################################## ##################################
###### ######## ## ###### ######## ######## ######## ######## ######## #### ##
################################### ###### ####### ############################
################################### ###### ######### ##########################
`` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` ``
(Sin castillo, solo un personaje de nueva línea).# #
(El bloque de la derecha no está conectado ni horizontal ni verticalmente).
#
`` `` `` `
`` `
Verdad
#
`# # # #
#### ####
#### # # ####
##############
###### ######
## ### #####
`` `` `` `` `` `` ``#
#
# # # # ###
#### #### # #
#### # # #### ###
############## ###
# ##### ###### ###
##### ##### ###
##### ##### ###
`` `` `` `` `` `` `` `` `` `` `` `` `` `` ``# # # # # #
##############
### #### ###
# # # # # # # # ### #### ### # # # # # # # #
#### #### #### #### ############## #### #### #### ## ##
#### # # #### # # #### # # #### ## ######## ## #### # # #### # # ## ## # # ####
########################################## ##########################################
###### ## ###### ######## ######## ######## ######## ######## #### ####
###### ################################### ##### # ###################################
################################### ###### ######### ##########################
`` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` ``#### ###
# #### ###
# ###
# ##
#
###
#####
#######
#########
### ## #####
##### #####
###### ######
#################
# ### ########## #
#############
#############
#############
###### ######
###### ######
#############
#############
#############
#############
###### ##### #
###### ######
#############
#############
########### ##
#############
###### ######
###### ######
########### ##
#############
#############
#############
######### ####
##### #####
##### #####
##### #####
`` `` `` `` `` `` `` `` `` `` `
####
#####
######
####
####
#####
########
##########
#### ######
###########
############
##############
##### ## ##############
########### #################
###########################################
####### #################################
################# ####################
############################## ####
############################
################## #
`` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` ` ``
¡Buena suerte!
code-golf
ascii-art
decision-problem
usuario2428118
fuente
fuente
Respuestas:
Caracoles ,
2118 bytes-3 bytes debido a restricciones de entrada adicionales editadas en desafío.
Desafortunadamente, la complejidad del tiempo es factorial, por lo que la mayoría de las entradas no son ejecutables.
Salidas 0 para casos falsos, y el número de
#
casos verdaderos.fuente
#
está conectado al suelo.+
realidad es 1 o más veces, no 0. Se verá diferente de todos modos después de permitir castillos desconectados.Octava,
5351 bytes¡Pruébelo en línea!
* Desde que op eliminó el requisito de verificar la respuesta de entrada vacía, volví a mi primera edición.
Explicación:
fuente
Grime , 29 bytes
Pruébalo en línea! La mayoría de los casos de prueba caducan en TIO. Reemplace
<0C>
con<0CoF>
para hacerlo un poco más rápido.Explicación
Estoy comprobando que desde cada
#
lugar existe un camino hacia a`
, y que existe al menos uno#
. Recientemente agregué comandos de rotación a Grime, que hacen que este desafío sea mucho más fácil.fuente
JavaScript (ES6),
197196 bytesDonde
\n
representa el carácter literal de nueva línea. Intenta eliminar todas las#
s una a la vez encontrando una adyacente a a`
y cambiándola a a`
. Devuelvetrue
si hubo al menos uno#
originalmente pero todos fueron eliminados. Versión que requiere entrada acolchada para118117 bytes:fuente
Perl 6 , 180 bytes
Comprueba si la entrada contiene al menos uno
#
, y si todos#
pueden encontrar una ruta a a`
.Más bien ineficiente, porque la búsqueda de ruta es forzada por la fuerza bruta utilizando una función recursiva que siempre visita todas las demás
#
regiones conectadas (es decir, no produce un cortocircuito).Utiliza alguna interacción impía entre los operadores de unión y el deslizamiento , para garantizar que la prueba de ruta se omita para los caracteres de espacio sin requerir una verificación por separado fuera de la función de búsqueda de ruta.
fuente
Python 3 ,
214206 bytesPruébalo en línea!
La primera línea aquí está dedicada a rellenar todas las líneas con la misma longitud: dividimos la cadena (
s.split('\n')
es un carácter más corto ques.splitlines()
), encontramos la longitud máxima de una línea y asignamos a C una lista aplanada de todos los caracteres después de rellenar cada línea. (Las nuevas líneas se han ido).Luego, hacemos una lista en la que cada carácter no espacial adyacente a al menos un backtick se reemplaza por un backtick, y continuamos hasta que no ocurra ningún cambio (cuando la lista anterior
o
es igual aC
. Podemos comparar enC>o
lugar deC!=o
porque reemplazamos # (ASCII 35 ) con `(ASCII 96) solo puede aumentar el orden lexicográfico de la lista).Si no queda ningún #, y al menos uno estaba presente inicialmente, el castillo es válido.
'#'in s and'#'not in C
fuente