Среди бесчисленного количества головоломок, для меня всегда выделялся один большой класс.
С математической точки зрения, многие из них мне были хорошо известны, вплоть до интуитивного решения головоломки, но на практике возникали большие проблемы с пониманием головоломок из-за их внешнего вида и долгое время такие головоломки не поддавались моему решению.
При этом, весь мир разделился на три лагеря:
- Те, кто так же не могут решать такие головоломки;
- Те, для кого эти головоломки по какой-то причине просты (обладают хорошим пространственным мышлением, не сталкивались со сложными вариациями или по каким-то другим причинам);
- Те, кто не пробовали решать такие головоломки или не знают об их существовании.
Решением проблемы стало отбрасывание моих старых принципов аналитического решения головоломок и переходом на методы, где человеку нужно просто повторять одни и те же алгоритмы, пока головоломка не будет решена.
В этой теме я хочу разобрать то, что из этого вышло и показать, что перебор возможных ситуаций — инструмент, который имеет место быть даже в сложных головоломках.
Ну а для начала небольшой вопрос-ответ.
Что такое "шейпмоды" и "стикермоды"?Под этим будем подразумевать такую модификацию головоломки, при которой набор возможных перестановок оригинальной головоломки не увеличивается, но при этом меняется её внешний вид: геометрическая форма (шейпмод) или дизайн стикеров (стикермод).
Чаще всего не меняется даже внутреннее строение головоломки, только её внешний вид.
Например, вот несколько шейпмодов кубика Рубика 3x3x3 со стрелками на каждом стикере:

- Классический кубик Рубика, Void-куб;


- Мастермофикс, axis-куб;


Если число ситуаций головоломки превосходит количество атомов в обозримой вселенной, можно ли её решить подбором?Полным перебором — нет, но о нём и не идёт речи.
Я предлагаю самые обычные методы с конечным количеством ситуаций. Просто на каждом этапе будет перебираться небольшой набор ситуаций.
Нужно ли уметь решать оригинальную головоломку, чтобы решать её шейпмод?Необязательно, но лишним не будет. Достаточно понимать, как вращается головоломка и хотя бы немного знать её язык вращения.
Подходит ли такой метод для решения головоломок на скорость/количество ходов?Такой подход сборки будет определённо медленнее, чем проанализировать головоломку, заучить расположение всех элементов и придумать хороший скоростной метод для неё.
Как понять, что головоломка A является шейпомодом головоломки B?По одному внешнему виду — практически никак, бывает так, что две одинаково выглядещее головоломки являются принципиально разными.
Если головоломка находится в собранном виде, можно попытаться найти её в интернете и сравнить их вращение. Либо разобрать головоломку и сравнить внутренний механизм с известными.
Ещё один вариант — посчитать количество осей вращений, количество слоёв и элементов на них, найти головоломку со схожими характеристиками и сравнить их вращение.