Функция планшета квази-правды
Я пытаюсь получить значения таблицы с учетом строки, столбца и числового размера каждой переменной столбца.
Например:
getValue(row = 5, column = 1, column_variable_sizes = [3,2])
вернется
1
это таблица, которую функция "генерирует" для получения возвращаемого значения. На самом деле не нужно генерировать всю таблицу (только возвращаемое значение), и таблица не представлена структурой данных.
column
row | 0 1
---------------
0 | 0 0
1 | 0 1
2 | 1 0
3 | 1 1
4 | 2 0
5 | 2 1*
Возвращенное значение имеет * рядом с ним для ясности.
какие-либо идеи о том, как написать функцию getValue?
Спасибо
РЕДАКТИРОВАТЬ: еще один пример вызова getValue()
getValue(row = 7, column = 2, column_variable_sizes = [3,2,3,2])
вернется
0
column
row | 0 1 2 3
--------------------
0 | 0 0 0 0
1 | 0 0 0 1
2 | 0 0 1 0
3 | 0 0 1 1
4 | 0 0 2 0
5 | 0 0 2 1
6 | 0 1 0 0
7 | 0 1 0* 1
8 | 0 1 1 0
9 | 0 1 1 1
10 | 0 1 2 0
11 | 0 1 2 1
... | ... ... ... ...
опять же, таблица не существует как таковая. Только возвращенное значение генерируется функцией.
column_variable_sizes
относится к количеству элементов каждой переменной столбца.
Например, [3,2,3,2] означает:
- переменная в столбце 0 может иметь 3 значения (0, 1, 2)
- переменная в столбце 1 может иметь 2 значения (0,1)
- переменная в столбце 2 может иметь 3 значения (0, 1, 2)
- переменная в столбце 3 может иметь 2 значения (0,1)
1 ответ
Следующий скрипт Python должен создать ту же "таблицу"
def getCell(row, column, column_variable_sizes):
basecap = 1;
if column + 1 < len(column_variable_sizes):
for i in range(column + 1, len(column_variable_sizes)):
basecap *= column_variable_sizes[i];
columncap = column_variable_sizes[column];
return (row / (basecap)) % columncap
column_sizes = [3, 2, 3, 2]
for y in range(0, 12):
column = "";
for x in range(0, 4):
column += str(getCell(y, x, column_sizes)) + " "
print column