Во-первых, обратите внимание, что мой английский здесь не самый лучший.Если кто-то заинтересован помочь мне в решении этой проблемы и хочет, чтобы я подробно описал что-либо, не стесняйтесь спрашивать более подробную информацию.
Высоко ценится конкретное решение для любого языка с тегами.Даже если целью этого вопроса является более общее решение в терминах формулы.
Спасибо
Давайте определим Правило последовательности SR, фиксированную последовательность целых чисел:
SR = (a, b, c, d, ..)
Пример
SR = (1, 2, 3, 5)
Давайте определим правило SS Shifting Sequence последовательность, полученную SR как:
SS = (a-0, ba, cb, dc, ..- d)
Пример
(1-0, 2-1, 3-2, 5-3) = (1, 1, 1, 2)
Правило последовательности смещенияSS должен вычислять для выходной последовательности OS согласно следующей рекурсивной формуле:
OS (n) = 0, n = 0
OS (n) = OS (n-1) + SS(i), n> 0
, где i - позиция n в текущей подгруппе SS.
Пример
OS(n) = (1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 15..)
, где n=(1,2,3,4,5,6,7,8,9,10,11,12,..)
.
OS(0) = 0
OS(1) = OS(0) + SS(1) = 0 + 1 = 1
OS(2) = OS(1) + SS(2) = 1 + 1 = 2
OS(3) = OS(2) + SS(3) = 2 + 1 = 3
OS(4) = OS(3) + SS(4) = 3 + 2 = 5
OS(5) = OS(4) + SS(1) = 5 + 1 = 6
OS(6) = OS(5) + SS(2) = 6 + 1 = 7
OS(7) = OS(6) + SS(3) = 7 + 1 = 8
OS(8) = OS(7) + SS(4) = 8 + 2 = 10
OS(9) = OS(8) + SS(1) = 10 + 1 = 11
OS(10) = OS(9) + SS(2) = 11 + 1 = 12
OS(11) = OS(10) + SS(3) = 12 + 1 = 13
OS(12) = OS(11) + SS(4) = 13 + 2 = 15
Чего на самом деле мне не хватает (не удалось получить) - текущая позиция n
в соответствующей группе смещения, заданная только n
, например,что:
pos (n) = i -> S (pos (n)) = S (i)
так, наконец, я могу написать
OS (0) = 0
OS (n) = OS (n-1) + SS (pos (n))
Кем я былВ состоянии получить до сих пор это формула для текущего индекса смены группы.Я подозреваю, что это может помочь мне в определении требуемой позиционной формулы pos (n) , но не знаю как: ((
Групповой индекс можно выразить как:
G (n) = потолок (н / д (SS))
Где D (SS) - это размерность SS, то есть количество элементов в правиле последовательности.
Пример
Например, последовательность $ n $ колеблется от 1 до 12. Число групп смещения (1,1,1,2)
измерения 4, которое отображает 1-> 1 в OS (n), равно 3 = 12/4
.
Индекс группировки для n=9
можно вычислить как:
G(9) = ceiling(n/D(SR)) = ceiling(9/4) = 3
ФИНАЛЬНЫЙ ОТВЕТ
Использование %
Оператор - это то, чего мне не хватало. Окончательная рекурсивная формула:
OS (n) = 0, n = 0
OS (n) = OS (n-1) + SS ((n + D (SR) -1)% D (SR) + 1), n> 0
или с использованием чисто математической формулы (и определения группового индекса выше):
OS(n) = 0, n = 0
OS (n) = OS (n-1) + SS ((n + D (SR) -1 - (D (SR) * G (n))+ 1), n> 0
THANKS @ GARETH