假设有一个由4个数字组成的向量(例如(2,2,3,4))。在
您可以生成网格(如下所示):0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
现在删除包含所有“0”的行和只有一个“1”的行。在
^{pr2}$
现在可以用向量中相应的元素替换“1”。
如果向量是(2,2,3,4),它将变成:0 0 3 4
0 2 0 4
0 2 3 0
0 2 3 4
2 0 0 4
2 0 3 0
2 0 3 4
2 2 0 0
2 2 0 4
2 2 3 0
2 2 3 4
试着用Python实现它。
在伪代码下面:for i from 0 to 2^VECTOR_LEN:
bin=convert_to_binary(i)
if sum_binary_digit(bin) > 1:
print(exec_moltiplication(bin,vector)
# if you want you can also use the bin vector as mask for the updating
# of your tuple of int with the result of the product and append it
# in a list (as in your example).
# For example if bin is (1 1 0 0) you can edit (2 2 3 4) in (4 3 4)
# and append (4 3 4) inside the list or if it is (1 0 1 0) you can
# update (2 2 3 4) in (6 2 4)
其中:向量:包含数字的向量
向量长度是向量的长度
convert_to_binary(num)是一个将整数(num)转换为二进制的函数
sum_binary_digit(bin)是一个将二进制数(bin)中的1相加的函数
exec_乘法(vector,bin)接受输入的向量(vector)和二进制(bin)并返回乘法的值。在