Advertisement
jaredec18

Untitled

Sep 19th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.83 KB | None | 0 0
  1. def left(e):
  2. return e[0]
  3. def right(e):
  4. return e[2]
  5. def op(e):
  6. return e[1]
  7.  
  8.  
  9. def isInside(v,e):
  10. if type(e) != tuple:
  11. if v == e:
  12. return True
  13. else:
  14. return False
  15. else:
  16. if isInside(v,left(e)):
  17. return True
  18. if isInside(v,right(e)):
  19. return True
  20. return False
  21.  
  22. def solve(v,q):
  23. if isInside(v,left(q)):
  24. return solving(v,q)
  25. elif isInside(v,right(q)):
  26. r = (right(q),op(q),left(q))
  27. return solving(v,r)
  28. else:
  29. return None
  30.  
  31. def solving(v,q):
  32. if v == left(q):
  33. return q
  34. elif op(left(q)) == '+':
  35. return solvingAdd(v,q)
  36. elif op(left(q)) == '-':
  37. return solvingSubtract(v,q)
  38. elif op(left(q)) == '*':
  39. return solvingMultiply(v,q)
  40. elif op(left(q)) == '/':
  41. return solvingDivide(v,q)
  42.  
  43. def solvingAdd(v,q):
  44. if isInside(v,left(left(q))):
  45. return (left(left(q)), '=', (right(q), '-',right(left(q))))
  46. elif isInside(v,right(left(q))):
  47. return (right(left(q)), '=',(right(q), '-',left(left(q))))
  48. def solvingSubtract(v,q):
  49. if isInside(v,left(left(q))):
  50. return (left(left(q)),'=',(right(q), '+',right(left(q))))
  51. elif isInside(v,right(left(q))):
  52. return (right(left(q)),'=',(right(left(q)),'-', right(q)))
  53. def solvingMultiply(v,q):
  54. if isInside(v,left(left(q))):
  55. return (left(left(q)), '=', (right(q), '/',right(left(q))))
  56. elif isInside(v,right(left(q))):
  57. return (right(left(q)), '=',(right(q), '/',left(left(q))))
  58. def solvingDivide(v,q):
  59. if isInside(v,left(left(q))):
  60. return (left(left(q)),'=',(right(q), '*',right(left(q))))
  61. elif isInside(v,right(left(q))):
  62. return (right(left(q)),'=',(right(left(q)),'/', right(q)))
  63.  
  64. print(isInside('x', 'x')) # True
  65. print(isInside('x', 'y')) # False
  66. print(isInside('x', ('x', '+', 'y'))) # True
  67. print(isInside('x', ('a', '+', 'b'))) # False
  68. print(isInside('x', (('m', '*', 'x'), '+', 'b'))) # True
  69.  
  70. print(solve('x', (('a', '+', 'x'), '=', 'c'))) # ('x', '=', ('c', '-', 'a'))
  71. print(solve('x', (('x', '+', 'b'), '=', 'c'))) # ('x', '=', ('c', '-', 'b'))
  72.  
  73. print(solve('x', (('a', '-', 'x'), '=', 'c'))) # ('x', '=', ('a', '-', 'c'))
  74. print(solve('x', (('x', '-', 'b'), '=', 'c'))) # ('x', '=', ('c', '+', 'b'))
  75.  
  76. print(solve('x', (('a', '*', 'x'), '=', 'c'))) # ('x', '=', ('c', '/', 'a'))
  77. print(solve('x', (('x', '*', 'b'), '=', 'c'))) # ('x', '=', ('c', '/', 'b'))
  78.  
  79. print(solve('x', (('a', '/', 'x'), '=', 'c'))) # ('x', '=', ('a', '/', 'c'))
  80. print(solve('x', (('x', '/', 'b'), '=', 'c'))) # ('x', '=', ('c', '*', 'b'))
  81.  
  82. print(solve('x', ('y', '=', (('m', '*', 'x'), '+', 'b'))))
  83. # ('x', '=', (('y', '-', 'b'), '/', 'm')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement