Я пытаюсь закодировать что-то, что дает мне ориентацию сторон кубика Рубика после его вращения.
Речь идет о вращении одной стороны кубика Рубика. Когда решено (глядя на белую сторону), все 4 угла, которые будут перемещены этим вращением, имеют определенную c ориентацию.
Я определил это так:
E1 = (W,o,b)
E2 = (W,b,r)
E3 = (W,r,g)
E4 = (W,g,o)
Это представляет ориентацию каждого угла. Первая переменная - это сторона, на которую обращена белая сторона. (решенный куб, поэтому все белые смотрят на белый) вторая - это ориентация, на которую обращен цвет слева от белого, и последняя - это сторона, на которую обращен последний цвет. Я также могу написать -r вместо o и -b вместо g, я думаю, это упрощает задачу.
Итак, когда я поворачиваю его по часовой стрелке, последние два аргумента будут вращаться, чтобы показать новую ориентацию. Для первого угла это будет от (W, -r, b) до (W, b, r), это ориентация второго угла прямо сейчас.
Так что мне нужен метод для покажи мне новую ориентацию угла. Он должен повернуть значения из (-r -> b -> r -> -b) и обратно в начало.
Я думал, что список был бы неплохим, но я не знаю, лучший ли он способ, поскольку я не знаю, как вернуться к началу после увеличения индекса до максимума.
Мне это напоминает мне о производной sin и cos: sin (x) -> cosx -> -sinx -> -cosx, может быть, я могу использовать это как-нибудь, чтобы повернуть эти индексы?