Какой будет математическая формула для извлечения позиции буквы из этой строки? - PullRequest
0 голосов
/ 07 декабря 2011

enter image description here

Приведенная выше полная строка представляет собой комбинированную форму двух разных строк с именами string-1 и string-2. Обе строки имеют одинаковую длину 32 символа. Есть два других параметра интервал и размер . строка-1 разбивается на части длины = интервал , а строка-2 разбивается на части длины = размер для формирования полной строки. как только все фрагменты строки -2 помещаются в полную строку, фрагменты строки-1 дополняются до полной строки.

возможные значения для size variable: 2, 4, 8, 16
Возможные значения для переменной interval : любое значение от 1 до значения size variable

Мое требование - написать индекс выборки математического уравнения (в виде полной строки) n-го числа символов строки-1 без разделения полной строки на две исходные строки.

например В приведенной выше полной строке, если я хочу получить 5-й символ строки-1, это будет '2' с индексом в полной строке 12 . и для 6-го символа, который '1' имеет индекс 15 .

P.S. Индекс символа считается от 0 до индекс , а n-й символ считается от 1 до n

Ответы [ 2 ]

0 голосов
/ 28 сентября 2012
index = group_size*group_number + group_offset
  where
    group_size   = size + interval
    group_number = floor((character - 1)/interval)
    group_offset = (character - 1) % interval

Или

index = (size + interval)*floor((character - 1)/interval) + (character - 1) % interval    

С вашими примерами:

character = 5, interval = 1, size = 2
index = (2 + 1)*floor((5 - 1)/1) + (5 - 1) % 1
      = 3*floor(4) + 0
      = 12


character = 6, interval = 1, size = 2
index = (2 + 1)*floor((6 - 1)/1) + (6 - 1) % 1
      = 3*floor(5) + 0
      = 15
0 голосов
/ 07 декабря 2011

Я получил ответ откуда-то еще и делюсь им здесь.

Код PHP:

min(32,(floor($n/$interval)*$size))+$n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...