kikones34

Untitled

Apr 11th, 2022
1,256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.14 KB | None | 0 0
  1. from math import log
  2.  
  3. aval = 17
  4. bval = 34
  5.  
  6. def reset():
  7.     global a, b
  8.     a = aval
  9.     b = bval
  10.  
  11. def printVars(message):
  12.     global a, b
  13.     print message
  14.     print a, b
  15.     reset()
  16.  
  17. reset()
  18.  
  19. b = a ^ b
  20. a = a ^ b
  21. b = a ^ b
  22.  
  23. printVars("triple xor method")
  24.  
  25. a = a + b
  26. b = a - b
  27. a = a - b
  28.  
  29. printVars("add sub sub method")
  30.  
  31. b = b - a
  32. a = b + a
  33. b = a - b
  34.  
  35. printVars("sub add sub method")
  36.  
  37. a = a * b
  38. b = a / b
  39. a = a / b
  40.  
  41. printVars("mul div div method")
  42.  
  43. b = b / a
  44. a = b * a
  45. b = a / b
  46.  
  47. printVars("div mul div method")
  48.  
  49. b = b ** a
  50. a = b ** (1.0/a)
  51. b = log(b, a)
  52.  
  53. printVars("power root log method")
  54.  
  55. """
  56. General case:
  57.  
  58. Let f(a, b) be a binary operator.
  59. Let li(a, b) be a binary operator such that li(f(a, b), b) = a
  60. Let ri(a, b) be a binary operator such that ri(f(a, b), a) = b
  61.  
  62. Then, the following code can be used to switch the value of two variables a and b:
  63.  
  64. b = f(b, a)
  65. a = li(b, a)
  66. b = ri(b, a)
  67.  
  68. Proof:
  69.  
  70. b = f(b, a)
  71. a = li(f(b, a), a) = b
  72. b = ri(f(b, a), b) = a
  73.  
  74. Particular examples:
  75.  
  76. f(a, b) = li(a, b) = ri(a, b) = xor(a, b)
  77.  
  78. f(a, b) = add(a, b)
  79. li(a, b) = ri(a, b) = sub(a, b)
  80.  
  81. """
  82.  
Advertisement
Add Comment
Please, Sign In to add comment