25 июля 2010 в 20:30

Как собрать Кубик Рубика 5х5х5 (часть 1)

В далеком 2008 году в мои руки попал кубик рубика нестандартных размеров. Как собирать такое чудо, я тогда и понятия не имел. Поначалу мы с друзьями собирали его частично, не имея понятий об алгоритме сборки, но потом захотелось всё-таки научиться собирать его полностью. Через гугл я нашёл некоторое подобие алгоритма сборки, но он к сожалению был неполный и грешил неточностями. Некоторое время анализировав нагугленное и алгоритм классической сборки кубика 3х3х3 я осознал полный алгоритм сборки куба не только 5х5х5, но и 4х4х4 (хотя у меня под рукой не было такого куба, я написал программу для моделирования такого кубика в 3D и проверил алгоритм). Всем, кто хотел бы научиться собирать такой кубик — добро пожаловать под кат.

I. Базовые понятия


Кубик 5х5х5 состоит из нескольких видов маленьких кубиков, которые не могут меняться местами между собой из-за внутреннего устройства куба:
  1. Центральный
  2. Центральнрый крест
  3. Центральный угловой
  4. Боковой средний
  5. Боковой промежуточный
  6. Угловой
Каждая из этих категорий маленьких кубиков при повороте переходит только в себя, так устроен весь куб. Например, центральные кубики всегда остаются центральными и, кроме того, их взаимное расположение друг относительно друга всегда остаётся неизменным. Т.е. если в вашем кубе жёлтый и белый центры находятся на противоположных сторонах, то как ни крути, они и будут всегда так расположены (если вы конечно не ломали куб). Кстати, они определяют цвет грани, которую вы будете собирать вокруг этих центров — жёлтая грань будет всегда напротив белой в собранном кубе. Угловые кубики также переходят только в угловые. Кроме того, в кубике любых размеров алгоритмы сборки углов одинаковые. Хотелось бы ещё сказать пару слов о боковых промежуточных кубиках. Взгляните на ребро большого куба — на нём находится два таких кубика, у них одинаковые цвета на гранях. Но сами эти кубики не одинаковые. Дело в том, что внутри у них есть крепления, уходящие вглубь куба, и поэтому эти кубики имеют зеркальную симметрию (также можно сказать, что они отличаются примерно как правая и левая тройки векторов). Таким образом на стадии сборки этой категории кубиков будет строго определено, какой из них на какое место встанет (подробнее — несколькими разделами ниже). Теперь перейдём собственно к сборке куба.

II. Верхняя грань


Выберите один из цветов на кубике, который вам больше всего нравится, пусть, например, это будет зелёный. С него мы и начнём сборку. Найдите грань, где центр — зелёный и расположите кубик в пространстве так, чтобы эта грань смотрела вверх. Далее для удобства сборки будем применять условные обозначения.
  • F — передняя грань (front)
  • B — задняя грань (back)
  • L — левая грань (left)
  • R — правая грань (right)
  • U — верхняя грань (up)
  • D — нижняя грань (down)
Поскольку кубик у нас 5х5х5, то у него есть внутренние слои, которые тоже можно вертеть. Буду обозначать их соответственно F2,B2,L2,R2,U2,D2 — где X2 означает слой, параллельный X и лежащий сразу за ним. Центры мы вертеть будем редко.

Центральный крест


Итак, вы держите куб и зелёный центр находится в U. Сначала соберём центральный крест. Найдите на кубе искомые кубики (далее условимся называть всю конструкцию кубом, а её составляющие, которых у нас на каждой грани видно 25 штук — кубиками, хотя если разобрать куб, то на кубики они похожи будут лишь отдалённо). Они располагаются вокруг центров F,B,L,R и D. Первые 4 случая симметричны. Пусть кубик находится в F. Тогда поверните F так, чтобы он лежал в L2 или R2 и поверните соответственно L2 и R2 так, чтобы он оказался наверху. Если при этом часть креста уже собрана и кубик встаёт на место другого такого же зелёного кубика, поверните перед этим F так, чтобы этого не произошло. Ежели кубик находится в D, поверните D так, чтобы он встал ровно под тем местом в U, где он должен оказаться. Далее поверните соответствующую ему L2,R2,F2 или B2 на 180 градусов, чтобы переместить его наверх.

