diff --git a/mathgenerator/__init__.py b/mathgenerator/__init__.py index cb899b3..0912991 100644 --- a/mathgenerator/__init__.py +++ b/mathgenerator/__init__.py @@ -32,7 +32,13 @@ class Generator: ) + " " + self.title + " " + self.generalProb + " " + self.generalSol def __call__(self, *args, **kwargs): - return self.func(*args, **kwargs) + try: + return self.func(*args, **kwargs) + except TypeError: + # If an error is thrown from kwargs, remove the style element + # This happens if someone trys to get style='latex' for an + del kwargs['style'] + return self.func(*args, **kwargs) def getGenList(): diff --git a/mathgenerator/funcs/algebra/basic_algebra.py b/mathgenerator/funcs/algebra/basic_algebra.py index 0626cf8..2d0a3fb 100644 --- a/mathgenerator/funcs/algebra/basic_algebra.py +++ b/mathgenerator/funcs/algebra/basic_algebra.py @@ -1,7 +1,7 @@ from .__init__ import * -def basicAlgebraFunc(maxVariable=10): +def basicAlgebraFunc(maxVariable=10, style='raw'): a = random.randint(1, maxVariable) b = random.randint(1, maxVariable) c = random.randint(b, maxVariable) @@ -20,8 +20,12 @@ def basicAlgebraFunc(maxVariable=10): elif a == 1 or a == i: x = f"{c - b}" - problem = f"{a}x + {b} = {c}" - solution = x + if style == 'latex': + problem = f"\\({a}x + {b} = {c}\\)" + solution = "\\(" + x + "\\)" + else: + problem = f"{a}x + {b} = {c}" + solution = x return problem, solution diff --git a/mathgenerator/funcs/algebra/log.py b/mathgenerator/funcs/algebra/log.py index bc147f2..8bcc16d 100644 --- a/mathgenerator/funcs/algebra/log.py +++ b/mathgenerator/funcs/algebra/log.py @@ -1,13 +1,18 @@ from .__init__ import * -def logFunc(maxBase=3, maxVal=8): +def logFunc(maxBase=3, maxVal=8, style='raw'): a = random.randint(1, maxVal) b = random.randint(2, maxBase) c = pow(b, a) - problem = "log" + str(b) + "(" + str(c) + ")" - solution = str(a) + if style == 'latex': + problem = "\\(\\log_{" + str(b) + "}" + str(c) + "\\)" + print(problem) + solution = "\\(" + str(a) + "\\)" + else: + problem = "log" + str(b) + "(" + str(c) + ")" + solution = str(a) return problem, solution diff --git a/mathgenerator/funcs/algebra/multiply_int_to_22_matrix.py b/mathgenerator/funcs/algebra/multiply_int_to_22_matrix.py index 3d79834..8b81d41 100644 --- a/mathgenerator/funcs/algebra/multiply_int_to_22_matrix.py +++ b/mathgenerator/funcs/algebra/multiply_int_to_22_matrix.py @@ -1,15 +1,25 @@ from .__init__ import * -def multiplyIntToMatrix22(maxMatrixVal=10, maxRes=100): +def multiplyIntToMatrix22(maxMatrixVal=10, maxRes=100, style='raw'): a = random.randint(0, maxMatrixVal) b = random.randint(0, maxMatrixVal) c = random.randint(0, maxMatrixVal) d = random.randint(0, maxMatrixVal) constant = random.randint(0, int(maxRes / max(a, b, c, d))) - problem = f"{constant} * [[{a}, {b}], [{c}, {d}]] = " - solution = f"[[{a*constant},{b*constant}],[{c*constant},{d*constant}]]" + + a1 = a * constant + b1 = b * constant + c1 = c * constant + d1 = d * constant + + if style == 'latex': + problem = "\\(" + str(constant) + "\\cdot\\begin{bmatrix}" + str(a) + "&" + str(b) + "\\\\" + str(c) + "&" + str(d) + "\\end{bmatrix}=\\)" + solution = "\\(\\begin{bmatrix}" + str(a1) + "&" + str(b1) + "\\\\" + str(c1) + "&" + str(d1) + "\\end{bmatrix}\\)" + else: + problem = f"{constant} * [[{a}, {b}], [{c}, {d}]] = " + solution = f"[[{a1},{b1}],[{c1},{d1}]]" return problem, solution diff --git a/mathgenerator/funcs/basic_math/addition.py b/mathgenerator/funcs/basic_math/addition.py index cab6dac..bd26e8f 100644 --- a/mathgenerator/funcs/basic_math/addition.py +++ b/mathgenerator/funcs/basic_math/addition.py @@ -1,14 +1,22 @@ from .__init__ import * -def additionFunc(maxSum=99, maxAddend=50): +def additionFunc(maxSum=99, maxAddend=50, style='raw'): + if maxAddend > maxSum: + maxAddend = maxSum a = random.randint(0, maxAddend) # The highest value of b will be no higher than the maxsum minus the first number and no higher than the maxAddend as well b = random.randint(0, min((maxSum - a), maxAddend)) c = a + b - problem = str(a) + "+" + str(b) + "=" - solution = str(c) - return problem, solution + + if style == 'latex': + problem = "\\(" + str(a) + '+' + str(b) + "\\)" + solution = str(c) + return problem, solution + else: + problem = str(a) + "+" + str(b) + "=" + solution = str(c) + return problem, solution addition = Generator("Addition", 0, "a+b=", "c", additionFunc) diff --git a/mathgenerator/mathgen.py b/mathgenerator/mathgen.py index af26ac4..55c1839 100644 --- a/mathgenerator/mathgen.py +++ b/mathgenerator/mathgen.py @@ -6,9 +6,9 @@ genList = getGenList() # || Non-generator Functions -def genById(id): +def genById(id, *args, **kwargs): generator = genList[id][2] - return (generator()) + return (generator(*args, **kwargs)) def make_worksheet(title): diff --git a/test.py b/test.py index 2c51d56..3aec112 100644 --- a/test.py +++ b/test.py @@ -1,16 +1,3 @@ from mathgenerator import mathgen -# test your generators here - -# print(mathgen.addition()) - -# prints each generator in genList -list = mathgen.getGenList() -for item in list: - print(item[2]) - -# print(mathgen.getGenList()) -print(mathgen.genById(10)) - -#Make a pdf with 10 problems of generator id 1 -# mathgen.makePdf(0, 10) +print(mathgen.genById(17, style='latex')[0])