准真理片功能

时间:2012-11-09 06:25:05

标签: truthtable

我正在尝试根据每个列变量的行,列和数字大小来获取表的值。

例如:

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列中的变量可以有3个值(0,1,2)
  • 第1列中的变量可以有2个值(0,1)
  • 第2列中的变量可以有3个值(0,1,2)
  • 第3列中的变量可以有2个值(0,1)

1 个答案:

答案 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