Я хочу предварительно вычислить некоторые значения для каждой комбинации в наборе комбинаций. Например, при выборе 3 чисел от 0 до 12 я вычислю некоторое значение для каждого из них:
>>> for n in choose(range(13), 3):
print n, foo(n)
(0, 1, 2) 78
(0, 1, 3) 4
(0, 1, 4) 64
(0, 1, 5) 33
(0, 1, 6) 20
(0, 1, 7) 64
(0, 1, 8) 13
(0, 1, 9) 24
(0, 1, 10) 85
(0, 1, 11) 13
etc...
Я хочу сохранить эти значения в массиве, чтобы при заданной комбинации я мог вычислить ее и получить значение. Например:
>>> a = [78, 4, 64, 33]
>>> a[magic((0,1,2))]
78
Что бы magic
было?
Изначально я думал просто сохранить ее в виде 3-мерной матрицы размером 13 x 13 x 13, так что я могу легко индексировать ее таким образом. В то время как это 13 хорошо для выбора 3, это будет иметь слишком много накладных расходов для чего-то вроде 13 выбора 7.
Я не хочу использовать dict, потому что в конечном итоге этот код будет на C, и массив все равно будет намного эффективнее.
ОБНОВЛЕНИЕ: у меня тоже есть похожая проблема, но я использую комбинации с повторениями, поэтому любые ответы о том, как получить их, будут высоко оценены =).
ОБНОВЛЕНИЕ: Чтобы было ясно, я пытаюсь сэкономить место. Каждая из этих комбинаций фактически превращается во что-то, занимающее много места, скажем, 2 килобайта. Если бы я использовал массив 13x13x13, это было бы 4 мегабайта, из которых мне нужно только 572 килобайта с использованием (13 выбирают 3) точек.