2012-05-16 2 views
0

Я борюсь с проблемой - пожалуйста, простите меня за мой плохой английский. В настоящее время я пишу скрипт в Python, где мне нужно манипулировать списком и преобразовывать его. Я хочу преобразовать двойную нумерацию в другую нумерацию, где используется только один индекс.Двойной индекс нумерации для линейной нумерации

Если n это первый показатель моей двойной нумерации и m второй, что выражение L(n, m) = idx, которое позволяет перейти от (здесь n_max = 3, но я хочу, общее правило):

[n, m] => [[0, 0], [1, 0], [2, 0], [3, 0], [1, 1], [2, 1], [3, 1], [2, 2], [3, 2], [3, 3]] 

и так до

idx => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

? Это явно зависит от n_max, но я ищу какое-то время и не нахожу надежного выражения или скрипта.

Например, если [n, m] имел следующую структуру:

[[0, 0], [1, 0], [1, 1], [2, 0], [2, 1], [2, 2], [3, 0], [3, 1], [3, 2], [3, 3]] 

искомое выражение будет:

idx = L(n, m) = n * (n + 1)/2 + m 

Любая помощь будет оценена, даже маленькие намеки или ссылки :) Спасибо ! Я уже искал в Интернете и на этом сайте, но не нашел ответа.

ответ

0

Найдено. Это было:

$ idx = \sum_{i=0}^{m-1} l_{max} - i $ 
Смежные вопросы