Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from random import randint
- #pair operations
- def pairPrecedence(pair):
- op = pair[1] #operator
- if op == '*' or op == '/':
- return 0
- return 1
- def computePair(pair):
- op = pair[1] #operator
- x,y = int(pair[0]),int(pair[2])
- if op == '*':
- return x*y
- if op == '+':
- return x+y
- if op == '-':
- return x-y
- return int(x/y) #can only be divison
- operators = ('*','+','-','/') #division last for easy no zero division
- (x,y) = input("Please input two numbers: ").split()
- x,y = int(x),int(y)
- possNums = range(x,y+1) #range is exclusive, so y+1
- numbers = tuple(possNums[randint(x,y)] for x in range(0,4))
- pairs = []
- for i in range(0,3): #generates three pairs for solution
- pair = []
- opMaxIndex = 3
- if numbers[i+1] == 0:
- opMaxIndex -= 1 #prevents division by zero
- pair = [numbers[i],operators[randint(0,opMaxIndex)],numbers[i+1]]
- pairs.append(pair)
- expression = str(pairs[0][0])+' '+str(pairs[0][1])+' '+str(pairs[1][0])+' '+str(pairs[1][1])
- expression = expression+' '+str(pairs[2][0])+' '+str(pairs[2][1])+' '+str(pairs[2][2])
- print(expression)
- prec = [pairPrecedence(pair) for pair in pairs]
- print(prec)
- #get solution
- solution = -1
- if prec == [1,1,1] or prec == [0,0,0]:
- solution = computePair([computePair(pairs[0]),pairs[1][1],computePair(pairs[2])])
- if prec == [1,0,1]:
- solution = computePair([pairs[0][0],pairs[0][1],computePair(pairs[1])])
- solution += computePair([computePair(pairs[1]),pairs[2][1],pairs[2][2]])
- if prec == [0,1,0]:
- solution = computePair([computePair(pairs[0]),pairs[1][1],computePair(pairs[2])])
- if prec == [1,0,0]:
- solution = computePair([pairs[1][0],pairs[1][1],computePair(pairs[2])])
- solution = computePair([pairs[0][0],pairs[0][1],solution])
- if prec == [0,0,1]:
- solution = computePair([pairs[0],pairs[1][1],pairs[1][2]])
- solution = computePair(solution,pairs[2][1],pairs[2][2])
- print(solution)
- print(eval(expression))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement