Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def multiply(phi1, phi2):
- assert isinstance(phi1, Factor) and isinstance(phi2, Factor)
- # Cerinta 1 :
- new_vars = []
- new_values = {}
- for var in phi1.vars:
- new_vars.append(var)
- for var in phi2.vars:
- if var not in phi1.vars:
- new_vars.append(var)
- for values1 in phi1.values:
- for values2 in phi2.values:
- ok = True
- for var in new_vars:
- if var in phi1.vars and var in phi2.vars:
- idx1 = phi1.vars.index(var)
- idx2 = phi2.vars.index(var)
- if values1[idx1] != values2[idx2]:
- ok = False
- if ok:
- tmp_val = []
- for var in new_vars:
- if var in phi1.vars:
- idx1 = phi1.vars.index(var)
- tmp_val.append(values1[idx1])
- else:
- idx2 = phi2.vars.index(var)
- tmp_val.append(values2[idx2])
- new_values[tuple(tmp_val)] = phi1.values[values1] * phi2.values[values2]
- result = Factor(new_vars, new_values)
- return result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement