Эта задача основана на Flow Free. Онлайн-версию можно найти здесь: http://www.moh97.us/
Вам дадут головоломку, и вы должны вернуться, 1если головоломка разрешима или 0если нет.
Чтобы решить головоломку, игрок должен создать путь, соединяющий каждую пару чисел, используя каждый пустой квадрат ровно один раз.
Вы передаете размеры квадрата, а затем x, y, c (где c - число, представляющее цвет) каждой точки. Например:
Если бы он 5,5 0,0,0 3,0,1 1,1,2 1,2,2 4,2,1 4,4,0был передан вам, он бы представлял:
0..1.
.2...
.2..1
....0
И должен вернуть 1.
Вот еще несколько тестовых задач:
5,2 2,0,1 0,1,2 4,1,2 представляет:
..1..
2...2
и не разрешима, потому что есть только 1 1.
4,2 0,0,0 3,0,0 0,1,0 3,1,0 представляет:
0..0
0..0
и не разрешима, потому что включает в себя более 2 0с.
8,6 0,0,1 7,5,1 представляет:
1.......
........
........
........
........
.......1
и не решаемо (так как вы не можете использовать каждый квадрат).
2,5 0,0,1 2,0,6 4,0,6 0,1,4 3,1,4 4,1,1 представляет:
1.6.6
4..41
и не разрешим, потому что вы не можете подключить 1.
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 представляет:
.4...1
43...3
2..2.1
и не разрешима, потому что вы не можете соединить 1 (или 3), так как два пути обязательно должны пересекаться.
5,2 0,0,1 3,0,1 0,1,3 4,1,1 представляет:
1..1.
3...3
и не разрешима, потому что вы не можете использовать все квадраты при построении пути.
2,2 0,0,0 1,1,0 представляет:
1.
.1
и не разрешим, потому что вы не можете использовать все квадраты здесь
Вот еще несколько тестов:
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 должен вернуть 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 должен вернуть 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 должен вернуть 0
Это код гольф, и применяются стандартные правила.
1если какая-либо из них посещает все ячейки и соединяет все терминалы. Очевидно, что этот подход не будет завершен за разумное количество времени ни для чего, кроме самого маленькогоN(количество пустых ячеек), но у нас все еще есть математическая гарантия того, что алгоритм в конечном итоге вернет правильное значение.