我正在尝试根据每个列变量的行,列和数字大小来获取表的值。
例如:
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*
对于clairity,返回的值旁边有一个*。
关于如何编写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 :(得分: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