Я решаю восьмерку. Это проблема, которая выглядит так:
Изображение предоставлено: https://ece.uwaterloo.ca/~dwharder/aads/Algorithms/N_puzzles/ (вы также можете увидеть там более подробное описание 8-головоломки). Пользователь может переместить квадрат, примыкающий к заготовке, в заготовку. Задача - восстановить расположение как показано на картинке, начиная с некоторой произвольной расстановки.
Теперь, конечно, состояние можно описать как перестановку 9 цифр. В случае показанного изображения перестановка следующая:
1 2 3 4 5 6 7 8 0
Однако не все перестановки достижимы из показанной конфигурации. Поэтому у меня есть следующие вопросы.
Какое количество перестановок можно получить из показанной начальной конфигурации, вставив плитки в заготовку?
Назовите ответ на вышеупомянутый N. Теперь мне нужно отображение 1-1 из целых чисел от 1 до N в перестановки. То есть я хочу иметь функцию, которая принимает перестановку и возвращает соответствующее целое число, а также функцию, которая принимает целое число и возвращает перестановку. Отображение должно быть биекцией (т. Е. Несовершенного хеша недостаточно).