From 3ba50015ef4d9abaa404b5d3b9bb272cfdcf2deb Mon Sep 17 00:00:00 2001 From: Luke Weiler Date: Mon, 19 Oct 2020 00:06:13 -0400 Subject: [PATCH 01/23] Update CONTRIBUTING.md --- CONTRIBUTING.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 556fd76..e7cf0eb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -28,6 +28,12 @@ def additionFunc(maxSum, maxAddend): Before coding, please check README.md to see if someone has already created the generator you plan to make. Skillid is determined by the next available id as can be determined in the table. +#### Restructure Notes +We currently just underwent a large reconstruction of the repository. Here is how you commit to the repo. +* Place your generator instance at the bottom of mathgen.py +* Create a new file in the funcs directory with the same name as your function +* Place `.__init__ import *` at the top of your file and then write your function in the lines beneath it +* Add `from . import *` at the bottom of the `__init__.py` file inside the funcs directory ### Provide Ideas If you have an idea for a generator but don't have the time or know-how to create it, you can add it as an issue. If you have a lot of ideas, I would suggest adding them to the table in README.md so that they are easier for our team to manage. From a60525edbc47bde83a15fc593383f6dee3798a44 Mon Sep 17 00:00:00 2001 From: devansh-07 Date: Mon, 19 Oct 2020 11:02:25 +0530 Subject: [PATCH 02/23] Added 2's complement --- mathgenerator/funcs/__init__.py | 1 + mathgenerator/funcs/binary2sComplement.py | 26 +++++++++++++++++++++++ mathgenerator/mathgen.py | 1 + 3 files changed, 28 insertions(+) create mode 100644 mathgenerator/funcs/binary2sComplement.py diff --git a/mathgenerator/funcs/__init__.py b/mathgenerator/funcs/__init__.py index efb1ce7..b43d727 100644 --- a/mathgenerator/funcs/__init__.py +++ b/mathgenerator/funcs/__init__.py @@ -71,3 +71,4 @@ from .multiplyComplexNumbersFunc import * from .geomProgrFunc import * from .geometricMeanFunc import * from .harmonicMeanFunc import * +from .binary2sComplement import * \ No newline at end of file diff --git a/mathgenerator/funcs/binary2sComplement.py b/mathgenerator/funcs/binary2sComplement.py new file mode 100644 index 0000000..f51b797 --- /dev/null +++ b/mathgenerator/funcs/binary2sComplement.py @@ -0,0 +1,26 @@ +from .__init__ import * + +def binary2sComplementFunc(maxDigits=10): + digits = random.randint(1, maxDigits) + question = ''.join([str(random.randint(0, 1)) for i in range(digits)]).lstrip('0') + + answer = [] + for i in question: + answer.append(str(int(not bool(int(i))))) + + carry = True + j = len(answer) - 1 + while j >= 0: + if answer[j] == '0': + answer[j] = '1' + carry = False + break + answer[j] = '0' + j -= 1 + + if j == 0 and carry == True: + answer.insert(0, '1') + + problem = "2's complement of " + question + " =" + solution = ''.join(answer).lstrip('0') + return problem, solution \ No newline at end of file diff --git a/mathgenerator/mathgen.py b/mathgenerator/mathgen.py index 0e813a6..860c89b 100644 --- a/mathgenerator/mathgen.py +++ b/mathgenerator/mathgen.py @@ -156,3 +156,4 @@ complexNumMultiply = Generator("Multiplication of 2 complex numbers", 64, "(x + geometricprogression=Generator("Geometric Progression", 65, "Initial value,Common Ratio,nth Term,Sum till nth term =", "a,r,ar^n-1,sum(ar^n-1", geomProgrFunc) geometricMean=Generator("Geometric Mean of N Numbers",66,"Geometric mean of n numbers A1 , A2 , ... , An = ","(A1*A2*...An)^(1/n) = ans",geometricMeanFunc) harmonicMean=Generator("Harmonic Mean of N Numbers",67,"Harmonic mean of n numbers A1 , A2 , ... , An = "," n/((1/A1) + (1/A2) + ... + (1/An)) = ans",harmonicMeanFunc) +binary2sComplement = Generator("Binary 2's Complement", 68, "2's complement of 11010110 = ", "101010", binary2sComplementFunc) \ No newline at end of file From 1e252fec0fe3f98ef77ac0968009a2a4692d696e Mon Sep 17 00:00:00 2001 From: Souvikdeb2612 <62352386+Souvikdeb2612@users.noreply.github.com> Date: Mon, 19 Oct 2020 11:03:54 +0530 Subject: [PATCH 03/23] Added function for area of Sector --- mathgenerator/funcs/sectorAreaFunc.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 mathgenerator/funcs/sectorAreaFunc.py diff --git a/mathgenerator/funcs/sectorAreaFunc.py b/mathgenerator/funcs/sectorAreaFunc.py new file mode 100644 index 0000000..a4337b4 --- /dev/null +++ b/mathgenerator/funcs/sectorAreaFunc.py @@ -0,0 +1,12 @@ +.__init__ import * + +import random +import math +def sectorAreaFunc(maxRadius = 49,maxAngle = 359): + Radius = random.randint(1, maxRadius) + Angle = random.randint(1, maxAngle) + problem = f"Given radius, {Radius} and angle, {Angle}. Find the area of the sector." + secArea = float((Angle / 360) * math.pi*Radius*Radius) + formatted_float = "{:.5f}".format(secArea) + solution = f"Area of sector = {formatted_float}" + return problem, solution From 587f786d3e7ebe8a984b3813569b6f85f7e0c300 Mon Sep 17 00:00:00 2001 From: Souvikdeb2612 <62352386+Souvikdeb2612@users.noreply.github.com> Date: Mon, 19 Oct 2020 11:06:04 +0530 Subject: [PATCH 04/23] Update __init__.py --- mathgenerator/funcs/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mathgenerator/funcs/__init__.py b/mathgenerator/funcs/__init__.py index efb1ce7..aab32a8 100644 --- a/mathgenerator/funcs/__init__.py +++ b/mathgenerator/funcs/__init__.py @@ -71,3 +71,4 @@ from .multiplyComplexNumbersFunc import * from .geomProgrFunc import * from .geometricMeanFunc import * from .harmonicMeanFunc import * +from .sectorAreaFunc import* From 7e50827a75ef5b7f97ec9d17497ce61957712992 Mon Sep 17 00:00:00 2001 From: devansh-07 Date: Mon, 19 Oct 2020 11:06:36 +0530 Subject: [PATCH 05/23] Added 2's complement function --- mathgenerator/mathgen.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mathgenerator/mathgen.py b/mathgenerator/mathgen.py index 860c89b..302fa34 100644 --- a/mathgenerator/mathgen.py +++ b/mathgenerator/mathgen.py @@ -1,7 +1,7 @@ import random import math import fractions -from .funcs import * +from funcs import * genList = [] @@ -156,4 +156,4 @@ complexNumMultiply = Generator("Multiplication of 2 complex numbers", 64, "(x + geometricprogression=Generator("Geometric Progression", 65, "Initial value,Common Ratio,nth Term,Sum till nth term =", "a,r,ar^n-1,sum(ar^n-1", geomProgrFunc) geometricMean=Generator("Geometric Mean of N Numbers",66,"Geometric mean of n numbers A1 , A2 , ... , An = ","(A1*A2*...An)^(1/n) = ans",geometricMeanFunc) harmonicMean=Generator("Harmonic Mean of N Numbers",67,"Harmonic mean of n numbers A1 , A2 , ... , An = "," n/((1/A1) + (1/A2) + ... + (1/An)) = ans",harmonicMeanFunc) -binary2sComplement = Generator("Binary 2's Complement", 68, "2's complement of 11010110 = ", "101010", binary2sComplementFunc) \ No newline at end of file +binary2sComplement = Generator("Binary 2's Complement", 68, "2's complement of 11010110 =", "101010", binary2sComplementFunc) From 20b93b90ff52c4feceb1351e5e8695c0304b08a0 Mon Sep 17 00:00:00 2001 From: Souvikdeb2612 <62352386+Souvikdeb2612@users.noreply.github.com> Date: Mon, 19 Oct 2020 11:09:28 +0530 Subject: [PATCH 06/23] Update mathgen.py --- mathgenerator/mathgen.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mathgenerator/mathgen.py b/mathgenerator/mathgen.py index 0e813a6..96b8ecb 100644 --- a/mathgenerator/mathgen.py +++ b/mathgenerator/mathgen.py @@ -156,3 +156,4 @@ complexNumMultiply = Generator("Multiplication of 2 complex numbers", 64, "(x + geometricprogression=Generator("Geometric Progression", 65, "Initial value,Common Ratio,nth Term,Sum till nth term =", "a,r,ar^n-1,sum(ar^n-1", geomProgrFunc) geometricMean=Generator("Geometric Mean of N Numbers",66,"Geometric mean of n numbers A1 , A2 , ... , An = ","(A1*A2*...An)^(1/n) = ans",geometricMeanFunc) harmonicMean=Generator("Harmonic Mean of N Numbers",67,"Harmonic mean of n numbers A1 , A2 , ... , An = "," n/((1/A1) + (1/A2) + ... + (1/An)) = ans",harmonicMeanFunc) +sectorArea=Generator("Area of a Sector",68,"Area of a sector with radius, r and angle, a ","Area",sectorAreaFunc) From d56f20cf0a2c518460a0fd0f121b114b90ff7b70 Mon Sep 17 00:00:00 2001 From: Jayesh Vasudeva <42416623+0tist@users.noreply.github.com> Date: Mon, 19 Oct 2020 11:15:47 +0530 Subject: [PATCH 07/23] Update mathgen.py --- mathgenerator/mathgen.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mathgenerator/mathgen.py b/mathgenerator/mathgen.py index 0e813a6..e015c81 100644 --- a/mathgenerator/mathgen.py +++ b/mathgenerator/mathgen.py @@ -156,3 +156,5 @@ complexNumMultiply = Generator("Multiplication of 2 complex numbers", 64, "(x + geometricprogression=Generator("Geometric Progression", 65, "Initial value,Common Ratio,nth Term,Sum till nth term =", "a,r,ar^n-1,sum(ar^n-1", geomProgrFunc) geometricMean=Generator("Geometric Mean of N Numbers",66,"Geometric mean of n numbers A1 , A2 , ... , An = ","(A1*A2*...An)^(1/n) = ans",geometricMeanFunc) harmonicMean=Generator("Harmonic Mean of N Numbers",67,"Harmonic mean of n numbers A1 , A2 , ... , An = "," n/((1/A1) + (1/A2) + ... + (1/An)) = ans",harmonicMeanFunc) +eucldianNorm=Generator("Euclidian norm or L2 norm of a vector", 68, "Euclidian Norm of a vector V:[v1, v2, ......., vn]", "sqrt(v1^2 + v2^2 ........ +vn^2)", euclidianNorm) +angleBtwVectors=Generator("Angle between 2 vectors", 69, "Angle Between 2 vectors V1=[v11, v12, ..., v1n] and V2=[v21, v22, ....., v2n]", "V1.V2 / (euclidNorm(V1)*euclidNorm(V2))", AngleBtwVectors) From 07cae1b56b7da4882d478cdd951909736928c00f Mon Sep 17 00:00:00 2001 From: Jayesh Vasudeva <42416623+0tist@users.noreply.github.com> Date: Mon, 19 Oct 2020 11:17:40 +0530 Subject: [PATCH 08/23] Add files via upload --- mathgenerator/funcs/AngleBtwVectors.py | 16 ++++++++++++++++ mathgenerator/funcs/eucldianNorm.py | 7 +++++++ 2 files changed, 23 insertions(+) create mode 100644 mathgenerator/funcs/AngleBtwVectors.py create mode 100644 mathgenerator/funcs/eucldianNorm.py diff --git a/mathgenerator/funcs/AngleBtwVectors.py b/mathgenerator/funcs/AngleBtwVectors.py new file mode 100644 index 0000000..09e0a11 --- /dev/null +++ b/mathgenerator/funcs/AngleBtwVectors.py @@ -0,0 +1,16 @@ +import eucldianNorm +import math +from .__init__ import * + + +def AngleBtwVectors(v1: list, v2: list): + sum = 0 + for i in v1: + for j in v2: + sum += i * j + + mags = euclidianNorm(v1) * euclidianNorm(v2) + problem = f"angle between the vectors {v1} and {v2} is:" + solution = math.acos(sum / mags) + # would return the answer in radians + return problem, solution diff --git a/mathgenerator/funcs/eucldianNorm.py b/mathgenerator/funcs/eucldianNorm.py new file mode 100644 index 0000000..b672add --- /dev/null +++ b/mathgenerator/funcs/eucldianNorm.py @@ -0,0 +1,7 @@ +from .__init__ import * + + +def euclidianNorm(v1: list): + problem = f"Euclidian norm or L2 norm of the vector{v1} is:" + solution = sqrt(sum([i**2 for i in v1])) + return problem, solution From 94e35c24e6c392d4e5e4318bd4c1fb843686a369 Mon Sep 17 00:00:00 2001 From: Souvikdeb2612 <62352386+Souvikdeb2612@users.noreply.github.com> Date: Mon, 19 Oct 2020 11:44:34 +0530 Subject: [PATCH 09/23] Update sectorAreaFunc.py --- mathgenerator/funcs/sectorAreaFunc.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/mathgenerator/funcs/sectorAreaFunc.py b/mathgenerator/funcs/sectorAreaFunc.py index a4337b4..aaf4573 100644 --- a/mathgenerator/funcs/sectorAreaFunc.py +++ b/mathgenerator/funcs/sectorAreaFunc.py @@ -1,7 +1,5 @@ .__init__ import * -import random -import math def sectorAreaFunc(maxRadius = 49,maxAngle = 359): Radius = random.randint(1, maxRadius) Angle = random.randint(1, maxAngle) From d33de18627aa6db74a4ba8ff5d0644e9a07f58f1 Mon Sep 17 00:00:00 2001 From: Souvikdeb2612 <62352386+Souvikdeb2612@users.noreply.github.com> Date: Mon, 19 Oct 2020 11:45:49 +0530 Subject: [PATCH 10/23] Created mean and median functions --- mathgenerator/funcs/meanMedianFunc.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 mathgenerator/funcs/meanMedianFunc.py diff --git a/mathgenerator/funcs/meanMedianFunc.py b/mathgenerator/funcs/meanMedianFunc.py new file mode 100644 index 0000000..5f06a1c --- /dev/null +++ b/mathgenerator/funcs/meanMedianFunc.py @@ -0,0 +1,13 @@ +.__init__ import * + +def meanMedianFunc(maxlen = 10): + randomlist = random.sample(range(1, 99), maxlen) + total = 0 + for n in randomlist: + total = total + n + mean = total/10 + problem = f"Given the series of numbers {randomlist}. find the arithmatic mean and mdian of the series" + randomlist.sort() + median = (randomlist[4]+randomlist[5])/2 + solution = f"Arithmetic mean of the series is {mean} and Arithmetic median of this series is {median}" + return problem, solution From 5e18c82b7be446e30a095a869ece911d0f7787c6 Mon Sep 17 00:00:00 2001 From: Souvikdeb2612 <62352386+Souvikdeb2612@users.noreply.github.com> Date: Mon, 19 Oct 2020 11:46:30 +0530 Subject: [PATCH 11/23] Update __init__.py --- mathgenerator/funcs/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mathgenerator/funcs/__init__.py b/mathgenerator/funcs/__init__.py index aab32a8..576abee 100644 --- a/mathgenerator/funcs/__init__.py +++ b/mathgenerator/funcs/__init__.py @@ -72,3 +72,4 @@ from .geomProgrFunc import * from .geometricMeanFunc import * from .harmonicMeanFunc import * from .sectorAreaFunc import* +from .meanMedianFunc import* From c36d7de7d9c4d1383c3e9dba133b3beee63f081c Mon Sep 17 00:00:00 2001 From: Gourav2000 Date: Mon, 19 Oct 2020 11:47:50 +0530 Subject: [PATCH 12/23] added matrix Inversion --- dev-requirements.txt | 3 +- mathgenerator/funcs/__init__.py | 1 + mathgenerator/funcs/matrixInversion.py | 68 ++++++++++++++++++++++++++ mathgenerator/mathgen.py | 2 + 4 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 mathgenerator/funcs/matrixInversion.py diff --git a/dev-requirements.txt b/dev-requirements.txt index c29cf4e..7b33738 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -1,4 +1,5 @@ pytest hypothesis flake8 -autopep8 \ No newline at end of file +autopep8 +sympy \ No newline at end of file diff --git a/mathgenerator/funcs/__init__.py b/mathgenerator/funcs/__init__.py index efb1ce7..ac2c2a8 100644 --- a/mathgenerator/funcs/__init__.py +++ b/mathgenerator/funcs/__init__.py @@ -71,3 +71,4 @@ from .multiplyComplexNumbersFunc import * from .geomProgrFunc import * from .geometricMeanFunc import * from .harmonicMeanFunc import * +from .matrixInversion import * diff --git a/mathgenerator/funcs/matrixInversion.py b/mathgenerator/funcs/matrixInversion.py new file mode 100644 index 0000000..7de9f15 --- /dev/null +++ b/mathgenerator/funcs/matrixInversion.py @@ -0,0 +1,68 @@ +from .__init__ import * + +def matrixInversion(SquareMatrixDimension=3, MaxMatrixElement=99, OnlyIntegerElementsInInvertedMatrix=False): + if OnlyIntegerElementsInInvertedMatrix is True: + isItOk = False + Mat = list() + while (isItOk is False): + Mat = list() + for i in range(0, SquareMatrixDimension): + z = list() + for j in range(0, SquareMatrixDimension): + z.append(0) + z[i] = 1 + Mat.append(z) + MaxAllowedMatrixElement = math.ceil( + pow(MaxMatrixElement, 1 / (SquareMatrixDimension))) + randomlist = random.sample( + range(0, MaxAllowedMatrixElement + 1), SquareMatrixDimension) + + for i in range(0, SquareMatrixDimension): + if i == SquareMatrixDimension - 1: + Mat[0] = [j + (k * randomlist[i]) + for j, k in zip(Mat[0], Mat[i])] + else: + Mat[i + 1] = [j + (k * randomlist[i]) + for j, k in zip(Mat[i + 1], Mat[i])] + + for i in range(1, SquareMatrixDimension - 1): + Mat[i] = [sum(i) + for i in zip(Mat[SquareMatrixDimension - 1], Mat[i])] + + isItOk = True + for i in Mat: + for j in i: + if j > MaxMatrixElement: + isItOk = False + break + if isItOk is False: + break + + random.shuffle(Mat) + Mat = sympy.Matrix(Mat) + Mat = sympy.Matrix.transpose(Mat) + Mat = Mat.tolist() + random.shuffle(Mat) + Mat = sympy.Matrix(Mat) + Mat = sympy.Matrix.transpose(Mat) + + else: + randomlist = list(sympy.primerange(0, MaxMatrixElement + 1)) + plist = random.sample(randomlist, SquareMatrixDimension) + randomlist = random.sample( + range(0, MaxMatrixElement + 1), SquareMatrixDimension * SquareMatrixDimension) + randomlist = list(set(randomlist) - set(plist)) + n_list = random.sample( + randomlist, SquareMatrixDimension * (SquareMatrixDimension - 1)) + Mat = list() + for i in range(0, SquareMatrixDimension): + z = list() + z.append(plist[i]) + for j in range(0, SquareMatrixDimension - 1): + z.append(n_list[(i * SquareMatrixDimension) + j - i]) + random.shuffle(z) + Mat.append(z) + Mat = sympy.Matrix(Mat) + problem = 'Inverse of Matrix ' + str(Mat) + ' is:' + solution = str(sympy.Matrix.inv(Mat)) + return problem, solution \ No newline at end of file diff --git a/mathgenerator/mathgen.py b/mathgenerator/mathgen.py index 0e813a6..004fbcc 100644 --- a/mathgenerator/mathgen.py +++ b/mathgenerator/mathgen.py @@ -1,6 +1,7 @@ import random import math import fractions +import sympy from .funcs import * genList = [] @@ -156,3 +157,4 @@ complexNumMultiply = Generator("Multiplication of 2 complex numbers", 64, "(x + geometricprogression=Generator("Geometric Progression", 65, "Initial value,Common Ratio,nth Term,Sum till nth term =", "a,r,ar^n-1,sum(ar^n-1", geomProgrFunc) geometricMean=Generator("Geometric Mean of N Numbers",66,"Geometric mean of n numbers A1 , A2 , ... , An = ","(A1*A2*...An)^(1/n) = ans",geometricMeanFunc) harmonicMean=Generator("Harmonic Mean of N Numbers",67,"Harmonic mean of n numbers A1 , A2 , ... , An = "," n/((1/A1) + (1/A2) + ... + (1/An)) = ans",harmonicMeanFunc) +invertmatrix = Generator("Inverse of a Matrix", 68, "Inverse of a matrix A is", "A^(-1)", matrixInversion) \ No newline at end of file From f8cc8b3976f2fa0caf9ca25b5ad2cd260d9bd6b2 Mon Sep 17 00:00:00 2001 From: Souvikdeb2612 <62352386+Souvikdeb2612@users.noreply.github.com> Date: Mon, 19 Oct 2020 11:48:35 +0530 Subject: [PATCH 13/23] Update mathgen.py --- mathgenerator/mathgen.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mathgenerator/mathgen.py b/mathgenerator/mathgen.py index 96b8ecb..98a605b 100644 --- a/mathgenerator/mathgen.py +++ b/mathgenerator/mathgen.py @@ -157,3 +157,4 @@ geometricprogression=Generator("Geometric Progression", 65, "Initial value,Commo geometricMean=Generator("Geometric Mean of N Numbers",66,"Geometric mean of n numbers A1 , A2 , ... , An = ","(A1*A2*...An)^(1/n) = ans",geometricMeanFunc) harmonicMean=Generator("Harmonic Mean of N Numbers",67,"Harmonic mean of n numbers A1 , A2 , ... , An = "," n/((1/A1) + (1/A2) + ... + (1/An)) = ans",harmonicMeanFunc) sectorArea=Generator("Area of a Sector",68,"Area of a sector with radius, r and angle, a ","Area",sectorAreaFunc) +meanMedian=Generator("Mean and Median",69,"Mean and median of given set of numbers","Mean, Median",meanMedianFunc) From cb2f3e7abe7514e4697d75a9ff0bd5bd2b2453e3 Mon Sep 17 00:00:00 2001 From: himanshu1603 Date: Mon, 19 Oct 2020 12:16:18 +0530 Subject: [PATCH 14/23] added absolute difference --- mathgenerator/funcs/absoluteDifferenceFunc.py | 10 ++++++++++ mathgenerator/mathgen.py | 1 + 2 files changed, 11 insertions(+) create mode 100644 mathgenerator/funcs/absoluteDifferenceFunc.py diff --git a/mathgenerator/funcs/absoluteDifferenceFunc.py b/mathgenerator/funcs/absoluteDifferenceFunc.py new file mode 100644 index 0000000..d578d19 --- /dev/null +++ b/mathgenerator/funcs/absoluteDifferenceFunc.py @@ -0,0 +1,10 @@ +from .__init__ import * + +def absoluteDifferenceFunc (maxA = 100, maxB = 100): + a = random.randint(-1*maxA, maxA) + b = random.randint(-1*maxB, maxB) + absDiff = abs(a-b) + + problem = "Absolute difference between numbers " + str(a) + " and " + str(b) + " = " + solution = absDiff + return problem, solution \ No newline at end of file diff --git a/mathgenerator/mathgen.py b/mathgenerator/mathgen.py index 0e813a6..ad94464 100644 --- a/mathgenerator/mathgen.py +++ b/mathgenerator/mathgen.py @@ -156,3 +156,4 @@ complexNumMultiply = Generator("Multiplication of 2 complex numbers", 64, "(x + geometricprogression=Generator("Geometric Progression", 65, "Initial value,Common Ratio,nth Term,Sum till nth term =", "a,r,ar^n-1,sum(ar^n-1", geomProgrFunc) geometricMean=Generator("Geometric Mean of N Numbers",66,"Geometric mean of n numbers A1 , A2 , ... , An = ","(A1*A2*...An)^(1/n) = ans",geometricMeanFunc) harmonicMean=Generator("Harmonic Mean of N Numbers",67,"Harmonic mean of n numbers A1 , A2 , ... , An = "," n/((1/A1) + (1/A2) + ... + (1/An)) = ans",harmonicMeanFunc) +absoluteDifference=Generator("Absolute difference between two numbers", 68, "Absolute difference betweeen two numbers a and b =", "|a-b|", absoluteDifferenceFunc) From 13c19f480fc685f5f168a6e517a89b863714d83c Mon Sep 17 00:00:00 2001 From: Stefano Furin Date: Mon, 19 Oct 2020 09:13:35 +0200 Subject: [PATCH 15/23] fix generators numbering --- README.md | 10 ++++++++-- mathgenerator/mathgen.py | 18 +++++++++--------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 6777b5c..1afacb8 100644 --- a/README.md +++ b/README.md @@ -91,5 +91,11 @@ problem, solution = mathgen.genById(0) | 57 | Trigonometric Values | What is cos(60)? | 1/2 | basicTrigonometry | | 58 | Sum of Angles of Polygon | Sum of angles of polygon with 5 sides = | 540 | sumOfAnglesOfPolygon | | 59 | Mean,Standard Deviation,Variance | Find the mean,standard deviation and variance for the data[38, 29, 43, 25, 7, 10, 13, 14, 43, 44, 30, 42, 48, 48, 42] | The Mean is 31.733333333333334 , Standard Deviation is 199.26222222222222, Variance is 14.116027140177303 | dataSummary | -| 59 | Surface Area of Sphere | Surface area of Sphere with radius = 13m is | 2123.7166338267 m^2 | surfaceAreaSphereGen | -| 60 | Volume of Sphere | Volume of sphere with radius 84 m = | 2482712.7095377133 m^3 | volumeSphere | \ No newline at end of file +| 60 | Surface Area of Sphere | Surface area of Sphere with radius = 12m is | 1809.5573684677208 m^2 | surfaceAreaSphereGen | +| 61 | Volume of Sphere | Volume of sphere with radius 14 m = | 11494.040321933857 m^3 | volumeSphere | +| 62 | nth Fibonacci number | What is the 17th Fibonacci number? | 1597 | nthFibonacciNumberGen | +| 64 | Binary to Hexidecimal | 00 | 0x0 | binaryToHex | +| 65 | Multiplication of 2 complex numbers | (13-8j) * (-7-5j) = | (-131-9j) | complexNumMultiply | +| 66 | Geometric Progression | For the given GP [12, 48, 192, 768, 3072, 12288] ,Find the value of a,common ratio,9th term value, sum upto 11th term | The value of a is 12, common ratio is 4 , 9th term is 786432 , sum upto 11th term is 16777212.0 | geometricprogression | +| 67 | Geometric Mean of N Numbers | Geometric mean of 2 numbers 42 and 40 = | (42*40)^(1/2) = 40.98780306383839 | geometricMean | +| 68 | Harmonic Mean of N Numbers | Harmonic mean of 4 numbers 53 , 62 , 72 , 35 = | 4/((1/53) + (1/62) + (1/72) + (1/35)) = 51.64137311701554 | harmonicMean | \ No newline at end of file diff --git a/mathgenerator/mathgen.py b/mathgenerator/mathgen.py index 0e813a6..a10660d 100644 --- a/mathgenerator/mathgen.py +++ b/mathgenerator/mathgen.py @@ -146,13 +146,13 @@ sumOfAnglesOfPolygon = Generator("Sum of Angles of Polygon", 58, dataSummary = Generator("Mean,Standard Deviation,Variance", 59, "a,b,c", "Mean:a+b+c/3,Std,Var", dataSummaryFunc) surfaceAreaSphereGen = Generator( - "Surface Area of Sphere", 59, "Surface area of sphere with radius = a units is", "d units^2", surfaceAreaSphere) -volumeSphere = Generator("Volume of Sphere", 60, + "Surface Area of Sphere", 60, "Surface area of sphere with radius = a units is", "d units^2", surfaceAreaSphere) +volumeSphere = Generator("Volume of Sphere", 61, "Volume of sphere with radius r m = ", "(4*pi/3)*r*r*r", volumeSphereFunc) -nthFibonacciNumberGen = Generator("nth Fibonacci number", 61, "What is the nth Fibonacci number", "Fn", nthFibonacciNumberFunc) -profitLossPercent = Generator("Profit or Loss Percent", 62, "Profit/ Loss percent when CP = cp and SP = sp is: ", "percent", profitLossPercentFunc) -binaryToHex = Generator("Binary to Hexidecimal", 63, "Hexidecimal of a=", "b", binaryToHexFunc) -complexNumMultiply = Generator("Multiplication of 2 complex numbers", 64, "(x + j) (y + j) = ", "xy + xj + yj -1", multiplyComplexNumbersFunc) -geometricprogression=Generator("Geometric Progression", 65, "Initial value,Common Ratio,nth Term,Sum till nth term =", "a,r,ar^n-1,sum(ar^n-1", geomProgrFunc) -geometricMean=Generator("Geometric Mean of N Numbers",66,"Geometric mean of n numbers A1 , A2 , ... , An = ","(A1*A2*...An)^(1/n) = ans",geometricMeanFunc) -harmonicMean=Generator("Harmonic Mean of N Numbers",67,"Harmonic mean of n numbers A1 , A2 , ... , An = "," n/((1/A1) + (1/A2) + ... + (1/An)) = ans",harmonicMeanFunc) +nthFibonacciNumberGen = Generator("nth Fibonacci number", 62, "What is the nth Fibonacci number", "Fn", nthFibonacciNumberFunc) +profitLossPercent = Generator("Profit or Loss Percent", 63, "Profit/ Loss percent when CP = cp and SP = sp is: ", "percent", profitLossPercentFunc) +binaryToHex = Generator("Binary to Hexidecimal", 64, "Hexidecimal of a=", "b", binaryToHexFunc) +complexNumMultiply = Generator("Multiplication of 2 complex numbers", 65, "(x + j) (y + j) = ", "xy + xj + yj -1", multiplyComplexNumbersFunc) +geometricprogression=Generator("Geometric Progression", 66, "Initial value,Common Ratio,nth Term,Sum till nth term =", "a,r,ar^n-1,sum(ar^n-1", geomProgrFunc) +geometricMean=Generator("Geometric Mean of N Numbers",67,"Geometric mean of n numbers A1 , A2 , ... , An = ","(A1*A2*...An)^(1/n) = ans",geometricMeanFunc) +harmonicMean=Generator("Harmonic Mean of N Numbers",68,"Harmonic mean of n numbers A1 , A2 , ... , An = "," n/((1/A1) + (1/A2) + ... + (1/An)) = ans",harmonicMeanFunc) From ab960534f9de120c21282eb657aa47a97052e291 Mon Sep 17 00:00:00 2001 From: midhun varman Date: Mon, 19 Oct 2020 13:04:44 +0530 Subject: [PATCH 16/23] added vector dot product --- mathgenerator/funcs/__init__.py | 1 + mathgenerator/funcs/vectorDotFunc.py | 13 +++++++++++++ mathgenerator/mathgen.py | 1 + 3 files changed, 15 insertions(+) create mode 100644 mathgenerator/funcs/vectorDotFunc.py diff --git a/mathgenerator/funcs/__init__.py b/mathgenerator/funcs/__init__.py index efb1ce7..99ab6b4 100644 --- a/mathgenerator/funcs/__init__.py +++ b/mathgenerator/funcs/__init__.py @@ -71,3 +71,4 @@ from .multiplyComplexNumbersFunc import * from .geomProgrFunc import * from .geometricMeanFunc import * from .harmonicMeanFunc import * +from .vectorDotFunc import * diff --git a/mathgenerator/funcs/vectorDotFunc.py b/mathgenerator/funcs/vectorDotFunc.py new file mode 100644 index 0000000..a15cd75 --- /dev/null +++ b/mathgenerator/funcs/vectorDotFunc.py @@ -0,0 +1,13 @@ +from .__init__ import * + + +def vectorDotFunc(minVal=-20, maxVal=20): + a = [random.randint(minVal, maxVal) for i in range(3)] + b = [random.randint(minVal, maxVal) for i in range(3)] + c = [a[0] * b[0], + a[1] * b[1] , + a[2] * b[2] ] + + problem = str(a) + " . " + str(b) + " = " + solution = str(c) + return problem, solution diff --git a/mathgenerator/mathgen.py b/mathgenerator/mathgen.py index 0e813a6..35c657f 100644 --- a/mathgenerator/mathgen.py +++ b/mathgenerator/mathgen.py @@ -156,3 +156,4 @@ complexNumMultiply = Generator("Multiplication of 2 complex numbers", 64, "(x + geometricprogression=Generator("Geometric Progression", 65, "Initial value,Common Ratio,nth Term,Sum till nth term =", "a,r,ar^n-1,sum(ar^n-1", geomProgrFunc) geometricMean=Generator("Geometric Mean of N Numbers",66,"Geometric mean of n numbers A1 , A2 , ... , An = ","(A1*A2*...An)^(1/n) = ans",geometricMeanFunc) harmonicMean=Generator("Harmonic Mean of N Numbers",67,"Harmonic mean of n numbers A1 , A2 , ... , An = "," n/((1/A1) + (1/A2) + ... + (1/An)) = ans",harmonicMeanFunc) +vectorDot = Generator("Dot Product of 2 Vectors",68, "a . b = ", "c", vectorDotFunc) From e77af6cdef48c660d3a82b80b22d983416da69e7 Mon Sep 17 00:00:00 2001 From: midhun varman Date: Mon, 19 Oct 2020 15:01:19 +0530 Subject: [PATCH 17/23] added dot product --- mathgenerator/funcs/vectorDotFunc.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mathgenerator/funcs/vectorDotFunc.py b/mathgenerator/funcs/vectorDotFunc.py index a15cd75..0364c65 100644 --- a/mathgenerator/funcs/vectorDotFunc.py +++ b/mathgenerator/funcs/vectorDotFunc.py @@ -4,9 +4,7 @@ from .__init__ import * def vectorDotFunc(minVal=-20, maxVal=20): a = [random.randint(minVal, maxVal) for i in range(3)] b = [random.randint(minVal, maxVal) for i in range(3)] - c = [a[0] * b[0], - a[1] * b[1] , - a[2] * b[2] ] + c = a[0] * b[0] + a[1] * b[1] + a[2] * b[2] problem = str(a) + " . " + str(b) + " = " solution = str(c) From fe0c86b33e09ee962c373e3ba01b9c0e1bd77a94 Mon Sep 17 00:00:00 2001 From: lukew3 Date: Mon, 19 Oct 2020 09:28:09 -0400 Subject: [PATCH 18/23] Fix euclidianNorm and angleBtwVectors issues --- mathgenerator/funcs/__init__.py | 2 ++ .../funcs/{AngleBtwVectors.py => angleBtwVectorsFunc.py} | 6 +++--- .../funcs/{eucldianNorm.py => euclidianNormFunc.py} | 2 +- mathgenerator/mathgen.py | 4 ++-- 4 files changed, 8 insertions(+), 6 deletions(-) rename mathgenerator/funcs/{AngleBtwVectors.py => angleBtwVectorsFunc.py} (65%) rename mathgenerator/funcs/{eucldianNorm.py => euclidianNormFunc.py} (83%) diff --git a/mathgenerator/funcs/__init__.py b/mathgenerator/funcs/__init__.py index efb1ce7..25fb266 100644 --- a/mathgenerator/funcs/__init__.py +++ b/mathgenerator/funcs/__init__.py @@ -71,3 +71,5 @@ from .multiplyComplexNumbersFunc import * from .geomProgrFunc import * from .geometricMeanFunc import * from .harmonicMeanFunc import * +from .euclidianNormFunc import * +from .angleBtwVectorsFunc import * diff --git a/mathgenerator/funcs/AngleBtwVectors.py b/mathgenerator/funcs/angleBtwVectorsFunc.py similarity index 65% rename from mathgenerator/funcs/AngleBtwVectors.py rename to mathgenerator/funcs/angleBtwVectorsFunc.py index 09e0a11..bd2d0b5 100644 --- a/mathgenerator/funcs/AngleBtwVectors.py +++ b/mathgenerator/funcs/angleBtwVectorsFunc.py @@ -1,15 +1,15 @@ -import eucldianNorm +from .euclidianNormFunc import euclidianNormFunc import math from .__init__ import * -def AngleBtwVectors(v1: list, v2: list): +def angleBtwVectorsFunc(v1: list, v2: list): sum = 0 for i in v1: for j in v2: sum += i * j - mags = euclidianNorm(v1) * euclidianNorm(v2) + mags = euclidianNormFunc(v1) * euclidianNormFunc(v2) problem = f"angle between the vectors {v1} and {v2} is:" solution = math.acos(sum / mags) # would return the answer in radians diff --git a/mathgenerator/funcs/eucldianNorm.py b/mathgenerator/funcs/euclidianNormFunc.py similarity index 83% rename from mathgenerator/funcs/eucldianNorm.py rename to mathgenerator/funcs/euclidianNormFunc.py index b672add..f66329e 100644 --- a/mathgenerator/funcs/eucldianNorm.py +++ b/mathgenerator/funcs/euclidianNormFunc.py @@ -1,7 +1,7 @@ from .__init__ import * -def euclidianNorm(v1: list): +def euclidianNormFunc(v1: list): problem = f"Euclidian norm or L2 norm of the vector{v1} is:" solution = sqrt(sum([i**2 for i in v1])) return problem, solution diff --git a/mathgenerator/mathgen.py b/mathgenerator/mathgen.py index 4062a96..fa8fd91 100644 --- a/mathgenerator/mathgen.py +++ b/mathgenerator/mathgen.py @@ -156,5 +156,5 @@ complexNumMultiply = Generator("Multiplication of 2 complex numbers", 65, "(x + geometricprogression=Generator("Geometric Progression", 66, "Initial value,Common Ratio,nth Term,Sum till nth term =", "a,r,ar^n-1,sum(ar^n-1", geomProgrFunc) geometricMean=Generator("Geometric Mean of N Numbers",67,"Geometric mean of n numbers A1 , A2 , ... , An = ","(A1*A2*...An)^(1/n) = ans",geometricMeanFunc) harmonicMean=Generator("Harmonic Mean of N Numbers",68,"Harmonic mean of n numbers A1 , A2 , ... , An = "," n/((1/A1) + (1/A2) + ... + (1/An)) = ans",harmonicMeanFunc) -eucldianNorm=Generator("Euclidian norm or L2 norm of a vector", 69, "Euclidian Norm of a vector V:[v1, v2, ......., vn]", "sqrt(v1^2 + v2^2 ........ +vn^2)", euclidianNorm) -angleBtwVectors=Generator("Angle between 2 vectors", 70, "Angle Between 2 vectors V1=[v11, v12, ..., v1n] and V2=[v21, v22, ....., v2n]", "V1.V2 / (euclidNorm(V1)*euclidNorm(V2))", AngleBtwVectors) +eucldianNorm=Generator("Euclidian norm or L2 norm of a vector", 69, "Euclidian Norm of a vector V:[v1, v2, ......., vn]", "sqrt(v1^2 + v2^2 ........ +vn^2)", euclidianNormFunc) +angleBtwVectors=Generator("Angle between 2 vectors", 70, "Angle Between 2 vectors V1=[v11, v12, ..., v1n] and V2=[v21, v22, ....., v2n]", "V1.V2 / (euclidNorm(V1)*euclidNorm(V2))", angleBtwVectorsFunc) From 3208d6d485f38b230d721160d3cbc27ecc426a30 Mon Sep 17 00:00:00 2001 From: lukew3 Date: Mon, 19 Oct 2020 09:30:38 -0400 Subject: [PATCH 19/23] Added to __init__.py --- mathgenerator/funcs/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mathgenerator/funcs/__init__.py b/mathgenerator/funcs/__init__.py index 25fb266..bb75b5c 100644 --- a/mathgenerator/funcs/__init__.py +++ b/mathgenerator/funcs/__init__.py @@ -73,3 +73,4 @@ from .geometricMeanFunc import * from .harmonicMeanFunc import * from .euclidianNormFunc import * from .angleBtwVectorsFunc import * +from .absoluteDifferenceFunc import * From 16ebfb777c6b81aec9bed9bee05e9cb3761af28c Mon Sep 17 00:00:00 2001 From: Luke Weiler Date: Mon, 19 Oct 2020 09:40:13 -0400 Subject: [PATCH 20/23] Update mathgen.py --- mathgenerator/mathgen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mathgenerator/mathgen.py b/mathgenerator/mathgen.py index 0b84297..cdad10d 100644 --- a/mathgenerator/mathgen.py +++ b/mathgenerator/mathgen.py @@ -1,7 +1,7 @@ import random import math import fractions -from funcs import * +from .funcs import * genList = [] From 092088f8b1364ad299c1c966a8144d5933f036ea Mon Sep 17 00:00:00 2001 From: D-T-666 Date: Mon, 19 Oct 2020 17:43:04 +0400 Subject: [PATCH 21/23] =?UTF-8?q?=F0=9F=A4=96=20made=20makeReadme.py=20ful?= =?UTF-8?q?ly=20automated?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 136 +++++++------- makeReadme.py | 50 ++++-- .../funcs/matrixMultiplicationFunc.py | 7 +- mathgenerator/funcs/moduloFunc.py | 2 +- mathgenerator/funcs/profitLossPercentFunc.py | 2 + mathgenerator/mathgen.py | 167 ++++++------------ 6 files changed, 177 insertions(+), 187 deletions(-) diff --git a/README.md b/README.md index 6777b5c..6c692b0 100644 --- a/README.md +++ b/README.md @@ -30,66 +30,80 @@ problem, solution = mathgen.genById(0) | Id | Skill | Example problem | Example Solution | Function Name | |------|-----------------------------------|--------------------|-----------------------|--------------------------| -| 0 | Addition | 42+2= | 44 | addition | -| 1 | Subtraction | 32-26= | 6 | subtraction | -| 2 | Multiplication | 77*1= | 77 | multiplication | -| 3 | Division | 66/9= | 7.333333333333333 | division | -| 4 | Binary Complement 1s | 1010000 | 0101111 | binaryComplement1s | -| 5 | Modulo Division | 61%35= | 26 | moduloDivision | -| 6 | Square Root | sqrt(1)= | 1 | squareRoot | -| 7 | Power Rule Differentiation | 5x^5 | 25x^4 | powerRuleDifferentiation | -| 8 | Square | 20^2= | 400 | square | -| 9 | LCM (Least Common Multiple) | LCM of 19 and 5 = | 95 | lcm | -| 10 | GCD (Greatest Common Denominator) | GCD of 10 and 11 = | 1 | gcd | -| 11 | Basic Algebra | 3x + 7 = 8 | 1/3 | basicAlgebra | -| 12 | Logarithm | log2(128) | 7 | log | -| 13 | Easy Division | 306/18 = | 17 | intDivision | -| 14 | Decimal to Binary | Binary of 28= | 11100 | decimalToBinary | -| 15 | Binary to Decimal | 10001101 | 141 | binaryToDecimal | -| 16 | Fraction Division | (4/1)/(6/3) | 2 | fractionDivision | -| 17 | Integer Multiplication with 2x2 Matrix | 5 * [[10, 3], [0, 1]] = | [[50,15],[0,5]] | intMatrix22Multiplication | -| 18 | Area of Triangle | Area of triangle with side lengths: 13 2 14 = | 11.659223816361019 | areaOfTriangle | -| 19 | Triangle exists check | Does triangle with sides 3, 4 and 25 exist? | No | doesTriangleExist | -| 20 | Midpoint of the two point | (4,-11),(17,-5)= | (10.5,-8.0) | midPointOfTwoPoint | +[//]: # list start +| 0 | Addition | 33+23= | 56 | addition | +| 1 | Subtraction | 14-1= | 13 | subtraction | +| 2 | Multiplication | 52*1= | 52 | multiplication | +| 3 | Division | 14/26= | 0.5384615384615384 | division | +| 4 | Binary Complement 1s | 0110111= | 1001000 | binaryComplement1s | +| 5 | Modulo Division | 23%70= | 23 | moduloDivision | +| 6 | Square Root | sqrt(121)= | 11 | squareRoot | +| 7 | Power Rule Differentiation | 3x^2 + 3x^5 + 1x^2 + 6x^4 + 6x^3 | 6x^1 + 15x^4 + 2x^1 + 24x^3 + 18x^2 | powerRuleDifferentiation | +| 8 | Square | 18^2= | 324 | square | +| 9 | LCM (Least Common Multiple) | LCM of 17 and 11 = | 187 | lcm | +| 10 | GCD (Greatest Common Denominator) | GCD of 15 and 12 = | 3 | gcd | +| 11 | Basic Algebra | 2x + 3 = 10 | 7/2 | basicAlgebra | +| 12 | Logarithm | log2(32) | 5 | log | +| 13 | Easy Division | 196/14 = | 14 | intDivision | +| 14 | Decimal to Binary | Binary of 61= | 111101 | decimalToBinary | +| 15 | Binary to Decimal | 1 | 1 | binaryToDecimal | +| 16 | Fraction Division | (2/1)/(10/5) | 1 | fractionDivision | +| 17 | Integer Multiplication with 2x2 Matrix | 16 * [[4, 1], [1, 2]] = | [[64,16],[16,32]] | intMatrix22Multiplication | +| 18 | Area of Triangle | Area of triangle with side lengths: 15 13 11 = | 69.62892717829278 | areaOfTriangle | +| 19 | Triangle exists check | Does triangle with sides 35, 14 and 37 exist? | Yes | doesTriangleExist | +| 20 | Midpoint of the two point | (15,5),(9,10)= | (12.0,7.5) | midPointOfTwoPoint | | 21 | Factoring Quadratic | x^2-12x+35 | (x-7)(x-5) | factoring | -| 22 | Third Angle of Triangle | Third angle of triangle with angles 20 and 62 = | 98 | thirdAngleOfTriangle | -| 23 | Solve a System of Equations in R^2 | 5x - 7y = -84, 4x + 5y = 7 | x = -7, y = 7 | systemOfEquations | -| 24 | Distance between 2 points | Find the distance between (5, -18) and (1, 19) | sqrt(1385) | distance2Point | -| 25 | Pythagorean Theorem | The hypotenuse of a right triangle given the other two lengths 15 and 5 = | 15.81 | pythagoreanTheorem | -| 26 | Linear Equations | -6x + -17y = -220 --13x + -19y = -120 | x = -20, y = 20 | linearEquations | -| 27 | Prime Factorisation | Find prime factors of 62 | [2, 31] | primeFactors | -| 28 | Fraction Multiplication | (8/4)*(1/2) | 1 | fractionMultiplication | -| 29 | Angle of a Regular Polygon | Find the angle of a regular polygon with 19 sides | 161.05 | angleRegularPolygon | -| 30 | Combinations of Objects | Number of combinations from 12 objects picked 1 at a time | 12 | combinations | -| 31 | Factorial | 0! = | 1 | factorial | -| 32 | Surface Area of Cube | Surface area of cube with side = 8m is | 384 m^2 | surfaceAreaCubeGen | -| 33 | Surface Area of Cuboid | Surface area of cuboid with sides = 18m, 17m, 1m is | 682 m^2 | surfaceAreaCuboidGen | -| 34 | Surface Area of Cylinder | Surface area of cylinder with height = 31m and radius = 1m is | 201 m^2 | surfaceAreaCylinderGen | -| 35 | Volum of Cube | Volume of cube with side = 9m is | 729 m^3 | volumeCubeGen | -| 36 | Volume of Cuboid | Volume of cuboid with sides = 20m, 1m, 10m is | 200 m^3 | volumeCuboidGen | -| 37 | Volume of cylinder | Volume of cylinder with height = 7m and radius = 7m is | 1077 m^3 | volumeCylinderGen | -| 38 | Surface Area of cone | Surface area of cone with height = 47m and radius = 13m is | 2522 m^2 | surfaceAreaConeGen | -| 39 | Volume of cone | Volume of cone with height = 4m and radius = 4m is | 67 m^3 | volumeConeGen | -| 40 | Common Factors | Common Factors of 20 and 90 = | [1, 2, 5, 10] | commonFactors | -| 41 | Intersection of Two Lines | Find the point of intersection of the two lines: y = -3/6x + 1 and y = 0/2x + 6 | (-10, 6) | intersectionOfTwoLines | -| 42 | Permutations | Number of Permutations from 11 objects picked 2 at a time = | 110 | permutations | -| 43 | Cross Product of 2 Vectors | [-19, -3, 2] X [-15, -12, 7] = | [3, 103, 183] | vectorCross | -| 44 | Compare Fractions | Which symbol represents the comparison between 8/6 and 3/1? | < | compareFractions | -| 45 | Simple Interest | Simple interest for a principle amount of 9862 dollars, 4% rate of interest and for a time period of 1 years is = | 394.48 | simpleInterest | -| 46 | Multiplication of two matrices | Multiply
-50367-26-263
88-3760-1961-56
48-569-87-64-92
-84-50-79-1986-13
02812-1473-49
94-90226-3819
2-1179-7798-77
-877072-3264-99
and
3432-6-3246-2378-81-18
-172449-62-507738-98-64
-23-7843 5-83-5 4-92-16
46-47-9252-25-374451-7
2026703796-73498442
-72-15-80-2458-47-4145-69
|
-8245-1057-423-3535-5692034-63291219-5765
6619 5671073723914001-629110147-73876383
1472-16113318-5565-1257410381 638-236992621
159355983465789913170-6487-48572464210618
359230271220614732120-4126082-6354561
3748-1803-1146020725462-8183242311 947
2400 960229502483 952-19744625-55129372
1132-2067223921884-1227681961949-71485677
| matrixMultiplication | -| 47 | Cube Root | cuberoot of 771 upto 2 decimal places is: | 9.17 | CubeRoot | -| 48 | Power Rule Integration | 1x^3 + 8x^8 + 10x^10 | (1/3)x^4 + (8/8)x^9 + (10/10)x^11 + c | powerRuleIntegration | -| 49 | Fourth Angle of Quadrilateral | Fourth angle of quadrilateral with angles 52 , 84, 154 = | 70 | fourthAngleOfQuadrilateral | -| 50 | Quadratic Equation | Zeros of the Quadratic Equation 51x^2+152x+80=0 | [-0.68, -2.3] | quadraticEquationSolve | -| 51 | HCF (Highest Common Factor) | HCF of 11 and 7 = | 1 | hcf | +| 22 | Third Angle of Triangle | Third angle of triangle with angles 37 and 54 = | 89 | thirdAngleOfTriangle | +| 23 | Solve a System of Equations in R^2 | -4x - 8y = 60, -9x + 10y = 51 | x = -9, y = -3 | systemOfEquations | +| 24 | Distance between 2 points | Find the distance between (16, 7) and (19, 14) | sqrt(58) | distance2Point | +| 25 | Pythagorean Theorem | The hypotenuse of a right triangle given the other two lengths 18 and 8 = | 19.70 | pythagoreanTheorem | +| 26 | Linear Equations | -8x + 15y = -109 +6x + -14y = 90 | x = 8, y = -3 | linearEquations | +| 27 | Prime Factorisation | Find prime factors of 130 | [2, 5, 13] | primeFactors | +| 28 | Fraction Multiplication | (8/9)*(3/2) | 4/3 | fractionMultiplication | +| 29 | Angle of a Regular Polygon | Find the angle of a regular polygon with 8 sides | 135.0 | angleRegularPolygon | +| 30 | Combinations of Objects | Number of combinations from 11 objects picked 9 at a time | 55 | combinations | +| 31 | Factorial | 2! = | 2 | factorial | +| 32 | Surface Area of Cube | Surface area of cube with side = 17m is | 1734 m^2 | surfaceAreaCubeGen | +| 33 | Surface Area of Cuboid | Surface area of cuboid with sides = 8m, 4m, 17m is | 472 m^2 | surfaceAreaCuboidGen | +| 34 | Surface Area of Cylinder | Surface area of cylinder with height = 32m and radius = 18m is | 5654 m^2 | surfaceAreaCylinderGen | +| 35 | Volum of Cube | Volume of cube with side = 11m is | 1331 m^3 | volumeCubeGen | +| 36 | Volume of Cuboid | Volume of cuboid with sides = 14m, 19m, 1m is | 266 m^3 | volumeCuboidGen | +| 37 | Volume of cylinder | Volume of cylinder with height = 16m and radius = 18m is | 16286 m^3 | volumeCylinderGen | +| 38 | Surface Area of cone | Surface area of cone with height = 48m and radius = 20m is | 4523 m^2 | surfaceAreaConeGen | +| 39 | Volume of cone | Volume of cone with height = 29m and radius = 6m is | 1093 m^3 | volumeConeGen | +| 40 | Common Factors | Common Factors of 59 and 57 = | [1] | commonFactors | +| 41 | Intersection of Two Lines | Find the point of intersection of the two lines: y = -1/4x - 2 and y = 4/5x + 3 | (-100/21, -17/21) | intersectionOfTwoLines | +| 42 | Permutations | Number of Permutations from 13 objects picked 8 at a time = | 51891840 | permutations | +| 43 | Cross Product of 2 Vectors | [4, -11, 9] X [-8, -19, -5] = | [226, -52, -164] | vectorCross | +| 44 | Compare Fractions | Which symbol represents the comparison between 3/7 and 2/4? | < | compareFractions | +| 45 | Simple Interest | Simple interest for a principle amount of 2398 dollars, 9% rate of interest and for a time period of 5 years is = | 1079.1 | simpleInterest | +| 46 | Multiplication of two matrices | Multiply +
-83 6 91 4 -58 91 -91 47 -87
4 -2 24 66 -58 -58 -46 -96 52
-5 5 -53 74 31 -67 65 -31 56
77 -16 -73 50 54 -46 -11 91 64
and + +") + print(prob) + instName = lines[line] - def_name = instName[:instName.find('=')].strip() - row = [myGen.id, myGen.title, prob, sol, def_name] + func_name = instName[:instName.find('=')].strip() # NOTE: renamed 'def_name' to 'func_name' because it suits it more + row = [myGen.id, myGen.title, prob, solu, func_name] + # print(item[1], func_name) line += 1 + if line > len(lines): + break allRows.append(row) -g = open('../README.md', "a") -for row in allRows: - tableLine = "| " + str(row[0]) + " | " + str(row[1]) + " | " + str(row[2]) + " | " + str(row[3]) + " | " + str(row[4]) + " |\n" - g.write(tableLine) -g.close() +with open('README.md', "r") as g: + lines = g.readlines() + + line = lines.index('[//]: # list start\n') + lines = lines[:line+1] + + for row in allRows: + tableLine = "| " + str(row[0]) + " | " + str(row[1]) + " | " + str(row[2]) + " | " + str(row[3]) + " | " + str(row[4]) + " |\n" + lines.append(tableLine) + +with open('README.md', "w") as g: + g.writelines(lines) print("New README.md table generated") diff --git a/mathgenerator/funcs/matrixMultiplicationFunc.py b/mathgenerator/funcs/matrixMultiplicationFunc.py index de69218..eeaa265 100644 --- a/mathgenerator/funcs/matrixMultiplicationFunc.py +++ b/mathgenerator/funcs/matrixMultiplicationFunc.py @@ -40,11 +40,12 @@ def matrixMultiplicationFuncHelper(inp): m = len(inp) n = len(inp[0]) - string = "" + string = "[[" for i in range(m): for j in range(n): string += f"{inp[i][j]: 6d}" - string += " " - string += "\n" + string += ", "if j < n-1 else "" + string += "]\n [" if i < m-1 else "" + string += "]]" return string \ No newline at end of file diff --git a/mathgenerator/funcs/moduloFunc.py b/mathgenerator/funcs/moduloFunc.py index 5f8d2af..71f1421 100644 --- a/mathgenerator/funcs/moduloFunc.py +++ b/mathgenerator/funcs/moduloFunc.py @@ -4,7 +4,7 @@ from .__init__ import * def moduloFunc(maxRes=99, maxModulo=99): a = random.randint(0, maxModulo) b = random.randint(0, min(maxRes, maxModulo)) - c = a % b + c = a % b if b != 0 else 0 problem = str(a) + "%" + str(b) + "=" solution = str(c) diff --git a/mathgenerator/funcs/profitLossPercentFunc.py b/mathgenerator/funcs/profitLossPercentFunc.py index 533c294..05a3653 100644 --- a/mathgenerator/funcs/profitLossPercentFunc.py +++ b/mathgenerator/funcs/profitLossPercentFunc.py @@ -12,3 +12,5 @@ def profitLossPercentFunc(maxCP = 1000, maxSP = 1000): percent = diff/cP * 100 problem = f"{profitOrLoss} percent when CP = {cP} and SP = {sP} is: " solution = percent + + return problem, solution \ No newline at end of file diff --git a/mathgenerator/mathgen.py b/mathgenerator/mathgen.py index 0e813a6..3265a0f 100644 --- a/mathgenerator/mathgen.py +++ b/mathgenerator/mathgen.py @@ -33,126 +33,73 @@ def getGenList(): # Format is: # = Generator("<Title>", <id>, <generalized problem>, <generalized solution>, <function name>) +# Funcs_start - DO NOT REMOVE! addition = Generator("Addition", 0, "a+b=", "c", additionFunc) subtraction = Generator("Subtraction", 1, "a-b=", "c", subtractionFunc) -multiplication = Generator( - "Multiplication", 2, "a*b=", "c", multiplicationFunc) +multiplication = Generator("Multiplication", 2, "a*b=", "c", multiplicationFunc) division = Generator("Division", 3, "a/b=", "c", divisionFunc) -binaryComplement1s = Generator( - "Binary Complement 1s", 4, "1010=", "0101", binaryComplement1sFunc) +binaryComplement1s = Generator("Binary Complement 1s", 4, "1010=", "0101", binaryComplement1sFunc) moduloDivision = Generator("Modulo Division", 5, "a%b=", "c", moduloFunc) squareRoot = Generator("Square Root", 6, "sqrt(a)=", "b", squareRootFunc) -powerRuleDifferentiation = Generator( - "Power Rule Differentiation", 7, "nx^m=", "(n*m)x^(m-1)", powerRuleDifferentiationFunc) +powerRuleDifferentiation = Generator("Power Rule Differentiation", 7, "nx^m=", "(n*m)x^(m-1)", powerRuleDifferentiationFunc) square = Generator("Square", 8, "a^2", "b", squareFunc) -lcm = Generator("LCM (Least Common Multiple)", 9, - "LCM of a and b = ", "c", lcmFunc) -gcd = Generator("GCD (Greatest Common Denominator)", - 10, "GCD of a and b = ", "c", gcdFunc) -basicAlgebra = Generator( - "Basic Algebra", 11, "ax + b = c", "d", basicAlgebraFunc) +lcm = Generator("LCM (Least Common Multiple)", 9,"LCM of a and b = ", "c", lcmFunc) +gcd = Generator("GCD (Greatest Common Denominator)", 10, "GCD of a and b = ", "c", gcdFunc) +basicAlgebra = Generator("Basic Algebra", 11, "ax + b = c", "d", basicAlgebraFunc) log = Generator("Logarithm", 12, "log2(8)", "3", logFunc) intDivision = Generator("Easy Division", 13, "a/b=", "c", divisionToIntFunc) -decimalToBinary = Generator("Decimal to Binary", 14, - "Binary of a=", "b", DecimalToBinaryFunc) -binaryToDecimal = Generator("Binary to Decimal", 15, - "Decimal of a=", "b", BinaryToDecimalFunc) -fractionDivision = Generator( - "Fraction Division", 16, "(a/b)/(c/d)=", "x/y", divideFractionsFunc) -intMatrix22Multiplication = Generator("Integer Multiplication with 2x2 Matrix", - 17, "k * [[a,b],[c,d]]=", "[[k*a,k*b],[k*c,k*d]]", multiplyIntToMatrix22) -areaOfTriangle = Generator( - "Area of Triangle", 18, "Area of Triangle with side lengths a, b, c = ", "area", areaOfTriangleFunc) -doesTriangleExist = Generator("Triangle exists check", 19, - "Does triangle with sides a, b and c exist?", "Yes/No", isTriangleValidFunc) -midPointOfTwoPoint = Generator("Midpoint of the two point", 20, - "((X1,Y1),(X2,Y2))=", "((X1+X2)/2,(Y1+Y2)/2)", MidPointOfTwoPointFunc) -factoring = Generator("Factoring Quadratic", 21, - "x^2+(x1+x2)+x1*x2", "(x-x1)(x-x2)", factoringFunc) -thirdAngleOfTriangle = Generator("Third Angle of Triangle", 22, - "Third Angle of the triangle = ", "angle3", thirdAngleOfTriangleFunc) -systemOfEquations = Generator("Solve a System of Equations in R^2", 23, - "2x + 5y = 13, -3x - 3y = -6", "x = -1, y = 3", systemOfEquationsFunc) -distance2Point = Generator("Distance between 2 points", 24, - "Find the distance between (x1,y1) and (x2,y2)", "sqrt(distanceSquared)", distanceTwoPointsFunc) -pythagoreanTheorem = Generator( - "Pythagorean Theorem", 25, "The hypotenuse of a right triangle given the other two lengths a and b = ", "hypotenuse", pythagoreanTheoremFunc) -# This has multiple variables whereas #23 has only x and y -linearEquations = Generator( - "Linear Equations", 26, "2x+5y=20 & 3x+6y=12", "x=-20 & y=12", linearEquationsFunc) -primeFactors = Generator("Prime Factorisation", 27, - "Prime Factors of a =", "[b, c, d, ...]", primeFactorsFunc) -fractionMultiplication = Generator( - "Fraction Multiplication", 28, "(a/b)*(c/d)=", "x/y", multiplyFractionsFunc) -angleRegularPolygon = Generator("Angle of a Regular Polygon", 29, - "Find the angle of a regular polygon with 6 sides", "120", regularPolygonAngleFunc) -combinations = Generator("Combinations of Objects", 30, - "Combinations available for picking 4 objects at a time from 6 distinct objects =", " 15", combinationsFunc) +decimalToBinary = Generator("Decimal to Binary", 14,"Binary of a=", "b", DecimalToBinaryFunc) +binaryToDecimal = Generator("Binary to Decimal", 15,"Decimal of a=", "b", BinaryToDecimalFunc) +fractionDivision = Generator("Fraction Division", 16, "(a/b)/(c/d)=", "x/y", divideFractionsFunc) +intMatrix22Multiplication = Generator("Integer Multiplication with 2x2 Matrix",17, "k * [[a,b],[c,d]]=", "[[k*a,k*b],[k*c,k*d]]", multiplyIntToMatrix22) +areaOfTriangle = Generator("Area of Triangle", 18, "Area of Triangle with side lengths a, b, c = ", "area", areaOfTriangleFunc) +doesTriangleExist = Generator("Triangle exists check", 19,"Does triangle with sides a, b and c exist?", "Yes/No", isTriangleValidFunc) +midPointOfTwoPoint = Generator("Midpoint of the two point", 20,"((X1,Y1),(X2,Y2))=", "((X1+X2)/2,(Y1+Y2)/2)", MidPointOfTwoPointFunc) +factoring = Generator("Factoring Quadratic", 21, "x^2+(x1+x2)+x1*x2", "(x-x1)(x-x2)", factoringFunc) +thirdAngleOfTriangle = Generator("Third Angle of Triangle", 22, "Third Angle of the triangle = ", "angle3", thirdAngleOfTriangleFunc) +systemOfEquations = Generator("Solve a System of Equations in R^2", 23, "2x + 5y = 13, -3x - 3y = -6", "x = -1, y = 3", systemOfEquationsFunc) +distance2Point = Generator("Distance between 2 points", 24, "Find the distance between (x1,y1) and (x2,y2)", "sqrt(distanceSquared)", distanceTwoPointsFunc) +pythagoreanTheorem = Generator("Pythagorean Theorem", 25, "The hypotenuse of a right triangle given the other two lengths a and b = ", "hypotenuse", pythagoreanTheoremFunc) +linearEquations = Generator("Linear Equations", 26, "2x+5y=20 & 3x+6y=12", "x=-20 & y=12", linearEquationsFunc)# This has multiple variables whereas #23 has only x and y +primeFactors = Generator("Prime Factorisation", 27, "Prime Factors of a =", "[b, c, d, ...]", primeFactorsFunc) +fractionMultiplication = Generator("Fraction Multiplication", 28, "(a/b)*(c/d)=", "x/y", multiplyFractionsFunc) +angleRegularPolygon = Generator("Angle of a Regular Polygon", 29,"Find the angle of a regular polygon with 6 sides", "120", regularPolygonAngleFunc) +combinations = Generator("Combinations of Objects", 30, "Combinations available for picking 4 objects at a time from 6 distinct objects =", " 15", combinationsFunc) factorial = Generator("Factorial", 31, "a! = ", "b", factorialFunc) -surfaceAreaCubeGen = Generator( - "Surface Area of Cube", 32, "Surface area of cube with side a units is", "b units^2", surfaceAreaCube) -surfaceAreaCuboidGen = Generator( - "Surface Area of Cuboid", 33, "Surface area of cuboid with sides = a units, b units, c units is", "d units^2", surfaceAreaCuboid) -surfaceAreaCylinderGen = Generator( - "Surface Area of Cylinder", 34, "Surface area of cylinder with height = a units and radius = b units is", "c units^2", surfaceAreaCylinder) -volumeCubeGen = Generator( - "Volum of Cube", 35, "Volume of cube with side a units is", "b units^3", volumeCube) -volumeCuboidGen = Generator( - "Volume of Cuboid", 36, "Volume of cuboid with sides = a units, b units, c units is", "d units^3", volumeCuboid) -volumeCylinderGen = Generator( - "Volume of cylinder", 37, "Volume of cylinder with height = a units and radius = b units is", "c units^3", volumeCylinder) -surfaceAreaConeGen = Generator( - "Surface Area of cone", 38, "Surface area of cone with height = a units and radius = b units is", "c units^2", surfaceAreaCone) -volumeConeGen = Generator( - "Volume of cone", 39, "Volume of cone with height = a units and radius = b units is", "c units^3", volumeCone) -commonFactors = Generator( - "Common Factors", 40, "Common Factors of {a} and {b} = ", "[c, d, ...]", commonFactorsFunc) -intersectionOfTwoLines = Generator("Intersection of Two Lines", 41, - "Find the point of intersection of the two lines: y = m1*x + b1 and y = m2*x + b2", "(x, y)", intersectionOfTwoLinesFunc) -permutations = Generator( - "Permutations", 42, "Total permutations of 4 objects at a time from 10 objects is", "5040", permutationFunc) -vectorCross = Generator("Cross Product of 2 Vectors", - 43, "a X b = ", "c", vectorCrossFunc) -compareFractions = Generator( - "Compare Fractions", 44, "Which symbol represents the comparison between a/b and c/d?", ">/</=", compareFractionsFunc) -simpleInterest = Generator( - "Simple Interest", 45, "Simple interest for a principle amount of a dollars, b% rate of interest and for a time period of c years is = ", "d dollars", simpleInterestFunc) -matrixMultiplication = Generator("Multiplication of two matrices", - 46, "Multiply two matrices A and B", "C", matrixMultiplicationFunc) -CubeRoot = Generator( - "Cube Root", 47, "Cuberoot of a upto 2 decimal places is", "b", cubeRootFunc) -powerRuleIntegration = Generator( - "Power Rule Integration", 48, "nx^m=", "(n/m)x^(m+1)", powerRuleIntegrationFunc) -fourthAngleOfQuadrilateral = Generator("Fourth Angle of Quadrilateral", 49, - "Fourth angle of Quadrilateral with angles a,b,c =", "angle4", fourthAngleOfQuadriFunc) -quadraticEquationSolve = Generator( - "Quadratic Equation", 50, "Find the zeros {x1,x2} of the quadratic equation ax^2+bx+c=0", "x1,x2", quadraticEquation) -hcf = Generator("HCF (Highest Common Factor)", 51, - "HCF of a and b = ", "c", hcfFunc) -diceSumProbability = Generator("Probability of a certain sum appearing on faces of dice", - 52, "If n dices are rolled then probabilty of getting sum of x is =", "z", DiceSumProbFunc) -exponentiation = Generator( - "Exponentiation", 53, "a^b = ", "c", exponentiationFunc) -confidenceInterval = Generator("Confidence interval For sample S", - 54, "With X% confidence", "is (A,B)", confidenceIntervalFunc) -surdsComparison = Generator( - "Comparing surds", 55, "Fill in the blanks a^(1/b) _ c^(1/d)", "</>/=", surdsComparisonFunc) -fibonacciSeries = Generator("Fibonacci Series", 56, "fibonacci series of first a numbers", - "prints the fibonacci series starting from 0 to a", fibonacciSeriesFunc) -basicTrigonometry = Generator( - "Trigonometric Values", 57, "What is sin(X)?", "ans", basicTrigonometryFunc) -sumOfAnglesOfPolygon = Generator("Sum of Angles of Polygon", 58, - "Sum of angles of polygon with n sides = ", "sum", sumOfAnglesOfPolygonFunc) -dataSummary = Generator("Mean,Standard Deviation,Variance", - 59, "a,b,c", "Mean:a+b+c/3,Std,Var", dataSummaryFunc) -surfaceAreaSphereGen = Generator( - "Surface Area of Sphere", 59, "Surface area of sphere with radius = a units is", "d units^2", surfaceAreaSphere) -volumeSphere = Generator("Volume of Sphere", 60, - "Volume of sphere with radius r m = ", "(4*pi/3)*r*r*r", volumeSphereFunc) +surfaceAreaCubeGen = Generator("Surface Area of Cube", 32, "Surface area of cube with side a units is", "b units^2", surfaceAreaCube) +surfaceAreaCuboidGen = Generator("Surface Area of Cuboid", 33, "Surface area of cuboid with sides = a units, b units, c units is", "d units^2", surfaceAreaCuboid) +surfaceAreaCylinderGen = Generator("Surface Area of Cylinder", 34, "Surface area of cylinder with height = a units and radius = b units is", "c units^2", surfaceAreaCylinder) +volumeCubeGen = Generator("Volum of Cube", 35, "Volume of cube with side a units is", "b units^3", volumeCube) +volumeCuboidGen = Generator( "Volume of Cuboid", 36, "Volume of cuboid with sides = a units, b units, c units is", "d units^3", volumeCuboid) +volumeCylinderGen = Generator( "Volume of cylinder", 37, "Volume of cylinder with height = a units and radius = b units is", "c units^3", volumeCylinder) +surfaceAreaConeGen = Generator("Surface Area of cone", 38, "Surface area of cone with height = a units and radius = b units is", "c units^2", surfaceAreaCone) +volumeConeGen = Generator("Volume of cone", 39, "Volume of cone with height = a units and radius = b units is", "c units^3", volumeCone) +commonFactors = Generator("Common Factors", 40, "Common Factors of {a} and {b} = ", "[c, d, ...]", commonFactorsFunc) +intersectionOfTwoLines = Generator("Intersection of Two Lines", 41,"Find the point of intersection of the two lines: y = m1*x + b1 and y = m2*x + b2", "(x, y)", intersectionOfTwoLinesFunc) +permutations = Generator("Permutations", 42, "Total permutations of 4 objects at a time from 10 objects is", "5040", permutationFunc) +vectorCross = Generator("Cross Product of 2 Vectors", 43, "a X b = ", "c", vectorCrossFunc) +compareFractions = Generator( "Compare Fractions", 44, "Which symbol represents the comparison between a/b and c/d?", ">/</=", compareFractionsFunc) +simpleInterest = Generator("Simple Interest", 45, "Simple interest for a principle amount of a dollars, b% rate of interest and for a time period of c years is = ", "d dollars", simpleInterestFunc) +matrixMultiplication = Generator("Multiplication of two matrices",46, "Multiply two matrices A and B", "C", matrixMultiplicationFunc) +CubeRoot = Generator("Cube Root", 47, "Cuberoot of a upto 2 decimal places is", "b", cubeRootFunc) +powerRuleIntegration = Generator("Power Rule Integration", 48, "nx^m=", "(n/m)x^(m+1)", powerRuleIntegrationFunc) +fourthAngleOfQuadrilateral = Generator("Fourth Angle of Quadrilateral", 49,"Fourth angle of Quadrilateral with angles a,b,c =", "angle4", fourthAngleOfQuadriFunc) +quadraticEquationSolve = Generator("Quadratic Equation", 50, "Find the zeros {x1,x2} of the quadratic equation ax^2+bx+c=0", "x1,x2", quadraticEquation) +hcf = Generator("HCF (Highest Common Factor)", 51,"HCF of a and b = ", "c", hcfFunc) +diceSumProbability = Generator("Probability of a certain sum appearing on faces of dice",52, "If n dices are rolled then probabilty of getting sum of x is =", "z", DiceSumProbFunc) +exponentiation = Generator("Exponentiation", 53, "a^b = ", "c", exponentiationFunc) +confidenceInterval = Generator("Confidence interval For sample S", 54, "With X% confidence", "is (A,B)", confidenceIntervalFunc) +surdsComparison = Generator("Comparing surds", 55, "Fill in the blanks a^(1/b) _ c^(1/d)", "</>/=", surdsComparisonFunc) +fibonacciSeries = Generator("Fibonacci Series", 56, "fibonacci series of first a numbers","prints the fibonacci series starting from 0 to a", fibonacciSeriesFunc) +basicTrigonometry = Generator("Trigonometric Values", 57, "What is sin(X)?", "ans", basicTrigonometryFunc) +sumOfAnglesOfPolygon = Generator("Sum of Angles of Polygon", 58, "Sum of angles of polygon with n sides = ", "sum", sumOfAnglesOfPolygonFunc) +dataSummary = Generator("Mean,Standard Deviation,Variance",59, "a,b,c", "Mean:a+b+c/3,Std,Var", dataSummaryFunc) +surfaceAreaSphereGen = Generator("Surface Area of Sphere", 59, "Surface area of sphere with radius = a units is", "d units^2", surfaceAreaSphere) +volumeSphere = Generator("Volume of Sphere", 60,"Volume of sphere with radius r m = ", "(4*pi/3)*r*r*r", volumeSphereFunc) nthFibonacciNumberGen = Generator("nth Fibonacci number", 61, "What is the nth Fibonacci number", "Fn", nthFibonacciNumberFunc) profitLossPercent = Generator("Profit or Loss Percent", 62, "Profit/ Loss percent when CP = cp and SP = sp is: ", "percent", profitLossPercentFunc) binaryToHex = Generator("Binary to Hexidecimal", 63, "Hexidecimal of a=", "b", binaryToHexFunc) complexNumMultiply = Generator("Multiplication of 2 complex numbers", 64, "(x + j) (y + j) = ", "xy + xj + yj -1", multiplyComplexNumbersFunc) -geometricprogression=Generator("Geometric Progression", 65, "Initial value,Common Ratio,nth Term,Sum till nth term =", "a,r,ar^n-1,sum(ar^n-1", geomProgrFunc) -geometricMean=Generator("Geometric Mean of N Numbers",66,"Geometric mean of n numbers A1 , A2 , ... , An = ","(A1*A2*...An)^(1/n) = ans",geometricMeanFunc) -harmonicMean=Generator("Harmonic Mean of N Numbers",67,"Harmonic mean of n numbers A1 , A2 , ... , An = "," n/((1/A1) + (1/A2) + ... + (1/An)) = ans",harmonicMeanFunc) +geometricprogression = Generator("Geometric Progression", 65, "Initial value,Common Ratio,nth Term,Sum till nth term =", "a,r,ar^n-1,sum(ar^n-1", geomProgrFunc) +geometricMean = Generator("Geometric Mean of N Numbers",66,"Geometric mean of n numbers A1 , A2 , ... , An = ","(A1*A2*...An)^(1/n) = ans",geometricMeanFunc) +harmonicMean = Generator("Harmonic Mean of N Numbers",67,"Harmonic mean of n numbers A1 , A2 , ... , An = "," n/((1/A1) + (1/A2) + ... + (1/An)) = ans",harmonicMeanFunc) From b3a80ee8cef0ee86b02ee1a8b95e7ecb70d07178 Mon Sep 17 00:00:00 2001 From: lukew3 <lukew25073@gmail.com> Date: Mon, 19 Oct 2020 09:49:32 -0400 Subject: [PATCH 22/23] localized sympy --- mathgenerator/funcs/matrixInversion.py | 3 ++- mathgenerator/mathgen.py | 1 - test.py | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/mathgenerator/funcs/matrixInversion.py b/mathgenerator/funcs/matrixInversion.py index 7de9f15..822cb83 100644 --- a/mathgenerator/funcs/matrixInversion.py +++ b/mathgenerator/funcs/matrixInversion.py @@ -1,4 +1,5 @@ from .__init__ import * +import sympy def matrixInversion(SquareMatrixDimension=3, MaxMatrixElement=99, OnlyIntegerElementsInInvertedMatrix=False): if OnlyIntegerElementsInInvertedMatrix is True: @@ -65,4 +66,4 @@ def matrixInversion(SquareMatrixDimension=3, MaxMatrixElement=99, OnlyIntegerEle Mat = sympy.Matrix(Mat) problem = 'Inverse of Matrix ' + str(Mat) + ' is:' solution = str(sympy.Matrix.inv(Mat)) - return problem, solution \ No newline at end of file + return problem, solution diff --git a/mathgenerator/mathgen.py b/mathgenerator/mathgen.py index 4a0810c..01456be 100644 --- a/mathgenerator/mathgen.py +++ b/mathgenerator/mathgen.py @@ -1,7 +1,6 @@ import random import math import fractions -import sympy from .funcs import * genList = [] diff --git a/test.py b/test.py index 925ced3..e5bb2c1 100644 --- a/test.py +++ b/test.py @@ -3,3 +3,4 @@ from mathgenerator import mathgen #test your generators here print(mathgen.addition()) +print(mathgen.genById(74)) From ac1581e9410b9a92dd2fffd17167377d2a302134 Mon Sep 17 00:00:00 2001 From: Luke Weiler <lukew25073@gmail.com> Date: Mon, 19 Oct 2020 10:01:43 -0400 Subject: [PATCH 23/23] Update README.md --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index 6c692b0..f2d81dc 100644 --- a/README.md +++ b/README.md @@ -78,10 +78,7 @@ problem, solution = mathgen.genById(0) | 43 | Cross Product of 2 Vectors | [4, -11, 9] X [-8, -19, -5] = | [226, -52, -164] | vectorCross | | 44 | Compare Fractions | Which symbol represents the comparison between 3/7 and 2/4? | < | compareFractions | | 45 | Simple Interest | Simple interest for a principle amount of 2398 dollars, 9% rate of interest and for a time period of 5 years is = | 1079.1 | simpleInterest | -| 46 | Multiplication of two matrices | Multiply -<table><tr><td> -83</td><td> 6</td><td> 91</td><td> 4</td><td> -58</td><td> 91</td><td> -91</td><td> 47</td><td> -87</td></tr> <tr><td> 4</td><td> -2</td><td> 24</td><td> 66</td><td> -58</td><td> -58</td><td> -46</td><td> -96</td><td> 52</td></tr> <tr><td> -5</td><td> 5</td><td> -53</td><td> 74</td><td> 31</td><td> -67</td><td> 65</td><td> -31</td><td> 56</td></tr> <tr><td> 77</td><td> -16</td><td> -73</td><td> 50</td><td> 54</td><td> -46</td><td> -11</td><td> 91</td><td> 64</td></tr></table> and - -<table><tr><td> -59</td><td> -20</td><td> -50</td><td> -79</td><td> 75</td><td> 96</td></tr> <tr><td> -56</td><td> 36</td><td> 70</td><td> 47</td><td> -79</td><td> 64</td></tr> <tr><td> 6</td><td> 0</td><td> -8</td><td> -53</td><td> -23</td><td> -83</td></tr> <tr><td> -42</td><td> -84</td><td> 21</td><td> -10</td><td> -42</td><td> 98</td></tr> <tr><td> -9</td><td> -62</td><td> -15</td><td> -68</td><td> -49</td><td> -59</td></tr> <tr><td> -81</td><td> -84</td><td> 3</td><td> 58</td><td> -84</td><td> -59</td></tr> <tr><td> -56</td><td> 33</td><td> 73</td><td> 98</td><td> 51</td><td> -19</td></tr> <tr><td> -81</td><td> -96</td><td> -98</td><td> 61</td><td> -32</td><td> 73</td></tr> <tr><td> -43</td><td> 66</td><td> 83</td><td> 90</td><td> -22</td><td> -94]] | [[ 3120, -15765, -13401, -2683, -17993, -3354] +| 46 | Multiplication of two matrices | Multiply <table><tr><td>-50</td><td>36</td><td>7</td><td>-26</td><td>-2</td><td>63</td></tr><tr><td>88</td><td>-37</td><td>60</td><td>-19</td><td>61</td><td>-56</td></tr><tr><td>48</td><td>-5</td><td>69</td><td>-87</td><td>-64</td><td>-92</td></tr><tr><td>-84</td><td>-50</td><td>-79</td><td>-19</td><td>86</td><td>-13</td></tr><tr><td>0</td><td>28</td><td>12</td><td>-14</td><td>73</td><td>-49</td></tr><tr><td>94</td><td>-90</td><td>2</td><td>26</td><td>-38</td><td>19</td></tr><tr><td>2</td><td>-11</td><td>79</td><td>-77</td><td>98</td><td>-77</td></tr><tr><td>-87</td><td>70</td><td>72</td><td>-32</td><td>64</td><td>-99</td></tr></table> and <table><tr><td>34</td><td>32</td><td>-6</td><td>-32</td><td>46</td><td>-23</td><td>78</td><td>-81</td><td>-18</td></tr><tr><td>-17</td><td>24</td><td>49</td><td>-62</td><td>-50</td><td>77</td><td>38</td><td>-98</td><td>-64</td></tr><tr><td>-23</td><td>-78</td><td>43</td><td> 5</td><td>-83</td><td>-5</td><td> 4</td><td>-92</td><td>-16</td></tr><tr><td> 46</td><td>-47</td><td>-92</td><td>52</td><td>-25</td><td>-37</td><td>44</td><td>51</td><td>-7</td></tr><tr><td> 20</td><td>26</td><td>70</td><td>37</td><td>96</td><td>-73</td><td>49</td><td>84</td><td>42</td></tr><tr><td>-72</td><td>-15</td><td>-80</td><td>-24</td><td>58</td><td>-47</td><td>-41</td><td>45</td><td>-69</td></tr></table>| <table><tr><td>-8245</td><td>-1057</td><td>-423</td><td>-3535</td><td>-569</td><td>2034</td><td>-6329</td><td>1219</td><td>-5765</td></tr><tr><td>6619</td><td> 567</td><td>10737</td><td>2391</td><td>4001</td><td>-6291</td><td>10147</td><td>-7387</td><td>6383</td></tr><tr><td>1472</td><td>-161</td><td>13318</td><td>-5565<td>-12574</td><td>10381</td><td> 638<td>-23699</td><td>2621</td></tr><tr><td>1593</td><td>5598</td><td>3465</td><td>7899</td><td>13170</td><td>-6487</td><td>-4857</td><td>24642</td><td>10618</td></tr><tr><td>3592</td><td>3027</td><td>12206</td><td>1473</td><td>2120</td><td>-412</td><td>6082</td><td>-635</td><td>4561</td></tr><tr><td>3748</td><td>-1803<td>-11460</td><td>2072</td><td>5462</td><td>-8183</td><td>2423</td><td>11</td><td> 947</td></tr><tr><td>2400</td><td> 960</td><td>22950</td><td>2483</td><td> 952</td><td>-1974</td><td>4625</td><td>-5512</td><td>9372</td></tr><tr><td>1132</td><td>-2067</td><td>22392</td><td>1884<td>-12276</td><td>8196</td><td>1949</td><td>-7148</td><td>5677</td></tr></table> | matrixMultiplication | [ 10584, 13902, 11916, -7446, 4430, 554] [ -1800, 6587, 14343, 6224, 4525, 4853] [-12452, -10675, -8693, 427, 2955, 17691]] | matrixMultiplication |
-59 -20 -50 -79 75 96
-56 36 70 47 -79 64
6 0 -8 -53 -23 -83
-42 -84 21 -10 -42 98
-9 -62 -15 -68 -49 -59
-81 -84 3 58 -84 -59
-56 33 73 98 51 -19
-81 -96 -98 61 -32 73
-43 66 83 90 -22 -94]] | [[ 3120, -15765, -13401, -2683, -17993, -3354] + [ 10584, 13902, 11916, -7446, 4430, 554] + [ -1800, 6587, 14343, 6224, 4525, 4853] + [-12452, -10675, -8693, 427, 2955, 17691]] | matrixMultiplication | +| 47 | Cube Root | cuberoot of 221 upto 2 decimal places is: | 6.05 | CubeRoot | +| 48 | Power Rule Integration | 4x^5 + 2x^5 + 9x^8 + 9x^5 | (4/5)x^6 + (2/5)x^6 + (9/8)x^9 + (9/5)x^6 + c | powerRuleIntegration | +| 49 | Fourth Angle of Quadrilateral | Fourth angle of quadrilateral with angles 27 , 155, 116 = | 62 | fourthAngleOfQuadrilateral | +| 50 | Quadratic Equation | Zeros of the Quadratic Equation 53x^2+200x+78=0 | [-0.44, -3.33] | quadraticEquationSolve | +| 51 | HCF (Highest Common Factor) | HCF of 7 and 4 = | 1 | hcf | | 52 | Probability of a certain sum appearing on faces of dice | If 2 dice are rolled at the same time, the probability of getting a sum of 11 = | 2/36 | diceSumProbability | -| 53 | Exponentiation | 9^9 = | 387420489 | exponentiation | -| 54 | Confidence interval For sample S | The confidence interval for sample [291, 254, 274, 207, 253, 289, 268, 280, 225, 240, 278, 270, 247, 252, 211, 212, 295, 241, 290, 206, 222, 263, 264, 228, 229, 256, 209, 292] with 99% confidence is | (265.560249263099, 237.72546502261523) | confidenceInterval | -| 55 | Comparing surds | Fill in the blanks 16^(1/7) _ 67^(1/6) | < | surdsComparison | -| 56 | Fibonacci Series | The Fibonacci Series of the first 11 numbers is ? | [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55] | fibonacciSeries | -| 57 | Trigonometric Values | What is cos(60)? | 1/2 | basicTrigonometry | -| 58 | Sum of Angles of Polygon | Sum of angles of polygon with 5 sides = | 540 | sumOfAnglesOfPolygon | -| 59 | Mean,Standard Deviation,Variance | Find the mean,standard deviation and variance for the data[38, 29, 43, 25, 7, 10, 13, 14, 43, 44, 30, 42, 48, 48, 42] | The Mean is 31.733333333333334 , Standard Deviation is 199.26222222222222, Variance is 14.116027140177303 | dataSummary | -| 59 | Surface Area of Sphere | Surface area of Sphere with radius = 13m is | 2123.7166338267 m^2 | surfaceAreaSphereGen | -| 60 | Volume of Sphere | Volume of sphere with radius 84 m = | 2482712.7095377133 m^3 | volumeSphere | \ No newline at end of file +| 53 | Exponentiation | 9^10 = | 3486784401 | exponentiation | +| 54 | Confidence interval For sample S | The confidence interval for sample [266, 201, 278, 209, 229, 275, 216, 234, 219, 276, 282, 281, 208, 247, 265, 273, 286, 202, 231, 207, 251, 203, 259, 288, 291, 260, 210, 263, 222] with 99% confidence is | (260.5668079141175, 231.29526105139982) | confidenceInterval | +| 55 | Comparing surds | Fill in the blanks 15^(1/9) _ 55^(1/1) | < | surdsComparison | +| 56 | Fibonacci Series | The Fibonacci Series of the first 10 numbers is ? | [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] | fibonacciSeries | +| 57 | Trigonometric Values | What is tan(30)? | 1/√3 | basicTrigonometry | +| 58 | Sum of Angles of Polygon | Sum of angles of polygon with 3 sides = | 180 | sumOfAnglesOfPolygon | +| 59 | Mean,Standard Deviation,Variance | Find the mean,standard deviation and variance for the data[36, 13, 31, 23, 38, 34, 24, 20, 41, 14, 19, 31, 11, 49, 49] | The Mean is 28.866666666666667 , Standard Deviation is 143.5822222222222, Variance is 11.982579948501167 | dataSummary | +| 59 | Surface Area of Sphere | Surface area of Sphere with radius = 11m is | 1520.5308443374597 m^2 | surfaceAreaSphereGen | +| 60 | Volume of Sphere | Volume of sphere with radius 73 m = | 1629510.5990953872 m^3 | volumeSphere | +| 61 | nth Fibonacci number | What is the 68th Fibonacci number? | 72723460248141 | nthFibonacciNumberGen | +| 62 | Profit or Loss Percent | Profit percent when CP = 825 and SP = 972 is: | 17.81818181818182 | profitLossPercent | +| 63 | Binary to Hexidecimal | 100000 | 0x20 | binaryToHex | +| 64 | Multiplication of 2 complex numbers | (3+14j) * (-3+16j) = | (-233+6j) | complexNumMultiply | +| 65 | Geometric Progression | For the given GP [4, 16, 64, 256, 1024, 4096] ,Find the value of a,common ratio,8th term value, sum upto 7th term | The value of a is 4, common ratio is 4 , 8th term is 65536 , sum upto 7th term is 21844.0 | geometricprogression | +| 66 | Geometric Mean of N Numbers | Geometric mean of 3 numbers 81 , 35 and 99 = | (81*35*99)^(1/3) = 65.47307713912309 | geometricMean | +| 67 | Harmonic Mean of N Numbers | Harmonic mean of 2 numbers 99 and 25 = | 2/((1/99) + (1/25)) = 39.91935483870967 | harmonicMean | diff --git a/makeReadme.py b/makeReadme.py index 64f7989..796dc00 100644 --- a/makeReadme.py +++ b/makeReadme.py @@ -1,25 +1,51 @@ # To use, paste at bottom of mathgen.py code, change line variable and remove all table rows in README.md except for the top 2 and run mathgen.py +# NOTE: not anymore. but still leaving this comment in. +from mathgenerator.mathgen import * wList = getGenList() +lines = [] +with open('mathgenerator/mathgen.py', 'r') as f: + lines=f.readlines() + allRows = [] -f = open('mathgen.py') -lines = f.readlines() -line = 720 # This has to be changed depending on which line the first generator appears on +line = lines.index('# Funcs_start - DO NOT REMOVE!\n')+1 # get the first line of the functions in mathgen.py for item in wList: myGen = item[2] - prob, sol = myGen() + # NOTE: renamed 'sol' to 'solu' to make it look nicer + prob, solu = myGen() prob = str(prob).rstrip("\n") - sol = str(sol).rstrip("\n") + solu = str(solu).rstrip("\n") + # edge case for matrixMultiplication + if item[0] == 46: + print(prob) + + prob = prob.replace("[[", "
") + prob = prob.replace("[", "
") + prob = prob.replace(", ", "") + prob = prob.replace("]]\n", "
") + prob = prob.replace("]\n", "