Лучшее казино в мире

Решение проблемы Mefferts Skewb Xtreme

Этот кубик-пазл подарили моим детям. Папа, как ты это решишь?

Я знаю, как собрать обычный кубик Рубика по этой методике для новичков. На этот раз я хотел разработать решение самостоятельно, а не следовать чужому.

После некоторого времени запутанных скручиваний и заметок я решил, что мне нужно более тяжелое оборудование, и написал программу на Прологе, чтобы выяснить, как перемещаются грани и вершины. А затем я назначил это своему классу языков программирования. С помощью этой программы я обнаружил достаточно ходов с простыми эффектами, чтобы составить решение.

Впоследствии я нашел несколько видеороликов на Youtube, цель которых - сделать то же самое. Этот типичный. Проверьте это!

Обозначения и генеральный план

Вот хороший способ пометить вершины:

У начала 0 есть соседи 1, 2, 4 в направлениях x, y, z, а остальные являются их суммами.

Я помечаю грани как frudlr (передняя, ​​задняя, ​​верхняя, нижняя, левая, правая).

Вы можете взять кубик-головоломку за каждый угол и повернуть его на 120 градусов по или против часовой стрелки. Пусть r i - вращение по часовой стрелке вокруг вершины i. Эти повороты оказывают на вершины и грани следующие эффекты:

Здесь r 0 - поворот вокруг вершины 0. Вершина 1 переместится в вершину 4, вершина 4 переместится в вершину 2, а вершина 2 переместится в вершину 1. Такая перестановка называется циклом . Три грани также переставляются в цикле. Обратите внимание, что остальные вершины и грани не меняются местами.

