Вращение по элементам в списке. Задача ориентации кубика Рубика - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь закодировать что-то, что дает мне ориентацию сторон кубика Рубика после его вращения.

Речь идет о вращении одной стороны кубика Рубика. Когда решено (глядя на белую сторону), все 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, может быть, я могу использовать это как-нибудь, чтобы повернуть эти индексы?

1 Ответ

0 голосов
/ 20 июня 2020

Вращение по списку может быть достигнуто с помощью модуля (%).

values = ['-r', 'b', 'r', '-b']

index = 0
print(values[index % len(values)])

>>> -r


index = 5
print(values[index % len(values)])

>>> b

См. Общие сведения об операторе модуля% для объяснения оператора модуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...