Я построил 15 головоломок в JS, но мое поколение случайных головоломок создает экземпляры неразрешимой головоломки. Это может быть потому, что я не руководитель отдела компьютерных наук, но я не уверен, как работать с такими вещами, как вычисление числа инверсий в перестановке в коде. Мне интересно, как написать свой код, чтобы я мог проверить, что любое заданное начальное состояние моей головоломки разрешимо. Я видел еще 15 головоломок в опубликованных приложениях, которые неразрешимы, так что, похоже, я не единственный, у кого есть проблема.
Я видел этот пост, но он останавливается на уровне CS, и я ищу реализацию кода, которая помогла бы мне понять это немного лучше:
15 Эвристическая головоломка
Я использую JS, но любая помощь и объяснение на каком бы языке ни были полезны.