Центральный квадрат


Теперь соберём центральный квадрат в верхней грани — добавим ещё и центральные угловые. Опять получаем 2 принципиально разных случая — кубик в боковой или в нижней грани. Для боковой грани используйте комбинацию К1 (будем использовать следующие обозначения в описании комбинации — указание грани/слоя обозначает поворот по часовой стрелке, если смотреть на неё «спереди». Если же стоит апостроф после названия грани, то вертеть надо против часовой стрелки). Используйте также комбинацию, симметричную этой и поворачивайте перед комбинацией U и F для того, чтобы нужные кубики оказались в тех местах, которые показаны на рисунке. Забегая вперёд, скажу, что этот приём мы будем использовать и в дальнейшем — перед комбинацией повернуть некоторые грани так, чтобы эта комбинация перемещала нужные нам кубики. Конечно же, после комбинации нужно в обратном порядке вернуть всё на место, хотя в данной стадии сборки это даже необязательно. Волноваться не стоит по этому поводу, такая «предподготовка» будет у нас включать максимум поворот двух граней. Теперь осталось рассмотреть случай, когда кубик находится в нижней грани. Расположите кубик в D точно под тем местом в U, где он должен оказаться и используйте комбинацию К2. Запоминать её не надо — просто выполните алгоритм пару раз и вы поймёте, что он вообще делает. Вообще, если вы покрутите кубик и разберётесь, как он работает, то верхнюю грань соберёте и без моей инструкции, даже более быстрым методом — что и куда переходит при поворотах станет очевидным. Тем не менее, я приведу здесь строгий алгоритм, как собрать этот кубик от начала и до конца, так что поехали дальше!

Боковые средние кубики


У нас собран центральный квадрат 3х3 в U. Поставим на место 4 боковых средних кубика. Делается это точно так же, как и в оригинальном кубике 3х3х3. Заметьте, что мы собираем верхнюю грань с правильно собранной верхней полоской (как на рисунке в начале этого большого раздела), так что будьте внимательны. Пусть в передней грани центр у нас красный. Тогда найдите зелёно-красный боковой средний кубик. Если он находится в центральном горизонтальном слое или верхней грани, переместите его необходимым поворотом в нижнюю грань (если он конечно же уже стоит как надо — делать ничего не нужно :))) Если вы при это задели какой-то из «готовых» кубиков, а это могло произойти только если кубик находился в среднем горизонтальном слое, то поверните D на 90 градусов в любую сторону и верните «испорченную» грань на место. Теперь нужный кубик точно в D и в U ничего не испортилось. Далее поверните D так, чтобы этот кубик оказался в F. Если у него красный цвет находится в F, то просто поверните F на 180 градусов. Если же спереди находится зелёный, то используйте комбинацию: D R F'R'. Комбинация очевидная. Повторите процедуру с L,R и B. Не забудьте, что второй цвет на кубике (первый у на зелёный) должен совпадать с цветом соотв. центра. То, что должно получиться можно увидеть на рисунке справа.

Боковые промежуточные


Теперь поставим на нужное место 8 боковых промежуточных кубиков. Для кубиков, находящихся на боковых рёбрах используйте комбинации К3 и К4, а также симметричные им с правой стороны. Перед комбинациями конечно же поворачивайте D2 и U2 так, чтобы комбинация выполняла правильное перемещение. Ежели кубик находится в D, то простой комбинацией верните его в боковую грань — сначала сделайте так, чтобы он не лежал, например, в L, далее поверните L в любую сторону на 90 градусов, затем поверните D, так чтобы наш кубик попал в L и, наконец, верните L на место. Теперь используйте описанные несколькими строками выше алгоритм. Конечно же, ставьте кубики так, чтобы боковой цвет совпадал с боковым цветом смежного бокового среднего кубика, ведь мы собираем ещё и верхнюю полоску! Здесь, кстати, вы можете заметить, что визуально одинаковые (например, зелёно-красные) кубики на самом деле различные — один из них встанет слева от соответствующего бокового среднего кубика, а другой справа (если смотреть на куб определённым образом — зелёная грань сверху).

