diff --git a/mathgenerator/funcs/likeTermCombineFunc.py b/mathgenerator/funcs/likeTermCombineFunc.py new file mode 100644 index 0000000..904b6ce --- /dev/null +++ b/mathgenerator/funcs/likeTermCombineFunc.py @@ -0,0 +1,45 @@ +from .__init__ import * + + +def likeTermCombineFunc(maxCoef=10, maxExp=20, maxTerms=10): + numTerms = random.randint(1, maxTerms) + problem = "" + solution = "" + + for i in range(numTerms): + if i > 0: + problem += " + " + solution += " + " + coefficient = random.randint(1, maxCoef) + exponent = random.randint(1, max(numTerms - 1, 2)) + + problem += str(coefficient) + "x^" + str(exponent) + + solution = combineTerms(problem) + return problem, solution + + +def combineTerms(string): + each_terms = string.split("+") + dict_power_wise_terms = {} + for i in range(11): + dict_power_wise_terms[i] = [] + for term in each_terms: + term = term.split("^") + appendee = term[0].split("x")[0] + if len(term) == 1: + dict_power_wise_terms[1].append(int(appendee)) + else: + dict_power_wise_terms[int(term[1])].append(int(appendee)) + + final_string = '' + for i in range(11): + if len(dict_power_wise_terms[i]) != 0: + total = sum(dict_power_wise_terms[i]) + final_string += str(total) + "x^" + str(i) + " + " + final_string = '+'.join(final_string.split("+")[:-1]) + return final_string + + +combineLikeTerm = Generator("Combine Like terms", 102, "nx^m+lx^k+bx^m", + "(n+b)x^m+lx^k", likeTermCombineFunc)