2016-02-02 2 views
1

Это алгоритмическая проблема. Кажется, я не могу найти способ сравнить относительные положения двух кубов в кубике rubix.Как рассчитать/описать относительное положение (rubix cube)

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

enter image description here

Например, сказать, что я видел два кубика я смотрю в положении 8 и 10, а потом я увидел их в положении 12 и 13, а в обоих случаях они оба на том же лицом куба, и они оба пересекаются друг с другом, а не соседствуют. Относительно говоря, это то же представление об их местоположении.

(Кстати, меня интересуют только «краевые кубы» в этой точке, это не углы, поэтому: 8 10 9 11 12 13 14 15 16 17 18 19 позиций).

Так или иначе, я думал, что если бы я перечислил каждую позицию по отношению к каждой точке отсчета, используя тот же алгоритм для перечисления каждого из них, то я мог бы сравнить индексы, и если бы они были одинаковыми, относительное положение было бы одинаковым (но я был неправ, я мог бы быть на правильном пути, но это не всегда работает):

08 10 18 16 12 13 14 15 09 11 19 17 
09 11 19 17 13 14 15 12 10 08 16 18 
10 18 16 08 14 15 12 13 11 09 17 19 
11 19 17 09 15 12 13 14 08 10 18 16 

12 13 14 15 11 19 17 09 16 08 10 18 
13 14 15 12 08 16 18 10 17 09 11 19 
14 15 12 13 09 17 19 11 18 10 08 16 
15 12 13 14 10 18 16 08 19 11 09 17 

16 08 10 18 19 17 09 11 13 12 15 14 
17 09 11 19 16 18 10 08 14 13 12 15 
18 16 08 10 17 19 11 09 15 14 13 12 
19 17 09 11 18 16 08 10 12 15 14 13 

Рассмотрим следующие две позиции: кубик а на зельем 19 и куб Ь в 16 лет они» re смежным на нижнем уровне. Вот «19» строки и это индексы 16:

0 1 2 3 4 5 
19 17 09 11 18 16 08 10 12 15 14 13 

Теперь сравните, что относительное положение куба с и й на 13 и 9. С и D находятся рядом с правой стороны, поэтому они должны иметь такое же относительное положение. Но мой метод не определяет это.

0 1 2 3 4 5 6 7  8 9 
13 14 15 12 08 16 18 10 17 09 11 19 

индекс 6 не равен индексу 9. В любом случае, это был мой лучший подход, и потребовался целый день, чтобы придумать.

Есть ли у кого-нибудь другие стратегии, которые приходят на ум для вычисления/выражения относительного положения между двумя точками на кубе?

Большое спасибо за помощь и внимание на эту тему!

+0

Многие вещи непонятны. Я боюсь. «Так или иначе, я думал, что если бы я перечислил каждую позицию по отношению к каждой точке звезды, используя тот же алгоритм для перечисления каждого из них, то я мог бы сравнить индексы, и если бы они были одинаковыми, относительная позиция была бы одинаковой "- ??? Я не знаю, как интерпретировать приведенную ниже таблицу. Что такое «относительное положение»? –

+0

Правильно ли, что вас интересуют только позиции, а не ориентация? Каждый краевой куб может иметь две ориентации в одном и том же положении. – lex82

+0

@j_random_hacker: У него есть определенный рисунок, чтобы пересечь кубики ребер от некоторой начальной точки. Когда он начинается с куба 8, он проходит через верхнюю грань куба 10, затем на следующее лицо до 18 и т. Д. Начиная с куба 9 (просто мысленно поверните куб так, что 9 - это где-то 8), вы переходите через верхнюю грань до 11, затем вниз до 19 ... См. Мой ответ, почему это не помогает решить проблему , – lex82

ответ

1

Есть две проблемы здесь:

  • Я думаю, что вы сделали ошибку, когда вы рассчитали относительные позиции из куба 13, я получаю:

    0 1 2 3  4 5 6 7  8 9 10 11 
    13 14 15 12 17 09 11 19 08 16 18 10 
    

    этой линии с другой , поэтому куб 9 встречается в положении 5. Сравните это с первым рядом:

    0 1 2 3  4 5 6 
    19 17 09 11 18 16 08 10 12 15 14 13 
    

    При необходимости куб 16 также происходит в позиции 5 (я думаю, вы что-то смешали в своем вопросе. Вы указываете индекс 6, когда вы имеете в виду 5. Вычисляете индексы до 6, но в позиции 6 есть куб 8, а не куб 16. Пожалуйста, проверьте это снова).

  • Вторая проблема заключается в том, что с учетом только положения куба без эталонного куба для ориентации есть два способа подсчета кубов.Поскольку ваш куб не окрашен, вы можете повернуть куб на 180 градусов и перейти к другой нумерации для ссылочных кубов. Учитывая, что относительные позиции для куба 19 являются правильными, я могу также пронумеровать относительные позиции для куба 13, как это:

    0 1 2 3  4 5 6 7  8 9 10 11 
    13 12 15 14 08 16 18 10 17 09 11 19 
    

    Обратите внимание, что это близко к версии, но индексы 1 до 3 в другом порядке. Я думаю, вы не согласны в том, как вы смотрели на куб.

Основная проблема уже становится очевидным, в этом пункте:

Например, сказать, что я видел два кубика я смотрю в положении 8 и 10, потом я видел их в положении 12 и 13, хорошо в обоих случаях, они оба находятся на одной грани куба, и оба они являются поперек друг от друга, а не рядом. Относительно говоря, это такое же представление их местоположения.

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

+0

вы правы, я действительно считал до 6, когда я должен был сосчитать до 5. Я теперь исправил это в вопросе, спасибо. Вы правы, я не учитывал ориентацию куба. хорошо, позвольте мне поработать над этим и вернуться к вам, спасибо! –

+0

ОК, поэтому решение, на которое я приземлился, составлял другой список, такой же большой, как первый, с противоположной ориентацией для каждого куба 8-19. так что теперь есть 8.1 и 8.2. Если серия кубов совпадает с ориентацией .1 или .2, мы объединяем оба списка в порядке [concat .1 .2], который дает нам относительное местоположение. Пример 5 кубов (x, a, b, c, d, e) в местах (09 14 16 12 10) Первый список каждого реберного куба относительно 09: 09 11 19 17 13 14 15 12 10 08 16 18 индексов: 06 08 09 11 ориентации 9.1. Их подпись будет: 06 11 08 09 плюс ориентация 9.2, которая равна: 10 07 12 05. таким образом: 0611080910071205 –

+0

Создание другого списка для другой ориентации звучит разумно. Однако оттуда я больше не могу следовать за тобой. Однако я рад, что смогу помочь, и вы достигнете прогресса. – lex82

Смежные вопросы