Este desafío se basa en Flow Free. Puede encontrar una versión en línea aquí: http://www.moh97.us/
Se le dará un rompecabezas, y debe regresar 1
si el rompecabezas tiene solución, o 0
si no lo es.
Para resolver un rompecabezas, el jugador debe crear una ruta para conectar cada par de números usando cada cuadrado vacío exactamente una vez.
Se te pasan las dimensiones del cuadrado y luego la x, y, c (donde c es un número que representa el color) de cada punto. Por ejemplo:
Si le 5,5
0,0,0
3,0,1
1,1,2
1,2,2
4,2,1
4,4,0
fue pasado, representaría:
0..1.
.2...
.2..1
....0
Y debe devolver 1.
Aquí hay algunos problemas de prueba más:
5,2
2,0,1
0,1,2
4,1,2
representa:
..1..
2...2
y no es solucionable porque solo hay 1 1
.
4,2
0,0,0
3,0,0
0,1,0
3,1,0
representa:
0..0
0..0
y no tiene solución porque incluye más de 2 0
s.
8,6
0,0,1
7,5,1
representa:
1.......
........
........
........
........
.......1
y no tiene solución (ya que no puedes usar todos los cuadrados).
2,5
0,0,1
2,0,6
4,0,6
0,1,4
3,1,4
4,1,1
representa:
1.6.6
4..41
y no es solucionable porque no puede conectar los 1s.
6,3
1,0,4
5,0,1
0,1,4
1,1,3
5,1,3
0,2,2
3,2,2
5,2,1
representa:
.4...1
43...3
2..2.1
y no es solucionable porque no puede conectar los 1 (o los 3), ya que los dos caminos deben cruzarse necesariamente.
5,2
0,0,1
3,0,1
0,1,3
4,1,1
representa:
1..1.
3...3
y no se puede resolver porque no puedes usar todos los cuadrados para construir un camino.
2,2
0,0,0
1,1,0
representa:
1.
.1
y no es solucionable porque tampoco puedes usar todos los cuadrados aquí
Aquí hay algunas pruebas más:
5,5
0,3,0
0,4,1
1,2,2
1,3,1
2,0,0
3,0,4
3,1,2
3,3,5
3,4,4
4,4,5
debería devolver 1
13,13
1,1,0
9,1,1
10,1,2
11,1,3
1,2,4
2,2,5
5,2,6
7,2,7
3,3,0
5,4,6
6,4,1
9,6,3
4,7,8
5,8,9
12,8,8
11,9,10
2,10,4
4,10,2
9,10,5
11,10,7
1,11,9
12,12,10
debería devolver 1
7,7
0,0,0
0,1,1
1,1,2
2,1,3
4,2,4
0,3,1
5,3,3
0,4,4
2,4,5
5,4,2
0,5,0
1,5,5
3,5,6
3,7,6
debería devolver 0
Este es un código de golf, y se aplican las reglas estándar.
fuente
1
si alguna de ellas visita todas las celdas y conecta todas las terminales. Obviamente, este enfoque no se completaría en un período de tiempo razonable para nada más que el más pequeñoN
(número de celdas vacías), pero todavía tenemos una garantía matemática de que el algoritmo eventualmente devolverá el valor correcto.Respuestas:
Haskell
Llave
fuente