Если r - вращение, то r -1 (называемое обратным или r) - вращение в противоположном направлении. (Куберы обычно пишут это как r '.)

Если r и s - два поворота, то их коммутатор [r, s] - это произведение rsr -1 s -1. То есть сначала выполните r, затем s, затем обратное к r, затем обратное к s. Если r и s коммутируют (т. Е. Rs = sr), коммутатор является тождественной операцией. В противном случае он измеряет, насколько rs отличается от s r.

На вершинах коммутируют r 0 и r 1 - поскольку они перемещают разные группы вершин, не имеет значения, в каком порядке вы их делаете. Но на гранях [r 0 , r 1 ] имеет эффект (dr) (fl); то есть переворачивает нижнюю / правую и переднюю / левую грани.

Это ключ к правильному расположению лиц. Сначала расположите вершины так, чтобы они находились в нужном положении (что можно сделать вручную, без использования алгоритма). Затем используйте коммутаторы несколько раз, чтобы переставить грани, оставляя вершины на месте. Вы увидите точный алгоритм ниже.

Как только это будет завершено, вершины и грани будут на правильных позициях, но, к сожалению, вершины будут скручены.

Вот где появляется [r 0 , r 1 ] 2 - сделайте [r 0 , r 1 ], а затем сделайте это снова. Он сохраняет вершины, потому что это сделал [r 0 , r 1 ], и сохраняет грани, потому что [r 0 , r 1 ] перевернуты вниз / вправо и спереди / влево. Выполнение этого дважды переворачивает их обратно. Этот квадратный коммутатор предсказуемо влияет на скручивание вершин, которое вы можете использовать, чтобы раскрутить их все.

Наконец, вот почему этот куб называется «xtreme», на каждой грани есть цветовые коды, которые должны соответствовать их соседям. Оказывается, квадратный коммутатор [r 0 , r 1 ] 2 вращает четыре грани на 180 градусов, но оставляет две грани в их исходной ориентации. Конечно, скручивает и вершины. Но если вы повторите это три раза (то есть используйте [r 0 , r 1 ] 6), то вершины не будут затронуты, и вращение лица будет выполнено три раза, что равносильно его однократному выполнению. Правильно сориентируя куб и фиксируя четыре грани за раз, вы можете добиться идеального совпадения граней.

Подробно об алгоритме

Шаг 1. Поместите вершины в нужное место

Когда решено с желтым спереди и буквой «T. Фишера »слева, цвета:

Посмотрите на вершины и обратите внимание, что каждая имеет три цвета. Скрутите куб так, чтобы цвет ybr был в позиции 0, возможно скрученный. Затем поместите вершину ypb в позицию 1, вершину yrg в позицию 2 и вершину ygp в позицию 3. Вы можете просто крыть это.

Когда вы закончите, посмотрите на заднюю часть куба. Обратите внимание, что четыре вершины автоматически находятся в правильном положении (но, вероятно, скручены).

Шаг 2. Поместите лица в нужное место.

Желтое лицо находится в нужном месте. Посчитайте, сколько лиц не на своем месте.

Случай 1. Четыре лица неуместны

Случай 1а. Правильные грани смежны

Поместите правильные грани в положение u и b. Возможны три смены лиц. Зафиксируем грани соответствующим коммутатором:

Случай 1б. Правильные лица противоположны

Если каждое неправильное лицо должно быть заменено соседним, поместите правильные грани в положение l и r. и одна из этих пар должна быть поменяна местами в положениях f и d, и do (df) (lr) = [r 0 -1, r 1 ]. Затем перейдите к случаю 1а.

Если каждое неправильное лицо должно быть заменено противоположным лицом, поместите правильные грани в позиции f и b и выполните [r 0 -1, r 1 ]. Затем перейдите к случаю 2b.

Случай 2. Три лица неуместны

Случай 2а. Неуместные грани имеют общую вершину.

Поместите эту общую вершину в позицию 2 и выполните [r 0 , r 1 ]. У вас будут четыре лица не на своем месте. Затем перейдите к случаю 1а.

Случай 2b: Неуместные грани находятся в ряду.

Поместите лица в левую, заднюю и правую позиции. Сделайте [r 0 -1, r 1 ]. Затем перейдите к случаю 1а.

Случай 3. Пять неуместных лиц

Правильное лицо положить на спину. Приложите к низу грань, к которой должна переходить лицевая грань. Сделайте [r 0 -1, r 1 ]. Теперь у вас есть не больше четырех лиц.

Шаг 3. Скрутите вершины.

Теперь у куба правильные грани и вершины, но некоторые вершины могут быть скручены. Посмотрите на них и посмотрите, какие повороты по часовой стрелке или против часовой стрелки необходимы, чтобы их исправить. Если повезет, нужно исправить только одну из сторон.

«Двойная кувалда», [r0⁻¹, r1] ² скручивает вершины 0 и 2 против часовой стрелки, 1 и 5 по часовой стрелке, и оставляет четыре верхних вершины (2, 3, 5, 7) как есть. Обратите внимание, что этот ход состоит из восьми вращений.

В принципе, вы можете повторять движение снова и снова, вращая куб по мере необходимости. Например, двойная кувалда, поворот куба на 90 градусов вокруг оси z и еще одна двойная кувалда дают такой результат, нейтрализуя диагонально противоположные повороты:

Это может быть утомительно, и я считаю полезным поискать другие ходы, которые могут помочь. Эти два квадратных коммутатора имеют паттерны скручивания в направлениях y, x и z следующим образом:

Немного попрактиковавшись, их легко распознать, и вы сэкономите время.

Шаг 4. Отразите лица.

Когда все вершины скручены правильно, у вас могут получиться две или четыре грани, а остальные повернуты на 180 градусов. Внимательно посмотрите на совпадающие края. Если у вас ровно две правильно перевернутые грани с одним совпадающим краем, поместите правильные грани в положения u и b и сделайте кувалдой 6 раз. Это 24 оборота. Все будет сделано.

Во всех остальных случаях поместите неправильные грани в положения t и f, t и d или tfdb и сделайте 6 раз кувалдой, переходя к первому случаю.

Программа Prolog

Вычисление эффекта нескольких вращений на вершинах и гранях утомительно. Конечно, [r 0 , r 1 ] 2 - это (dlf) (dfr) (dfl) (drf), но вычислять результат (dl) (fr) вручную неинтересно, и есть еще много подобных вычислений. В Прологе нетрудно реализовать циклы предикатов, чтобы

Это вторая часть задания. Попробуйте сами или посмотрите решение.

Я подумывал о том, чтобы мои студенты реализовали это на Scala или Scheme, но Prolog оказался отличным выбором для проведения экспериментов.

Когда у вас есть предикат циклов, вы можете использовать его для многих рутинных вычислений. Например, действительно ли на шаге 2 случай 2а может быть сведен к случаю 1а? Вот доказательство:

Предикат эффекта вычисляет эффект последовательности поворотов:

Предикат findVertexFixingRotations находит все фиксирующие вершины последовательности поворотов, которые имеют заданный эффект на гранях:

Вот как вы можете показать, что можете сгенерировать всю группу перестановок.

С помощью некоторых специальных запросов я обнаружил ряд ходов, которые проще, чем в алгоритме для циклов длины 3 и 5:

К сожалению, я нашел ходы слишком запутанными, чтобы их можно было надежно применять, и в итоге остановился на трех коммутаторах в алгоритме.

Почему это работает

Шаг 1

На шаге 1 алгоритма мы помещаем четыре передние вершины в правильное положение. Почему бы нам не беспокоиться о спине?

Вращения вершин разбиваются на две половины. Вращения r 0 , r 3 , r 5 , r 6 вращают только вершины 1, 2, 4, 7. А r 1 , r 2 , r 4 , r 7 вращают только вершины 0, 3, 5, 6. Каждая из halves действует как знакопеременная группа A 4 на своих вершинах (потому что она порождается четными перестановками).

После того, как 0 и 3 зафиксированы, 5 и 6 не могут быть перевернуты (так как это будет нечетная перестановка). То же самое верно для 4 и 7, если вершины 1 и 2 зафиксированы. Поэтому фиксируется спинка, как и перед.

Шаг 2

На шаге 2 алгоритма мы получаем одну правильную грань и поворачиваем другие грани на их место. Почему это всегда работает?

Восемь основных вращений r 0 . r 7 - это 3-циклы на гранях, поэтому любое их произведение дает четную перестановку шести граней. Легко видеть, что вы можете создать набор генераторов и, следовательно, все вращения переменной группы A 6 (например, сделав запрос Пролога для каждого генератора).

В нашем методе мы оставляем желтое лицо неизменным. Остальные грани переставляем четной перестановкой. Следовательно, у вас не может быть ровно два неправильных лица, и четыре неправильных лица должны быть парой переворотов (а не циклом длины 4). Эти факты и несколько расчетов цикла показывают, что на шаге 2 перечислены все возможности.

Шаг 3

На шаге 3 алгоритма нам нужно скрутить все вершины, используя квадратные коммутаторы, которые оставляют грани на месте. Почему это всегда работает?

Вершина скручивается при повороте. Поворот может быть 0 (по порядку), 1 (отклонение на 120 градусов) или 2 (отклонение на 240 градусов). 0, 1 и 2 соответствуют ○ ⊕ ⊖ на рисунках выше.

Вращение r i поворачивает вершину i на 120 градусов и вращает три другие, не поворачивая их.

Напомним, что вращения вершин разбиваются на две половины: r 0 , r 3 , r 5 , r 6 вращают только вершины 1, 2, 4, 7, а r 1 , r 2 , r 4 , r 7 вращают только вершины 0, 3, 5, 6.

Для перестановки, состоящей из r i , отдельно вычислите сумму скручиваний на и (по модулю 3). Когда перестановка оставляет вершины неизменными, обе суммы равны нулю. Чтобы проверить это, заметьте, что каждый r i добавляет скрутку 1. Сумма твистов определяет гомоморфизм Πr i n i ↦ Σn i из A 4 в Z 3 (ядром которого является 4-группа Клейна с r i r j - 1).

В частности, если у вас есть только две скрученные вершины, они должны быть в одной группе вершин (т. Е. Диагонально противоположны на грани) и иметь значения скручивания 1 и 2. Вы можете исправить это двумя двойными кувалдами, как показано на шаге 3 из алгоритм.

Теперь посмотрим на шаблоны скручивания (t 1 , t 2 , t 3 , t 4 ) в GF (3) 4. Поскольку t 1 + t 2 + t 3 + t 4 = 0, они образуют пространство размерности 3, порожденное линейно независимыми (1, 2, 0, 0), (1, 0, 2, 0), (1 , 0, 0, 2). Следовательно, многократное применение двойной кувалды может превратить любую схему скручивания в (0, 0, 0, 0).

Шаг 4

На шаге 4 алгоритма нам нужно перевернуть некоторые грани с помощью шестиконечной кувалды, чтобы все грани были ориентированы правильно. Почему это всегда работает?

Каждое из вращений добавляет некоторым граням поворот на 90 или 180 градусов. Чтобы измерить этот поворот, мысленно нарисуйте стрелку на каждой грани, которая идет от угла с наименьшим номером к углу с наибольшим номером. Это обеспечивает «естественную» ориентацию для каждого лица. Затем примените поворот и посмотрите, где стрелка попадает на целевую грань. Например, рассмотрим r 1 . Он перемещает f в r, а стрелку (0,3) в (3,5). Это поворот на 90 градусов по отношению к естественной ориентации лица r, как показано стрелкой (1, 7). Теперь рассмотрим, как r 1 переводит d-грань с f-гранью. Стрелка (0, 5) становится стрелкой (3, 0), которая повернута на 180 градусов от естественной ориентации f-грани. Третья грань, которую вращает r 1, также повернута на 90 градусов. Сумма всех поворотов - 360 градусов. То же самое и для r2 . г 6 . Вращения r 0 и r 7 не скручивают грани (из-за произвольного определения «естественной» ориентации). В любой последовательности поворотов сумма всех поворотов делится на 360 градусов.

Когда вы наметите все эти повороты, вы заметите, что все повороты r i, которые возвращают элемент в этот набор или элемент обратно в этот набор, скручивают элемент на 0 или 180 градусов. Однако все повороты, которые переводят элемент из в или из в , поворачивают элемент на 90 или 270 градусов. Следовательно, лицо всегда поворачивается на 0 или 180 градусов, когда оно поворачивается обратно в исходное положение.

Таким образом, когда все грани повернуты обратно в исходное положение, каждая из них будет повернута на 0 или 180 градусов («перевернута»), а количество перевернутых граней будет четным. Это расскажет вам обо всех возможных схемах переворота.

Шесть кувалд исправляют все перевороты, если две смежные грани не перевернуты. Легко увидеть, как второе применение шести кувалд решает другие проблемы, как описано в шаге 4.

Шансы говорят, что НФЛ не откажется от EA Sports для футбольных видеоигр

EA Sports и НФЛ ненадолго завершили свое 15-летнее эксклюзивное соглашение в марте, а затем возобновили его в мае.

Доктор Бум, Безумный гений

Доктор Бум, Безумный гений- это карта легендарного героя-воина стоимостью 7 маны из набора "

Как установить Android 12 Beta на Google Pixel и другие устройства Android

Снова наступило то время года! Android 12, то есть следующая основная версия Android, теперь доступна в виде общедоступной бета-версии.

Звонок в покер с часами

Уловки для получения депозитов в серебряные слоты можно делать с помощью банковского счета, вы также можете получать деньги за рейтинговые приложения.

Коды для Carbon Poker - Какие существуют игровые автоматы Какие есть онлайн

Однако разработчики Google выпустили устройство Android TV. Невозможно зачислить сумму на свой банковский счет напрямую, где вы можете найти множество игр Microgaming, предназначенных для тренировок, даже до того, как вы зарегистрируетесь.

Больше новостей
5-5

Ставка на игру Team Genus - Eanix

9-57

Ставка Humans - No Practice Only Dreams

3-8

Ставки на киберспорт Mock-it Esports - Supernova

7-8

Сделать ставку CBR - Desperado

3-37

Ставка RRQ.Trust - loxani

6-11

Ставки на игру CHECKSIX - ALL IN

Больше ставок