Esse desafio é baseado no Flow Free. Uma versão online pode ser encontrada aqui: http://www.moh97.us/
Você receberá um quebra-cabeça e deverá retornar 1
se o quebra-cabeça for solucionável ou 0
não.
Para resolver um quebra-cabeça, o jogador deve criar um caminho para conectar cada par de números usando cada quadrado vazio exatamente uma vez.
Você passa nas dimensões do quadrado e depois x, y, c (onde c é um número que representa a cor) de cada ponto. Por exemplo:
Se 5,5
0,0,0
3,0,1
1,1,2
1,2,2
4,2,1
4,4,0
foi passado para você, representaria:
0..1.
.2...
.2..1
....0
E deve retornar 1.
Aqui estão mais alguns problemas de teste:
5,2
2,0,1
0,1,2
4,1,2
representa:
..1..
2...2
e não é solucionável porque existe apenas 1 1
.
4,2
0,0,0
3,0,0
0,1,0
3,1,0
representa:
0..0
0..0
e não é solucionável porque inclui mais de 2 0
s.
8,6
0,0,1
7,5,1
representa:
1.......
........
........
........
........
.......1
e não é solucionável (como você não pode usar todos os quadrados).
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
e não é solucionável porque você não pode conectar os 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
e não é solucionável porque você não pode conectar os 1s (ou os 3s), pois os dois caminhos devem necessariamente se cruzar.
5,2
0,0,1
3,0,1
0,1,3
4,1,1
representa:
1..1.
3...3
e não é solucionável porque você não pode usar todos os quadrados na construção de um caminho.
2,2
0,0,0
1,1,0
representa:
1.
.1
e não é solucionável porque você não pode usar todos os quadrados aqui também
Aqui estão mais alguns testes:
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
deve retornar 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
deve retornar 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
deve retornar 0
Este é um código de golfe e as regras padrão se aplicam.
1
se alguma delas visitar todas as células e conectar todos os terminais. Obviamente, essa abordagem não seria concluída em um período de tempo razoável para nada além do menorN
(número de células vazias), mas ainda temos uma garantia matemática de que o algoritmo retornaria o valor correto.