Угловые кубики


Теперь остались угловые кубики. Собираются они также, как и в кубе 3х3х3. Собираем по очереди. Выберите угловой кубик с одной зелёной гранью, который не стоит как нужно. Если он в U, то переместите его в D поворотом содержащей его боковой грани на 90 градусов, затем поверните D так, чтобы этот кубик уже не лежал в повернутой боковой грани и верните эту грань на место. Даже если этот кубик находится на своём месте, но лишь ориентирован неправильно, всё равно проделайте эти действия. Теперь всё зависит от того, куда «смотрит» зелёная грань. Она может смотреть или вбок или вниз. Если вниз, то поверните D так, чтобы он оказался под тем угловым кубиком в U, где ещё нет нужного кубика, т.е. того, который должен будет там находиться в собранном кубе. Далее поверните боковую грань, содержащую наш кубик так, чтобы зелёная его сторона смотрела вбок и находилась в D, затем поворотом D уберите его из повёрнутой боковой грани и верните эту грань на место. Теперь наш кубик смотрит вбок и находится в нижней грани. Осталось лишь применить комбинацию К5 или симметричную ей. Следите за тем, чтобы собиралась верхняя полоска куба. После описанных действий должно получиться следующее (см. картинку слева): собрана верхняя грань, верхняя полоска, и цвет полоски на каждой грани совпадает с цветом центра этой грани.

III. Все боковые центральные и угловые кубики.


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

Боковые центральные кубики в среднем горизонтальном и нижнем слое


Сначала поставим на место кубики, которые должны находиться в среднем горизонтальном слое.Тут нам понадобится одна комбинация К6, которая перемещает кубик из D в средний горизонтальный слой (см. рисунок). Тут придётся иногда использовать симметричную комбинацию (зависит от ориентации цветов перемещаемого кубика). Если же нужно переместить кубик из среднего горизонтального слоя на другое место в этом же слое, то следует сначала переместить его в нижний слой (просто поставив на его место любой другой кубик из D с помощью К6).
Теперь по поводу нижнего слоя. План будет таков: сначала не смотрим на ориентацию кубиков, а просто делаем так, чтобы они стояли на нужных местах, т.е. один из цветов на каждом кубике должен быть цветом нижней грани, а другой — цвета соответствующей боковой грани. Затем правильно ориентируем кубики нижней грани.
Пункт первый. Используя алгоритм K7 поставьте все боковые средние кубики в D на правильные позиции. Алгоритм двигает по кругу 3 из 4-х нужных кубиков. Сначала сделайте так, чтобы ровно один кубик в D стоял на своей позиции, а потом этой комбинацией поставьте на место все остальные. Утверждается, что этого достаточно для сборки :)
Пункт второй. Ориентируем кубики правильно. Так уж получилось, что неправильно ориентированы могут быть только 0, 2 или 4 кубика (таково устройство куба). Если 0, что ничего делать не надо по понятным причинам, если 4, то придётся посторить алгоритм для двух дважды.
Алгоритм для 2-х. Поверните D так, чтобы кубик, который нужно правильно ориентировать, оказался в F.Затем 4 раза проделайте нехитрую операцию: поворот F по часовой стрелке, поворот центрального горизонтального слоя по часовой стрелке, если смотреть со стороны U. Теперь поверните D так, чтобы второй кубик, который надо перевернуть оказался в F и опять 4 раза проделайте описанную выше процедуру. Далее просто верните D в исходное положение. В конечном итоге получим то, что на картинке справа.

Угловые кубики в нижней грани


