Merge branch 'master' into master

This commit is contained in:
Luke Weiler
2020-10-19 10:33:23 -04:00
committed by GitHub
15 changed files with 333 additions and 193 deletions

View File

@@ -71,5 +71,11 @@ 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*

View 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

View 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

View 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

View 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

View 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

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View 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