Merge branch 'master' into patch-2

This commit is contained in:
Luke Weiler
2020-10-15 20:00:06 -04:00
committed by GitHub
2 changed files with 58 additions and 23 deletions

View File

@@ -1,26 +1,32 @@
# mathgenerator # mathgenerator
A math problem generator, created for the purpose of giving self-studying students and teaching organizations the means to easily get access to random math problems to suit their needs. A math problem generator, created for the purpose of giving self-studying students and teaching organizations the means to easily get access to random math problems to suit their needs.
To try out generators, go to https://todarith.ml/generate/ To try out generators, go to <https://todarith.ml/generate/>
If you have an idea for a generator, please add it as an issue and tag it with the "New Generator" label. If you have an idea for a generator, please add it as an issue and tag it with the "New Generator" label.
## Usage ## Usage
The project can be install via pip The project can be install via pip
```
```bash
pip install mathgenerator pip install mathgenerator
``` ```
Here is an example of how you would generate an addition problem: Here is an example of how you would generate an addition problem:
```
```python
from mathgenerator import mathgen from mathgenerator import mathgen
#generate an addition problem #generate an addition problem
problem, solution = mathgen.addition() problem, solution = mathgen.addition()
``` ```
## List of Generators ## List of Generators
| Id | Skill | Example problem | Example Solution | Function Name | | Id | Skill | Example problem | Example Solution | Function Name |
|------|-----------------------------------|--------------------|-------------------|--------------------------| |------|-----------------------------------|--------------------|-----------------------|--------------------------|
| 0 | Addition | 1+5= | 6 | addition | | 0 | Addition | 1+5= | 6 | addition |
| 1 | Subtraction | 9-4= | 5 | subtraction | | 1 | Subtraction | 9-4= | 5 | subtraction |
| 2 | Multiplication | 4*6= | 24 | multiplication | | 2 | Multiplication | 4*6= | 24 | multiplication |
@@ -35,3 +41,7 @@ problem, solution = mathgen.addition()
| 11 | Basic Algebra | 9x + 7 = 10 | 1/3 | basicAlgebra | | 11 | Basic Algebra | 9x + 7 = 10 | 1/3 | basicAlgebra |
| 12 | Logarithm | log3(3) | 1 | log | | 12 | Logarithm | log3(3) | 1 | log |
| 13 | Easy Division | 270/15 = | 18 | intDivision | | 13 | Easy Division | 270/15 = | 18 | intDivision |
| 14 | Decimal to Binary | Binary of a= | b | decimalToBinary |
| 15 | Binary to Decimal | Decimal of a= | b | binaryToDecimal |
| 16 | Fraction Division | (a/b)/(c/d)= | x/y | fractionDivision |
| 17 | Int 2x2 Matrix Multiplication | k * [[a,b],[c,d]]= | [[k*a,k*b],[k*c,k*d]] | intMatrix22Multiplication|

View File

@@ -215,7 +215,32 @@ def multiplyIntToMatrix22(maxMatrixVal = 10, maxRes = 100):
problem = f"{constant} * [[{a}, {b}], [{c}, {d}]] = " problem = f"{constant} * [[{a}, {b}], [{c}, {d}]] = "
solution = f"[[{a*constant},{b*constant}],[{c*constant},{d*constant}]]" solution = f"[[{a*constant},{b*constant}],[{c*constant},{d*constant}]]"
return problem, solution return problem, solution
def MidPointOfTwoPoint(maxValue=20):
def areaOfTriangleFunc(maxA=20, maxB=20, maxC=20):
a = random.randint(1, maxA)
b = random.randint(1, maxB)
c = random.randint(1, maxC)
s = (a+b+c)/2
area = (s*(s-a)*(s-b)*(s-c)) ** 0.5
problem = "Area of triangle with side lengths: "+ str(a) +" "+ str(b) +" "+ str(c) " = "
solution = area
return problem, solution
def isTriangleValidFunc(maxSideLength = 50):
sideA = random.randint(1, maxSideLength)
sideB = random.randint(1, maxSideLength)
sideC = random.randint(1, maxSideLength)
sideSums = [sideA + sideB, sideB + sideC, sideC + sideA]
sides = [sideC, sideA, sideB]
exists = True & (sides[0] < sideSums[0]) & (sides[1] < sideSums[1]) & (sides[2] < sideSums[2])
problem = f"Does triangle with sides {sideA}, {sideB} and {sideC} exist?"
if exists:
solution = "Yes"
return problem, solution
solution = "No"
return problem, solution
def MidPointOfTwoPointFunc(maxValue=20):
x1=random.randint(-20,maxValue) x1=random.randint(-20,maxValue)
y1=random.randint(-20,maxValue) y1=random.randint(-20,maxValue)
x2=random.randint(-20,maxValue) x2=random.randint(-20,maxValue)
@@ -223,8 +248,6 @@ def MidPointOfTwoPoint(maxValue=20):
problem=f"({x1},{y1}),({x2},{y2})=" problem=f"({x1},{y1}),({x2},{y2})="
solution=f"({(x1+x2)/2},{(y1+y2)/2})" solution=f"({(x1+x2)/2},{(y1+y2)/2})"
return problem,solution return problem,solution
# || Class Instances # || Class Instances
#Format is: #Format is:
@@ -247,4 +270,6 @@ decimalToBinary = Generator("Decimal to Binary",14,"Binary of a=","b",DecimalToB
binaryToDecimal = Generator("Binary to Decimal",15,"Decimal of a=","b",BinaryToDecimalFunc) binaryToDecimal = Generator("Binary to Decimal",15,"Decimal of a=","b",BinaryToDecimalFunc)
fractionDivision = Generator("Fraction Division", 16, "(a/b)/(c/d)=", "x/y", divideFractionsFunc) 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) intMatrix22Multiplication = Generator("Integer Multiplication with 2x2 Matrix", 17, "k * [[a,b],[c,d]]=", "[[k*a,k*b],[k*c,k*d]]", multiplyIntToMatrix22)
midPointOfTwoPoint=Generator("Midpoint of the two point",18,"((X1,Y1),(X2,Y2))=","((X1+X2)/2,(Y1+Y2)/2)",MidPointOfTwoPoint) 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)