На время сборки этих кубиков мы переворачиваем куб так, чтобы верхней гранью была нижняя и наоборот (так удобнее). Для начала поставим все угловые кубики на свои места. Для этого используйте K8, которая перемещает по циклу 3 угловых кубика. Опять же, утверждается, что этого достаточно для сборки.Далее, после того, как угловые кубики встали на свои места, их надо правильно ориентировать. Используется несложная комбинация: R F' R' F R F' R' F. Она крутит угловой кубик, который обозначен как СС на рисунке слева. Применять её надо так: выполняете алгоритм, пока кубик не ориентируется правильно (в данном случае жёлтой гранью наверх, комбинацию надо выполнить один раз, если жёлтый цвет в F и два раза, если в R), далее поворачиваете U так, чтобы на его месте оказался следующий неправильно ориентированный кубик и опять применяете комбинацию, пока кубик не встанет как надо. В итоге все угловые кубики ориентируются правильно. Заметьте, что помимо поворота углового кубика комбинация ещё и портит другие, уже правильно стоящие кубики. Не волнуйтесь — куб так устроен, что повторить комбинацию придётся кратное трём число раз, а после каждого третьего применения комбинации всё возвращается на свои места. Так что всё получится!

Итого


До сих пор описываемые мною действия представляли собой либо почти очевидные комбинации, либо комбинации, аналогичные тем, что применяются в сборке классического кубика 3х3х3. Но дальше всё будет по-другому. Хоть и осталось лишь два этапа сборки и несколько новых комбинаций, они сложнее, чем были раньше, но ознакомившись полностью с данной схемой, вы сможете собрать любой кубик размерности <=5.
To be continued...
Александр Таран @Alex_MIPT
карма
106,5
рейтинг 0,0
Похожие публикации
Самое читаемое Разработка

