Кто-нибудь может подсказать, как с помощью компьютерной программы решить деревянную головоломку Log Pile?
Смотрите здесь, чтобы визуализировать головоломку: http://www.puzzlethis.co.uk/products/madcow/the_log_pile.htm
На рисунке показаны только некоторые из них. Полный набор из 10 элементов сконфигурирован следующим образом: 1 представляет колышек, -1 - отверстие, а 0 - ни колышек, ни отверстие.
-1,1,0, -1,0
1,0,1,0,0
1, -1,1,0,0
-1, -1,0,0, -1
-1,1,0,1,0
0,1,0,0,1
1,0, -1,0, -1
0, -1,0,1,0
0,0, -1,1, -1
1,0, -1,0,0
Части могут быть соединены в два слоя по 5 штук, каждый с верхним слоем под углом 90 градусов к нижнему слою, как показано в приведенной выше ссылке.
Я уже создал решение этой проблемы самостоятельно, используя Java, но я чувствую, что это было неуклюжее решение, и мне интересно увидеть более сложные решения. Не стесняйтесь либо предложить общий подход, либо предоставить рабочую программу на выбранном вами языке.
Мой подход состоял в том, чтобы использовать числовую запись выше для создания массива «Журналов». Затем я использовал генератор комбинации / перестановки, чтобы опробовать все возможные варианты расположения Журналов, пока не было найдено решение, в котором все пересечения равнялись нулю (т. Е. Peg to Hole, Hole to Peg или Blank to Blank). Я использовал некоторые ускорения, чтобы обнаружить первое неудачное пересечение для данной перестановки и перейти к следующей перестановке.
Надеюсь, вы найдете это столь же интересным, как и я.
Спасибо,
Крейг.