Рассчитать комбинацию на основе позиции - PullRequest
1 голос
/ 19 февраля 2011

У меня проблемы с решением этой проблемы:

Создайте функцию, которая задает набор символов C, может генерировать N-ую комбинацию ИЛИ возвращать серию комбинаций с учетом начальной позиции (Ns) и конечной позиции (Ne) и максимальная длина комбинации (Mx).

Конкретный пример:

Пусть C = [A, B, C]

Мы знаем, что различные комбинации будут выглядеть следующим образом, предполагая Mx = 3 (комбинация будет разной для разных длин) :

1. AAA
2. AAB
3. AAC
4. ABA
5. ABB
6. ABC
N. ... Etc

Если бы мы быличтобы передать следующие параметры:

C = [A, B, C] Mx = 3 Ns = 3 Ne = 3

, мы ожидаем следующий результат:

AAC

Если бы нам нужно было передать следующие параметры:

C = [A, B, C] Mx = 3 Ns = 4 Ne = 6

, мы ожидали бы следующий результат:

4. ABA
5. ABB
6. ABC

Для решения язык программирования не имеет значения.Однако C # будет предпочтительным.Также самым важным было бы объяснение того, как его решить.

Я с нетерпением жду удивительных Гуру из Переполнения Стека ...

1 Ответ

6 голосов
/ 19 февраля 2011

Учитывая индекс N (на основе 0) в последовательности комбинаций n символов, вы можете получить i '-ый символ, вычисляя N / n i % n (с использованием целочисленного деления и остатка)

Например:

C = {A, B, C} (giving n = 3)
N = 6
i = 0 => 6 / 3^0 % 3 = 0 (symbol 0 = A)
i = 1 => 6 / 3^1 % 3 = 2 (symbol 2 = C)
i = 2 => 6 / 3^2 % 3 = 0 (symbol 0 = A)
Resulting sequence: ACA

Последовательность обрабатывается как базовое число n , и рассчитываются отдельные цифры.

...