Комментарии (72)

  • +107
    Напрашивается предисловие: «Гриша Перельман просил запостить, т.к. не хватает кармы».
    • +23
      В смысле? Никто не просил, я сам написал и запостил.
      • +38
        Верю! Пытался тонко пошутить…
        • +14
          Аа, понятно. кармы-то и правда не хватает, думал в тематический блог запостить, а не выходит…
          • +13
            Сейчас хватит, вступите в блог Алгоритмы и постите туда, такая статья должно попасть на главную.
        • +4
          Alex_MIPT пошутил ещё тоньше :)
    • –2
      Аццки отжог!
  • –28
    А практическая польза от этого алгоритма какая?
    • +70
      поможет собрать кубик 5*5*5. Написано же.
      • –3
        поможет собирать кубик (2n-1)*(2n-1)*(2n-1). Понятно же.
    • +8
      Кубик Рубика не ради практической пользы собирают
    • +9
      Нейросеть в башке немножко улучшится ;)
  • +13
    эх… а я до сих пор кубик 3х3 учусь собирать…
    • +3
      на самом деле алгоритм для 5х5х5 содержит в себе алгоритм длдя сборки 3х3х3, так что можете учиться по этой статье
    • +4
      http://www.youtube.com/dimzay сборки кубика Рубика от 2x2x2 до 7x7x7 + золотой кубик Рубика и кубик Тони Фишера:)

      Уроки естественно на русском. Авторский метод, насколько я понял.
      Я научился за 1 вечер собирать. Сейчас рекорд около 50 секунд или даже меньше.
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          Если рекорд по 5х5, то 50 секунд — новый мировой рекорд, т.к. сейчас мировой по пятерке — 1:06.93.
          Видео сборки на 3-ее место в мире.
          • 0
            Я вроде ответил paranoik'у, который говорил про 3x3x3…
            Не думал, что уровневую систему комментариев отменили…

            А мировой 7.08, хотя до финала вроде парень не дошел или в финале проиграл, точно не помню.
    • +8
      Я уверенно только 1х1 собираю. :(
  • +5
    Надо создать блог «Нечем заняться» :-)
    • +5
      И преренести туда более половины статей Хабра :)
  • +1
    а прикинь разработчику то как классно мануал было писать!
  • +1
    Я подарил другу 5х5х5, но сам прикасаться побоялся :)
  • +2
    Кубики в ортогональной проекции глаз режут )
    • +1
      Значит надо им грани затупить ;)
      • +1
        border-radius!
    • 0
      Ага, на кубиках с видом снизу моё подсознание никак не могло определиться, вогнутая картинка или выпуклая.
      • 0
        А разве это имеет значение? :)
        • 0
          Если картинка превращается из вогнутой в выпуклую и обратно несколько раз в секунду — это неудобно.
  • 0
    Интересно.
    Кстати забавно что та ЮТубе есть достаточно много видео с советами и алгоритмами по решению разного размера кубиков рубика (вот например — www.youtube.com/watch?v=44G7P-Q5E94 ). Я смотрел с интересом.
  • +9
    Вам ещё есть к чему стремиться )): www.superliminal.com/cube/cube.htm
    • +5
      oh, shi…
    • +4
      http://goo.gl/y1LP так лучше)
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Его уже кто-то собирал, был прецедент. 5-тимерный, если мне не изменяет память, тоже.
        • 0
          в обоих программах (4D и 5D) есть автоматические решалки, следовательно те кто их писал как минимум представляют себе алгоритм сборки таких кубов (хотя мне трудно назвать это кубами:)
          • +1
            хотя нет программа просто реверсирует свои действия по замешиванию кубика
            • 0
              Там присутствуют возможности автоматизации в виде макросов, поскольку для сборки такого кубика количество операций может исчисляться сотнями тысяч.
  • +7
    На самом деле более простой способ собирать кубы NxNxN (N>3) — это фактически сводить их вид к 3x3.
    Так получается проще.

    Например, кубе 5x5 собираются центры — 3x3, потом грани 3x1 без угловых. После этого ими оперируют как одним целым, работая с кубиком по алгоритмам куба 3x3x3.

    Сборка центров и граней делается интуитивно просто, там нужно лишь пару алгоритмов (я вообще обхожусь одним, так как куб имеет симметрию).
    Сборка граней может привести к проявлению «паритета» — то есть будет видно нарушение четности. В кубе 5x5 возможен всего один вариант паритета. В кубе 7x7 возможно всего 3 типа паритета.

    Четные кубы собирать более сложно, так как нет фиксированных центров и ситуаций паритета там побольше, но в целом не сильно сложнее чем нечетные.
    • 0
      Можно так: оперировать кластерами: Тоесть, считать например, что два слоя не могут друг относительно друга двигаться. Двигать их вместе. При этом, после очередной операции нужно понять, как выгодно сгруппировать слои в кластеры.
  • +7
    Где-то на середине статьи возникло чувство, что её написал студент физтеха. Так и вышло. =)
  • +2
    Вот, мне понравилось видео Дмитрия Зайцева.
    Тут дается алгоритм сборки именно на понимание, а не на запоминание формул.
    При его подходе надо запоминать минимум алгоритмов.
    www.youtube.com/watch?v=-hJYzWU03Xs
  • +2
    Не знаю как 5х5х5
    Но вот 3х3х3 собирал ещё в детском саде без всяких там инструкций. Может не оптимально, не быстро, но зато сам. До сих пор бывают балуюсь если где-нибудь кубик в руки побадается.
    В чем смысл головоломки, если собирать её по инструкции?
    • +1
      По моим наблюдениям, с вашими навыками, вы попадаете в 0.1% населения, а может и в 0.01%
    • +2
      А меня всегда такие игрушки бесили. Чувствовала себя как мышка, которую бросили в лабиринт с единственным выходом и смотрят, добежишь ли? :)
  • +2
    ух… прям вспомнил журнал «Наука И Жизнь» :)
  • 0
    Ещё бы фотографию…
  • 0
    Ах! Оставьте! Кубик-рубика для меня вещь из потустороннего, мистического, иного мира… Негоже его собирать по алгоритмам ))
  • +11
  • +1
    >>>я написал программу для моделирования такого кубика в 3D и проверил алгоритм

    будьте любезны, программу в студию… (можно в следующем посте)
    • +1
      в KDEшных играх этих кубиков-рубиков немерено всяких, берите хоть щас, только лицензию не нарушайте
    • +1
      Да, конечно, будет обязательно в следующей части
      • 0
        буду благодарен
  • 0
    У нас на потоке люди весь семестр этим болели… Были и 5:5:5, и тэтраэдрические, и золотые, и еще куча всяких вариаций. Один чувак после всего этого даже на соревнования в Россию поехал:)
  • 0
    Забавно. Промелькнула мысль о наглядной взаимосвязи такого хитрого кубика рубика и Теории Всего Гаррета Лиси… Алгебра, одним словом
    • 0
      АФАИК, автор (Рубик, преподаватель университета) разработал кубик для объяснения элементов теории групп
  • 0
    вы уверены что этот алгоритм можно довести до конца? У меня есть большие сомнения: уже на первой стадии сборки центрального квадрата на верхней грани кубики типа «2» взаимозаменяемы и неотличимы. Однако не очевидно что их можно поменять местами не трогая остальных кубиков (на самом деле кажется почти очевидным что этого сделать нельзя). Так вот, не случится ли так что последовательно собирая кубик мы в конце упрёмся в ситуацию в которой окажется что изначально мы поместили кубики типа «2» на верхней грани неправильно, и теперь не ломая уже достигнутого нельзя например поменять местами два последних «боковых промежуточных» кубика на нижней грани? Тоже самое для кубиков типа «3» — одноцветные кубики такого типа абсолютно одинаковы, однако поменять их (не трогая остальные кубики) «очевидно» нельзя.
    • 0
      Есть несколько неочевидных комбинаций, которые меняют эти виды кубиков и не портят то, что уже есть. Просто пока идёт сборка верхней грани, можно обходиться простыми алгоритмами и позволить себе «портить» то, что ещё не собрано.
      • 0
        Да, конечно же, это материал следующей части статьи
  • 0
    Никто случайно не может подсказать, где необычные кубики можно приобрести в СПб?
    • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Тег неправильный, надо было не «Я умный», а «Я безумный» ставить ;)
    • НЛО прилетело и опубликовало эту надпись здесь
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Пока читал, с мозгом произошло всё то, что на иллюстрациях.
  • +2
    Если вы сами ето придумали, может, стоит статью на английский перевести?
    • 0
      Кстати поддерживаю, такие вещи можно и нужно публиковать.
  • –3
    блин глаза разболелись изза криво нарисованных кубиков
  • +1
    Застопорился на боковых средних на нижней грани(после комбинации K7).
    В моем случае неправильно ориентировано 2 кубика (желтый и на противоположной стороне, белый).

    Мой Кубик Рубика (U — зеленый, D — синий):


    Для меня неочевидной оказалась следующая формулировка:
    Алгоритм для 2-х. Поверните D так, чтобы кубик, который нужно правильно ориентировать, оказался в F.

    Где в моем случае F, в сторону которой я должен повернуть D, с неправильно ориентированным кубиком?

    • +1
      Залил на другой сервер, т.к. не всегда отображается:
    • 0
      В данном случае в качестве F выбирается любая боковая грань. Вся соль этой комбинации в том, что она переворачивает кубик в D и три из четырёх кубиков в среднем горизонтальном слое. Стало быть, для того, чтобы всё закончилось хорошо, во время второго применения комбинации должны перевернуться те же три кубика и какой-нибудь кубик в D (тогда в конечном итоге два кубика в D перевернутся, а кубики среднего горизонтального слоя останутся как были).

      Ну, и чтобы не делать лишних поворотов, можно начинать действия с той грани, где стоит первый неправильно ориентированный кубик (т.е. выбрать эту грань в качестве F)
      • +1
        Так доступнее. Спасибо. Получилось.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.