mirror of
https://github.com/DeaDvey/mathgenerator.git
synced 2025-11-28 14:35:23 +01:00
Merge branch 'master' into patch-3
This commit is contained in:
@@ -71,4 +71,12 @@ from .multiplyComplexNumbersFunc import *
|
||||
from .geomProgrFunc import *
|
||||
from .geometricMeanFunc import *
|
||||
from .harmonicMeanFunc import *
|
||||
from .euclidianNormFunc import *
|
||||
from .angleBtwVectorsFunc import *
|
||||
from .absoluteDifferenceFunc import *
|
||||
from .vectorDotFunc import *
|
||||
from .binary2sComplement import *
|
||||
from .matrixInversion import *
|
||||
from .sectorAreaFunc import*
|
||||
from .meanMedianFunc import*
|
||||
from .determinantToMatrix22 import *
|
||||
|
||||
10
mathgenerator/funcs/absoluteDifferenceFunc.py
Normal file
10
mathgenerator/funcs/absoluteDifferenceFunc.py
Normal file
@@ -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
|
||||
16
mathgenerator/funcs/angleBtwVectorsFunc.py
Normal file
16
mathgenerator/funcs/angleBtwVectorsFunc.py
Normal file
@@ -0,0 +1,16 @@
|
||||
from .euclidianNormFunc import euclidianNormFunc
|
||||
import math
|
||||
from .__init__ import *
|
||||
|
||||
|
||||
def angleBtwVectorsFunc(v1: list, v2: list):
|
||||
sum = 0
|
||||
for i in v1:
|
||||
for j in v2:
|
||||
sum += i * j
|
||||
|
||||
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
|
||||
return problem, solution
|
||||
26
mathgenerator/funcs/binary2sComplement.py
Normal file
26
mathgenerator/funcs/binary2sComplement.py
Normal file
@@ -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
|
||||
7
mathgenerator/funcs/euclidianNormFunc.py
Normal file
7
mathgenerator/funcs/euclidianNormFunc.py
Normal file
@@ -0,0 +1,7 @@
|
||||
from .__init__ import *
|
||||
|
||||
|
||||
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
|
||||
69
mathgenerator/funcs/matrixInversion.py
Normal file
69
mathgenerator/funcs/matrixInversion.py
Normal file
@@ -0,0 +1,69 @@
|
||||
from .__init__ import *
|
||||
import sympy
|
||||
|
||||
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
|
||||
@@ -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
|
||||
13
mathgenerator/funcs/meanMedianFunc.py
Normal file
13
mathgenerator/funcs/meanMedianFunc.py
Normal file
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
10
mathgenerator/funcs/sectorAreaFunc.py
Normal file
10
mathgenerator/funcs/sectorAreaFunc.py
Normal file
@@ -0,0 +1,10 @@
|
||||
.__init__ import *
|
||||
|
||||
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
|
||||
11
mathgenerator/funcs/vectorDotFunc.py
Normal file
11
mathgenerator/funcs/vectorDotFunc.py
Normal file
@@ -0,0 +1,11 @@
|
||||
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
|
||||
Reference in New Issue
Block a user