求助,两个集合求交运算
mathematica吧
全部回复
仅看楼主
level 5
codrw 楼主
R = 4 ;a=4049;b=5987;
A = IntegerDigits[a, R]
B = IntegerDigits[b, R]
Z = NestWhile[Delete[#, 1] &,
MapThread[If[#1 ==
#2, #
1, 0] &, PadLeft[{A, B}]], #[[1]] == 0 &]
两个集合由于长度不同,不能直接做运算。现在如何修改代码使得末位对齐的情况下,在长度较小的集合最前面加前置0,完成两个集合的求交运算
A={3, 3, 3, 1, 0, 1}= {0,a5,a4,a3,a2,a1,a0}
B={1, 1, 3, 1, 2, 0, 3}={b6,b5,b4,b3,b2,b1,b0}
Z={0,0,3,0,0,0,0}
这里的求交运算看作多项式的系数,运算规则:在次数相同的情况下,ai=bi, zi=ai; ai≠bi,zi=0
如果我现在要求两个集合的并运算 ,W=A+B-Z=ai+bi-zi
W={1,4,3,4,3,0,4}
这个并运算怎么写代码
2021年06月24日 12点06分 1
level 5
codrw 楼主
多项式的集合有如下运算规则
A+B=A∪B +A∩B
2021年06月24日 12点06分 2
吧务
level 10
tmp = PadLeft@{A, B}
Z = tmp[[1]]MapThread[Boole@*SameQ]@tmp
W = Total[Append[-Z]@tmp]
2021年06月26日 00点06分 3
代码很简洁[真棒]
2021年06月26日 07点06分
1