Suponga que tiene un robot que se ejecuta sobre rieles y siempre sigue ciertas reglas.
O está en un modo de giro a la izquierda o en el modo de giro a la derecha, y puede cambiar de modo al accionar un interruptor que lo alterna entre los dos modos.
En el modo de giro a la derecha, siempre trata de girar a la derecha si hay un riel que va hacia la derecha. Si no lo hay, intenta ir en línea recta. Solo va a la izquierda si no hay forma de ir a la derecha o en línea recta.
En el modo de giro a la izquierda, primero intenta girar a la izquierda, luego ir en línea recta y luego volver a girar a la derecha si es necesario.
Los interruptores de cambio de modo cambian el modo de giro antes de que decidan en qué dirección girar.
En aras de hacer fotos con ASCII, dejaremos que = represente un riel normal y @ represente un riel con un interruptor de palanca de modo de giro debajo. Ahora, considere esta pieza de pista:
UN
=
=
[correo electrónico protegido] == C
=
=
re
Los robots de giro a la derecha en B terminarán en modo de giro a la izquierda en A. Los robots de giro a la izquierda en B terminarán en modo de giro a la derecha en D. Los robots de giro a la izquierda en A terminarán en modo de giro a la derecha en B Los robots que giran a la derecha terminarán en modo de giro a la izquierda en C.
¿Eso tiene sentido? Si es así, continúa por el rompecabezas.
Suponga que tiene dos ferrocarriles con diferentes robots, y necesita que estos ferrocarriles se crucen entre sí en ángulo recto sin interferir entre sí.
UN
=
– = –
El | El |
Y ==== ==== Z
El | El |
– = –
=
si
En otras palabras, desea que los robots se interpongan entre A y B (en cualquier dirección) sin terminar bajando por las pistas izquierda o derecha, y desea que los robots se interpongan entre Y y Z (en cualquier dirección) sin terminar bajando ya sea las pistas superiores o inferiores.
Además, desea que los robots en modo de giro a la derecha estén en modo de giro a la derecha cuando lleguen al otro lado y los robots en modo de giro a la izquierda estén en modo de giro a la izquierda cuando lleguen al otro lado.
Y además, no queremos desperdiciar mucho espacio y materiales construyendo esta intersección. Queremos hacerlo con una disposición de rieles e interruptores que quepan en la caja .
Voy a poner una solución a continuación. No te desplaces hacia abajo si quieres reflexionar sobre este por un tiempo.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Esto por sí solo no es un stumper particular. Cualquiera que realmente se moleste en pensarlo por un momento puede pensar en algo que funcione. Por lo general, comienzan a pensar en cómo se manejan tales situaciones en el mundo real, y se conforman con “¡Ajá! ¡Simplemente los enviaré a una rotonda!
UN
=
– = –
| @ [correo electrónico protegido] |
Y ===== ===== Z
| @ [correo electrónico protegido] |
– = –
=
si
Si no se te ocurrió este solo, tómate un tiempo para estudiarlo y ver cómo funciona. Rastree los caminos de los robots que giran hacia la derecha o hacia la izquierda comenzando en varios lugares y vea cómo evitan seguir caminos equivocados.
Ahora para el verdadero rompecabezas. En realidad, es el mismo rompecabezas otra vez, pero voy a seguir adelante y colocar una pieza para ti. No puedes moverlo. Tendrás que solucionarlo.
UN
=
– = –
El | El |
Y ==== @ ==== Z
El | El |
– = –
=
si
El objetivo sigue siendo el mismo: cruzar los dos caminos sin interferir. ¿Puedes hacerlo? Si solo quieres un spoiler, la solución en los comentarios … o será tan pronto como alguien lea esto, lo resuelva y lo publique. >: D (¿Quizás a alguien se le ocurrió una solución que funcione para esto mientras trata de resolver de forma independiente el original?)