Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import log
- aval = 17
- bval = 34
- def reset():
- global a, b
- a = aval
- b = bval
- def printVars(message):
- global a, b
- print message
- print a, b
- reset()
- reset()
- b = a ^ b
- a = a ^ b
- b = a ^ b
- printVars("triple xor method")
- a = a + b
- b = a - b
- a = a - b
- printVars("add sub sub method")
- b = b - a
- a = b + a
- b = a - b
- printVars("sub add sub method")
- a = a * b
- b = a / b
- a = a / b
- printVars("mul div div method")
- b = b / a
- a = b * a
- b = a / b
- printVars("div mul div method")
- b = b ** a
- a = b ** (1.0/a)
- b = log(b, a)
- printVars("power root log method")
- """
- General case:
- Let f(a, b) be a binary operator.
- Let li(a, b) be a binary operator such that li(f(a, b), b) = a
- Let ri(a, b) be a binary operator such that ri(f(a, b), a) = b
- Then, the following code can be used to switch the value of two variables a and b:
- b = f(b, a)
- a = li(b, a)
- b = ri(b, a)
- Proof:
- b = f(b, a)
- a = li(f(b, a), a) = b
- b = ri(f(b, a), b) = a
- Particular examples:
- f(a, b) = li(a, b) = ri(a, b) = xor(a, b)
- f(a, b) = add(a, b)
- li(a, b) = ri(a, b) = sub(a, b)
- """
Advertisement
Add Comment
Please, Sign In to add comment