Кто-нибудь может предложить, как решить деревянную головоломку 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). Я использовал некоторые ускорения, чтобы обнаружить первое неудачное пересечение для данной перестановки и перейти к следующей перестановке.
Надеюсь, вы найдете это интересным, как я.
Спасибо, Крейг.