En el mundo del arte ASCII, hay agua, paredes hash y mecanismos de letras.
Estás en una habitación compuesta por paredes de hachís ( #signos):
#######
# #
# #
# #
# ### #
# #
#######
Instala una fuente de agua S ( Sletrero) y un tanque de agua E ( Eletrero) que puede recibir agua desde cualquier dirección, pero solo tiene una fuente S y un tanque E.
#######
# S #
# #
# #
# ### #
# E #
#######
Por lo tanto, debe seleccionar sabiamente dónde colocar la fuente. Ahí es donde sacas tus habilidades de código de golf .
La tarea
Obtiene una entrada que consiste en una cadena que representa una habitación con la fuente y el tanque:
#######
# S #
# #
# #
# ### #
# E #
#######
Tienes que averiguar si el agua finalmente llega al tanque. El agua fluye hacia abajo, si es posible, de lo contrario hacia la izquierda y hacia la derecha, si es posible. El agua no se acumula porque no sube.
Entonces, para la entrada anterior, el resultado es:
#######
# * #
# * #
#*****#
#*###*#
#**O**#
#######
El agua llega felizmente al tanque, por lo que debe generar un valor verdadero.
Pero si el agua no llega al tanque:
#######
#S #
# #
# E #
# ### #
# #
#######
#######
#* #
#* #
#* X #
#*### #
#*****#
#######
Entonces debe generar un valor falso.
Escriba un programa para decidir si el agua finalmente llega al tanque. Su código debe ser lo más corto posible.
Supuestos
Suponga que la entrada siempre es válida (toda la sala es una región rectangular cerrada con S y E).
Suponga que solo se proporciona una habitación como entrada.
Casos de prueba
Su programa debe devolver un valor verdadero para los siguientes casos de prueba:
#######
# S #
# #
# #
# ### #
# E #
#######
#######
# S #
# #
# E #
# #
# #
#######
#######
# #
# #
# SE #
# ### #
# #
#######
###############################################
# S #
# #
# #
# #
# ############### #
# #
# ################## ################## #
# #
# #
# ##### #
# E #
###############################################
#######
# S #
# #
# #
# ### #
# # #
### ###
## E ##
# #
#######
Pero un valor falso para los siguientes casos de prueba:
#######
#S #
# #
# E #
# ### #
# #
#######
#######
# #
# SE #
# #
# #
# #
#######
#######
# #
# E #
# #
# S #
# #
#######
####################################
# #
# #
# #
#S # E#
####################################
La penúltima habitación en la categoría Verdadero y la última habitación en la categoría Falso fueron robadas descaradamente de Koth: Jump and Run por Manu (quien eliminó la publicación de sandbox).
La última habitación en la categoría Verdadero es de la respuesta de Martin Buttner en Retina .

from/to/ realmente (lo que facilita a los participantes procesar todas las pruebas casos a la vez).Respuestas:
Caracoles , 20 bytes
Imprime
0para el valor de falsey y1para el valor de verdad.Pruébalo en línea!
\SpartidosSal iniciodestablece la dirección hacia abajo{...},coincide con las cosas entre llaves 0 o más veces=\#es una afirmación que tiene éxito si hay un#personaje delante del caracol, pero no lo muevengira 90 grados en cualquier dirección(...)?coincide con el patrón entre paréntesis 0 o 1 veces\ coincide con un espacio y mueve el caracol sobre él!(...es una afirmación negativatse teletransporta a cualquier cuadrado sin igual en la cuadrícula\EpartidosEfuente
Slip , 20 + 2 = 22 bytes
Así que Slip sigue tan roto como siempre, pero por una vez este fue un desafío que realmente podría hacer. Sin embargo, nunca fue realmente diseñado para ser tan golfista, por lo que nunca superará a Snails en nada: P
Necesita que la
rbandera (sin celdas repetidas) termine.Pruébalo en línea . La salida es el camino tomado por la verdad, vacío por la falsedad.
fuente
Retina , 87 bytes
El recuento de bytes asume la codificación ISO 8859-1.
Pruébalo en línea!
Por mucho que sea posible el procesamiento de cadenas 2D en Retina (o .NET regex en general), no es exactamente conciso ...
Explicación
Este es un relleno de inundación que marca todas las celdas a las que llega el agua
S. Lo hace uniendo los caracteres que se pueden alcanzar y luego transliterándolosSconT-mode. Este relleno de inundación atraviesa ambos espacios yE. Al+principio se repite esto hasta que la salida deja de cambiar.En cuanto a la expresión regular real, contiene dos casos separados:
Esto coincide con un espacio o
Eque es exactamente una celda debajo de unS. La coincidencia vertical se realiza contando el prefijo en la línea actual utilizando grupos de equilibrio para que podamos asegurarnos de que la posición horizontal sea la misma. Este se encarga de la caída del agua.Esto es muy similar: coincide con un carácter
Sy, si está disponible, antes y después, siempre que el carácter directamente debajo de esteSsea un#. Esto se encarga de que el agua se extienda por el suelo.Cuando terminamos, es muy fácil determinar si el agua llegó
E. Si lo hizo, entoncesEse ha eliminado de la cadena en el relleno de inundación, y si no,Etodavía está allí. Entonces, cuentemos el número deEs:Pero ahora eso es
0(lo que consideraría falso) para los casos de prueba de verdad y1(lo que consideraría verdadero) para los casos de prueba de falsedad. Podemos invertir esto muy fácilmente contando el número de0s en este resultado:Hecho.
fuente