Escrito originalmente por pep0n en 22 de Marzo del 2016
Nueva versión.
No voy a decir que es la buena porque al final no he conseguido que sea útil. Pero como no creo que lo pueda conseguir así se queda.
El problema está en el espacio de búsqueda de posibles soluciones. ¡Es BRUUTALL! La única forma de restringirlo es imponiendo restricciones que eliminan soluciones pero lo hacen más manejable.
Una forma de restringirlo es con la dificultad. Al final funciona mucho mejor de lo que esperaba al principio. Podéis cambiar los valores y el tipo de circuitos que genera es diferente.
Otra es con los puentes. Como no está bien implementado la detección de puentes, le he cambiado el nombre a "Montones" si queréis saber porqué marcarlo y lo veréis.
La forma de restringir de verdad el espacio de búsqueda es con áreas más pequeñas. Eso es lo nuevo en esta versión.
A la izquierda podéis ver una rejilla en la que se pueden definir tantas áreas como queráis. Las áreas se delimitan por un origen (OX, OY) y un destino (DX, DY).
Dentro de las áreas debe de haber un punto (PX, PY). En la primera área es por dónde se empiezan a colocar piezas. En las siguientes áreas determinan por dónde debe de pasar el circuito de una área a la siguiente. El circuito pasará por el círculo de radio 20 centrado en el punto. Por supuesto, esos puntos deben de pertenecer a dos áreas: es el punto de llegada de pistas del área anterior y el punto de comienzo para poner pistas en el área actual. Para modificar las áreas podéis hacerlo por la rejilla o arrastrando con el ratón los cuadraditos negros que aparecen en el tablero según el área en la que esté el cursor en la rejilla.
Además, como antes eran muy aburridos los primeros circuitos que se diseñaban, he introducido un factor aleatorio en la pista que se escoge en cada momento. Sigue siendo exhaustivo (intentará todas las combinaciones posibles) pero el orden en el que lo hará cada vez es diferente.
A modo de ejemplo, la aplicación crea 4 áreas conectadas. Podéis dejarlas, cambiarlas, borrarlas y dejar solo 1 área (y así será más parecido a la versión anterior) o añadir nuevas áreas.
Por último, he añadido la posibilidad de salvar y cargar los circuitos que se hayan diseñado por si queréis compartirlos. A modo de ejemplo,
estos son los 8591 circuitos que se pueden hacer con 9 rectas de 40cm, 4 R1 y 8 R2 sin muchos puentes (aunque alguno sale) en un tablero de 4m por 2m con una dificultad de 20.
Podéis descargarla de
aquí.