OPERATORSTRINGS = ("+", "-", "*", "/") def checkAll(position, operator, solution, target): # the main body of the program solutionString = ["0","1","2","3","4","5","6","7","8","9"] solutionthing = "None" solutionString[0] = "No solutions found." for i in range(10): solutionString[i] = "" solution = -1 result = 0.0 position = [None, 0, "zip"] operator = [None, 0, "zip"] for first in range(2,8): for second in range(first+1,9): for third in range(second+1,10): position[0] = first position[1] = second position[2] = third for i in range(4): for j in range(4): for k in range(4): operator[0] = i operator[1] = j operator[2] = k result = assessValue (position, operator) if result > target - 0.5 and result < target + 0.5: solution +=1 solutionString[solution] = "Solution" +" "+ str(solution+1) + ": " + getNumberStr(1, position[0]) +" "+ OPERATORSTRINGS[operator[0]] +" "+ getNumberStr(position[0], position[1]) +" "+ OPERATORSTRINGS[operator[1]] +" "+ getNumberStr(position[1], position[2]) +" "+ OPERATORSTRINGS[operator[2]] +" "+ getNumberStr(position[2], 10) + " = " + str(result) return(solutionString) def assessValue(position, operator): # asess the value of the expression result = 0.0 number = ["Blah", "Goobah", "Doesn't", "Matter"] number[0] = getNumber(1, position[0]) number[1] = getNumber(position[0], position[1]) number[2] = getNumber(position[1], position[2]) number[3] = getNumber(position[2], 10) result = operate(number[0], number[1], operator[0]) result = operate(result, number[2], operator[1]) result = operate(result, number[3], operator[2]) return (result) def operate(first, enext, operator): # do the operation if (operator == 0): return (first + enext) # + elif (operator == 1): return (first - enext) # - elif (operator == 2): return (first * enext) # * elif (operator == 3): return (first / enext) # / else: return (-9999999.999) def getNumber (initialInt, finalInt): # get a number from initialInt to FinalInt result = 0 digits = finalInt - initialInt for i in range(digits): result += (initialInt + i) * tenPow(digits-i-1) return(result) def getNumberStr (initialInt, finalInt): # get a number from initialInt to FinalInt, then make it a string result = 0 digits = finalInt - initialInt for i in range(digits): result += (initialInt + i) * tenPow(digits-i-1) result = str(result) return(result) def tenPow(size): # get power of ten result = 1 for i in range(size): result = result * 10 return (result) def main(): # run the program pos = [None, 0, "zip"] ope = [None, 0, "zip"] sol = None tar = None while tar == None: try: tar = float(input("What year are you trying to achieve?: ")) except: tar = None print("Invalid entry. Please try again.") checked = checkAll(pos, ope, sol, tar) print(checked[0]) print(checked[1]) print(checked[2]) print(checked[3]) print(checked[4]) print(checked[5]) print(checked[6]) print(checked[7]) print(checked[8]) print(checked[9]) input("Press enter... ") main()