Комментарии 44
Интересно, а как задавалась начальное расположение конфигурации кубика?
(т.к. процесс перемешивания граней кубика следует физическим процессам)

P.S. Нельзя же, наверное, просто случайно сгенерировать цвета квадратиков кубика?
конечно. если случайно, легко можно получить невозможный кубик

Вроде можно из любой конфигурации перейти в любую другую. Т.е. можно сгенерировать случайно, но с учётом ограничений на угловые элементы, элементы на рёбрах и остальные элементы. К примеру, элементов на рёбрах ровно 12 видов (пар цветов), они размещены на рёбрах случайно и случайно повёрнуты, элементов каждого вида N-2, где N — длина ребра кубика.

Можно сгенерировать полностью собранный кубик, а затем случайным образом его повертеть.
Я думаю что случайное вращение потребует куда меньше вычислительных мощностей.
С чего это? Основная проблема — перемещение данных в массивах, алгоритм «чтокудаположить» — самая мелкая часть.
Для такого большого и четного размера я бы делал
1. Проверка валидности уголков
2. С ребрышками чуть сложнее, но можно для каждой орбиты ребрышек задать случайную подстановку и по ней расположить
3. На каждой орбите одностикерных элементов проверка правильного количества каждого из цветов
Для нечетного размера еще должны быть 2 проверки у центральных ребрышек: на четность подстановки (относительно угловых) и на четность ориентации
Интересно, а какова практическая польза алгоритма сборки кубика?

Спросите у розы в саду, какая в ней практическая польза. Для программистов — как минимум тренировка.

<зануда_on>
Из розы можно сварить отвар(возможно лечебный, я далёк от медицины поэтому не могу точно сказать за инфу по этому поводу в интернете)
Также можно сделать духи(пользы мало, но приятный аромат, что приносит удовольствие{но некоторым он может не понравиться, да и аллергия не исключена})
Просто роза тоже приносит удовольствие, но могут быть теже побочные условия как в случае с духами…
</зануда_on>

Решение задач может приносить удовольствие и поддерживать мозг в здравии. Это если очень коротко.
Слушайте, у каждого свои интересы, вам доставляет удовольствие неоправданное поругательство чужих занятий/хобби? Подумайте о себе в первую очередь
Ау, але? Человек публично самоудовлетворятся вприсядку. Делает он, а стыдно мне. За 4 месяца можно было научиться писать многопоточные приложения.
Кто-то много раз в день отжимается, или поднимает гантели или штангу, или делает что-то подобное; он тренирует свои мышцы. А кто-то занимается чем-то вроде описанного в статье; он тренирует свой мозг.
От розы в саду как раз есть практическая польза. Варенье, запах, лекарства.

Вопрос в другом: ок, алгоритм как тренировка. А в чем практическая польза выполнения задачи по решению кубика?
Подобные видео при случае могут набрать миллионы просмотров на YouTube. А если серьезно, то человеку это было интересно. Не надо везде искать практическую пользу. Какая практическая польза катания на аттракционах?
Человек просто поинтересовался практической целью. А вы повели себя несколько высокомерно. А хабрасообщество подкинуло минусцов. Ни за что!

Избегайте такого поведения, люди.
Это было предсказуемо, на самом-то деле.

Коллективное бессознательное хабросообщества очень нервно реагирует на вопросы о практической пользе гиковских выдумок. Они самоценны и эта самоценность зачастую довлеет над здравым смыслом.

+ предрассудки. Те самые, которые перед рассудком.

P.S. как нахватать миллион минусов? Да очень просто: найти у этого коллективного бессознательного больную мозоль и на неё наступить. В силу некоторых особенностей окружающего мира таких больных мозолей много. И больные мозоли у разных людей пересекаются, образуя группы мозолей, а там и до супермозолей доходит.

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

Внутренний голос подсказывает, что решай он на GPU, было бы разы быстрее, но может ошибаюсь.
Там он пишет, что часть мощностей упиралось в рендеринг (хотя зачем он здесь? можно же было просто логи писать, а потом по логам видео сделать). А рендеринг, я думаю, сделан как минимум с использованием GPU.
Тоже думаю, найти правильную последовательность ходов, а потом в отдельной программе рендерить. Думаю, так намного быстрее будет (возможно, даже, не на 1 порядок). Все-таки, рендеринг такого числа полигонов может много съедать.
Внутренний голос подсказывает, что решай он на GPU, было бы разы быстрее, но может ошибаюсь.

Если там много ветвлений, то польза от GPU сомнительно. А их там скорее всего много, на каждом ходу. И каждый следующий ход зависит от предыдущего, поэтому спекулятивное выполнение здесь вряд ли сработает.

Алгоритм решения включает всего семь действий.

Вот так, умудриться написать, обо всём и одновременно ни о чём. Что за действия, что за алгоритм.
Для CFOP возможных комбинаций по этапам — 41 (F2L) x 57 (OLL) x 21 (PLL), для каждого варианта каждого этапа — свой алгоритм.

Да, можно одним алгоритмом (той же лямбдой, для примера) собрать кубик, но это далеко не оптимально и совсем не быстро.
У меня вышло 65536×65536 (мне нравятся степени двойки)».
Поэтому он решил остановиться на кубике в четыре раза меньшего размера, то есть 32768×32768.
Только меня это смутило?
Вас смутило «в четыре раза»? Это правильная формулировка. В два раза меньший кубик был бы уменьшен по одной стороне. В четыре раза — по двум (два раза в два раза).
Как альтернативный пример можно привести разрешения экрана FullHD и 4K.
Ах да, то же 3D, там три стороны. Ну для сравнения 65536×65536 и 32768×32768 — в 4 :)

Важен же не объем кубика, цветные клетки только на поверхности, а поверхность уменьшилась в 4 раза

Да согласен, для пользователя важен не объем а количество элементов, но мозг на слова «размер кубика» среагировал однозначно: a³, — а комментарий удалять нельзя.
Тогда мы бы увидели эту статью сильно позже. Четыре месяца занимать компьютер и ждать — и так немало.
> Четыре месяца занимать компьютер и ждать — и так немало.

Мне это напомнило старый анекдот про многозадачность Windows :)
А меня нет
Площадь поверхности — в 4 раза меньше, а, как, например, мой алгоритм сборки, так и объем памяти, необходимый для хранения, пропорционален именно площади поверхности
Сам венгерский изобретатель Эрнё Рубик предложил несколько вариантов, а вообще ничто не мешает делать кубики произвольного размера.

Вообще-то сделать кубик произвольного размера мешает геометрия. Если сделать кубик больше, чем 5х5х5, то при повороте слоя на 45 градусов угловые кубики просто вывалятся.
Не смешите мои тапочки. Физические выпускаются вплоть кажется до 17х17х17 (стоят порядка 50-60 тыр), а 6х6х6 у меня есть.
У оной проблемы как минимум 2 решения:1. Чуть изменяем пропорции малых квадратиков так, что крайние чуть больше 2. хитрые металлические штыри все подлдерживающие (как у кубика 2х2х4)
Статья производит впечатление абсолютной бессмысленности действий этого ютубе-блогера
Собрать компом кубик по чужому алгоритму — дело абсолютно бессмысленное и не требует высокой квалификации ни программиста ни математика.
Вот, если он запутыывание умное делал, тогда было бы лучше об этом написать
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.