add format kwarg

This commit is contained in:
lukew3
2021-10-06 02:22:32 -04:00
parent 6b35cbb452
commit 9682a569ba
115 changed files with 934 additions and 628 deletions

230
README.md
View File

@@ -9,7 +9,7 @@ If you have an idea for a generator, please add it as an issue and tag it with t
## Table of Contents
* [Installation](#installation)
* [Basic Usage](#basic-usage)
* [Creating a worksheet](#creating-a-worksheet)
* [More Complicated Usage](#more-complicated-usage)
* [Documentation](#documentation)
* [List of Generators](#list-of-generators)
* [algebra](#algebra)
@@ -60,138 +60,142 @@ This creates the pdf `ws.pdf` in your current directory
* `genById(id)` generates a problem, solution set with generator id `id` in the format `[problem, solution]`
* Pass the kwarg `format=latex` to return problem and solution set as latex. If latex is not available for that generator, the problem will be returned as raw data.
* Pass the kwarg `format=raw` to return just the raw data for each generator. An array of each variable necessary to the generator is returned.
## List of Generators
## algebra
| Id | Skill | Example problem | Example Solution | Function Name | Kwargs |
|------|-------|-----------------|------------------|---------------|--------|
| 11 | [Basic Algebra](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/basic_algebra.py) | 9x + 6 = 6 | 0 | basic_algebra | `maxVariable=10` |
| 12 | [Logarithm](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/log.py) | log2(256) | 8 | log | `maxBase=3` `maxVal=8` |
| 17 | [Integer Multiplication with 2x2 Matrix](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/multiply_int_to_22_matrix.py) | 1 * [[3, 1], [10, 1]] = | [[3,1],[10,1]] | multiply_int_to_22_matrix | `maxMatrixVal=10` `maxRes=100` |
| 20 | [Midpoint of the two point](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/midpoint_of_two_points.py) | (-19,-5),(-10,-3)= | (-14.5,-4.0) | midpoint_of_two_points | `maxValue=20` |
| 21 | [Factoring Quadratic](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/factoring.py) | x^2-18x+81 | (x-9)(x-9) | factoring | `range_x1=10` `range_x2=10` |
| 23 | [Solve a System of Equations in R^2](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/system_of_equations.py) | -3x + 4y = -12, -x + 10y = 22 | x = 8, y = 3 | system_of_equations | `range_x=10` `range_y=10` `coeff_mult_range=10` |
| 24 | [Distance between 2 points](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/distance_two_points.py) | Find the distance between (3, 7) and (-20, -18) | sqrt(1154) | distance_two_points | `maxValXY=20` `minValXY=-20` |
| 26 | [Linear Equations](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/linear_equations.py) | 6x + -13y = 111, 2x + -4y = 36 | x = 12, y = -3 | linear_equations | `n=2` `varRange=20` `coeffRange=20` |
| 41 | [Intersection of Two Lines](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/intersection_of_two_lines.py) | Find the point of intersection of the two lines: y = -8/4x - 7 and y = -7/3x + 4 | (33, -73) | intersection_of_two_lines | `minM=-10` `maxM=10` `minB=-10` `maxB=10` `minDenominator=1` `maxDenominator=6` |
| 43 | [Cross Product of 2 Vectors](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/vector_cross.py) | [1, 7, -1] X [-5, 8, 19] = | [141, -14, 43] | vector_cross | `minVal=-20` `maxVal=20` |
| 45 | [Simple Interest](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/simple_interest.py) | Simple interest for a principle amount of 5581 dollars, 1% rate of interest and for a time period of 8 years is = | 446.48 | simple_interest | `maxPrinciple=10000` `maxRate=10` `maxTime=10` |
| 46 | [Multiplication of two matrices](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/matrix_multiplication.py) | Multiply<table><tr><td>3</td><td>-7</td><td>-9</td><td>-9</td></tr><tr><td>-2</td><td>5</td><td>-4</td><td>10</td></tr></table>and<table><tr><td>9</td><td>-2</td><td>10</td><td>-8</td></tr><tr><td>-3</td><td>10</td><td>-9</td><td>1</td></tr><tr><td>5</td><td>3</td><td>0</td><td>3</td></tr><tr><td>0</td><td>3</td><td>-10</td><td>0</td></tr></table> | <table><tr><td>3</td><td>-130</td><td>183</td><td>-58</td></tr><tr><td>-53</td><td>72</td><td>-165</td><td>9</td></tr></table> | matrix_multiplication | `maxVal=100` `max_dim=10` |
| 50 | [Quadratic Equation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/quadratic_equation.py) | Zeros of the Quadratic Equation 98x^2+108x+23=0 | [-0.29, -0.81] | quadratic_equation | `maxVal=100` |
| 65 | [Multiplication of 2 complex numbers](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/multiply_complex_numbers.py) | (8+10j) * (-7+4j) = | (-96-38j) | multiply_complex_numbers | `minRealImaginaryNum=-20` `maxRealImaginaryNum=20` |
| 72 | [Dot Product of 2 Vectors](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/vector_dot.py) | [-3, -8, 2] . [15, 7, -6] = | -113 | vector_dot | `minVal=-20` `maxVal=20` |
| 74 | [Inverse of a Matrix](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/invert_matrix.py) | Inverse of Matrix Matrix([[60, 59, 5], [64, 13, 45], [54, 19, 35]]) is: | Matrix([[20/511, 197/1022, -37/146], [-19/1022, -183/1022, 17/73], [-257/5110, -1023/5110, 107/365]]) | invert_matrix | `SquareMatrixDimension=3` `MaxMatrixElement=99` `OnlyIntegerElementsInInvertedMatrix=False` |
| 77 | [Determinant to 2x2 Matrix](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/int_matrix_22_determinant.py) | Det([[38, 27], [91, 58]]) = | -253 | int_matrix_22_determinant | `maxMatrixVal=100` |
| 78 | [Compound Interest](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/compound_interest.py) | Compound interest for a principle amount of 5669 dollars, 4% rate of interest and for a time period of 8 year is = | 7758.42 | compound_interest | `maxPrinciple=10000` `maxRate=10` `maxTime=10` |
| 100 | [complex Quadratic Equation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/complex_quadratic.py) | Find the roots of given Quadratic Equation 3x^2 + 9x + 4 = 0 | simplified solution : ((-0.543, -2.457)), generalized solution : ((-9 + sqrt(33))/2*3, (-9 - sqrt(33))/2*3) | complex_quadratic | `prob_type=0` `max_range=10` |
| 105 | [Combine Like terms](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/combine_like_terms.py) | 7x^1 | 7x^1 | combine_like_terms | `maxCoef=10` `maxExp=20` `maxTerms=10` |
| 111 | [Expanding Factored Binomial](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/expanding.py) | (8x-5)(-3x-3) | -24*x^2-9*x+15 | expanding | `range_x1=10` `range_x2=10` `range_a=10` `range_b=10` |
| 11 | [Basic Algebra](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/basic_algebra.py) | 4x + 8 = 10 | 1/2 | basic_algebra | `maxVariable=10` |
| 12 | [Logarithm](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/log.py) | log2(8) | 3 | log | `maxBase=3` `maxVal=8` |
| 17 | [Integer Multiplication with 2x2 Matrix](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/multiply_int_to_22_matrix.py) | 6 * [[3, 3], [7, 2]] = | [[18,18],[42,12]] | multiply_int_to_22_matrix | `maxMatrixVal=10` `maxRes=100` |
| 20 | [Midpoint of the two point](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/midpoint_of_two_points.py) | (-10,11),(-4,-12)= | (-7.0,-0.5) | midpoint_of_two_points | `maxValue=20` |
| 21 | [Factoring Quadratic](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/factoring.py) | x^2+4x-21 | (x+7)(x-3) | factoring | `range_x1=10` `range_x2=10` |
| 23 | [Solve a System of Equations in R^2](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/system_of_equations.py) | -x + 8y = -35, -4x + 5y = -32 | x = 3, y = -4 | system_of_equations | `range_x=10` `range_y=10` `coeff_mult_range=10` |
| 24 | [Distance between 2 points](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/distance_two_points.py) | Find the distance between (-4, 5) and (-19, 11) | sqrt(261) | distance_two_points | `maxValXY=20` `minValXY=-20` |
| 26 | [Linear Equations](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/linear_equations.py) | 3x + 6y = 18, -14x + 11y = -279 | x = 16, y = -5 | linear_equations | `n=2` `varRange=20` `coeffRange=20` |
| 41 | [Intersection of Two Lines](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/intersection_of_two_lines.py) | Find the point of intersection of the two lines: y = 0/5x + 10 and y = -5/2x + 5 | (-2, 10) | intersection_of_two_lines | `minM=-10` `maxM=10` `minB=-10` `maxB=10` `minDenominator=1` `maxDenominator=6` |
| 43 | [Cross Product of 2 Vectors](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/vector_cross.py) | [-2, -13, 7] X [9, -17, 8] = | [15, 79, 151] | vector_cross | `minVal=-20` `maxVal=20` |
| 45 | [Simple Interest](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/simple_interest.py) | Simple interest for a principle amount of 2145 dollars, 7% rate of interest and for a time period of 7 years is = | 1051.05 | simple_interest | `maxPrinciple=10000` `maxRate=10` `maxTime=10` |
| 46 | [Multiplication of two matrices](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/matrix_multiplication.py) | Multiply<table><tr><td>-8</td><td>-7</td></tr><tr><td>10</td><td>2</td></tr><tr><td>-7</td><td>-8</td></tr><tr><td>-7</td><td>-10</td></tr></table>and<table><tr><td>9</td><td>2</td><td>2</td><td>1</td></tr><tr><td>-1</td><td>3</td><td>-1</td><td>-6</td></tr></table> | <table><tr><td>-65</td><td>-37</td><td>-9</td><td>34</td></tr><tr><td>88</td><td>26</td><td>18</td><td>-2</td></tr><tr><td>-55</td><td>-38</td><td>-6</td><td>41</td></tr><tr><td>-53</td><td>-44</td><td>-4</td><td>53</td></tr></table> | matrix_multiplication | `maxVal=100` `max_dim=10` |
| 50 | [Quadratic Equation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/quadratic_equation.py) | Zeros of the Quadratic Equation 10x^2+51x+46=0 | [-1.17, -3.93] | quadratic_equation | `maxVal=100` |
| 65 | [Multiplication of 2 complex numbers](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/multiply_complex_numbers.py) | (-4+11j) * (5-9j) = | (79+91j) | multiply_complex_numbers | `minRealImaginaryNum=-20` `maxRealImaginaryNum=20` |
| 72 | [Dot Product of 2 Vectors](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/vector_dot.py) | [-12, 11, 13] . [-4, 9, -13] = | -22 | vector_dot | `minVal=-20` `maxVal=20` |
| 74 | [Inverse of a Matrix](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/invert_matrix.py) | Inverse of Matrix Matrix([[25, 98, 43], [11, 56, 70], [27, 19, 89]]) is: | Matrix([[1218/41533, -2635/41533, 1484/41533], [911/124599, 1064/124599, -1277/124599], [-1303/124599, 2171/124599, 322/124599]]) | invert_matrix | `SquareMatrixDimension=3` `MaxMatrixElement=99` `OnlyIntegerElementsInInvertedMatrix=False` |
| 77 | [Determinant to 2x2 Matrix](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/int_matrix_22_determinant.py) | Det([[11, 84], [38, 41]]) = | -2741 | int_matrix_22_determinant | `maxMatrixVal=100` |
| 78 | [Compound Interest](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/compound_interest.py) | Compound interest for a principle amount of 4581 dollars, 4% rate of interest and for a time period of 6 year is = | 5796.43 | compound_interest | `maxPrinciple=10000` `maxRate=10` `maxTime=10` |
| 100 | [complex Quadratic Equation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/complex_quadratic.py) | Find the roots of given Quadratic Equation 9x^2 + 7x + 1 = 0 | simplified solution : ((-0.189, -0.589)), generalized solution : ((-7 + sqrt(13))/2*9, (-7 - sqrt(13))/2*9) | complex_quadratic | `prob_type=0` `max_range=10` |
| 105 | [Combine Like terms](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/combine_like_terms.py) | 8x^4 + 4x^4 + 6x^1 + 9x^4 + 7x^5 + 10x^3 | 6x^1 + 10x^3 + 21x^4 + 7x^5 | combine_like_terms | `maxCoef=10` `maxExp=20` `maxTerms=10` |
| 111 | [Expanding Factored Binomial](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/algebra/expanding.py) | (x-3)(x+4) | *x^2-3*x-12 | expanding | `range_x1=10` `range_x2=10` `range_a=10` `range_b=10` |
## basic_math
| Id | Skill | Example problem | Example Solution | Function Name | Kwargs |
|------|-------|-----------------|------------------|---------------|--------|
| 0 | [Addition](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/addition.py) | 33+15= | 48 | addition | `maxSum=99` `maxAddend=50` |
| 1 | [Subtraction](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/subtraction.py) | 5-5= | 0 | subtraction | `maxMinuend=99` `maxDiff=99` |
| 2 | [Multiplication](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/multiplication.py) | 1*11= | 11 | multiplication | `maxMulti=12` |
| 3 | [Division](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/division.py) | 384/16= | 24 | division | `maxA=25` `maxB=25` |
| 6 | [Square Root](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/square_root.py) | sqrt(49)= | 7 | square_root | `minNo=1` `maxNo=12` |
| 8 | [Square](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/square.py) | 13^2= | 169 | square | `maxSquareNum=20` |
| 13 | [Complex Division](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/complex_division.py) | 89/11= | 8.09 | complex_division | `maxRes=99` `maxDivid=99` |
| 16 | [Fraction Division](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/divide_fractions.py) | (2/9)/(3/4) | 8/27 | divide_fractions | `maxVal=10` |
| 28 | [Fraction Multiplication](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/fraction_multiplication.py) | (3/8)*(10/8) | 15/32 | fraction_multiplication | `maxVal=10` |
| 0 | [Addition](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/addition.py) | 16+43= | 59 | addition | `maxSum=99` `maxAddend=50` |
| 1 | [Subtraction](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/subtraction.py) | 85-8= | 77 | subtraction | `maxMinuend=99` `maxDiff=99` |
| 2 | [Multiplication](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/multiplication.py) | 1*4= | 4 | multiplication | `maxMulti=12` |
| 3 | [Division](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/division.py) | 9/9= | 1 | division | `maxA=25` `maxB=25` |
| 6 | [Square Root](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/square_root.py) | sqrt(4)= | 2 | square_root | `minNo=1` `maxNo=12` |
| 8 | [Square](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/square.py) | 17^2= | 289 | square | `maxSquareNum=20` |
| 13 | [Complex Division](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/complex_division.py) | 21/59= | 0.36 | complex_division | `maxRes=99` `maxDivid=99` |
| 16 | [Fraction Division](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/divide_fractions.py) | (5/2)/(3/10) | 25/3 | divide_fractions | `maxVal=10` |
| 28 | [Fraction Multiplication](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/fraction_multiplication.py) | (5/1)*(10/4) | 25/2 | fraction_multiplication | `maxVal=10` |
| 31 | [Factorial](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/factorial.py) | 2! = | 2 | factorial | `maxInput=6` |
| 44 | [Compare Fractions](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/compare_fractions.py) | Which symbol represents the comparison between 9/8 and 10/7? | < | compare_fractions | `maxVal=10` |
| 47 | [Cube Root](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/cube_root.py) | What is the cube root of 183 up to 2 decimal places? | 5.68 | cube_root | `minNo=1` `maxNo=1000` |
| 53 | [Exponentiation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/exponentiation.py) | 20^6 = | 64000000 | exponentiation | `maxBase=20` `maxExpo=10` |
| 71 | [Absolute difference between two numbers](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/absolute_difference.py) | |-67--16|= | 51 | absolute_difference | `maxA=100` `maxB=100` |
| 80 | [Percentage of a number](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/percentage.py) | What is 24% of 74? | 17.76 | percentage | `maxValue=99` `maxpercentage=99` |
| 90 | [isprime](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/is_prime.py) | Is 50 prime? | No | is_prime | `max_num=100` |
| 97 | [Power of Powers](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/power_of_powers.py) | Simplify 48^7^6= | 48^42 | power_of_powers | `maxBase=50` `maxPower=10` |
| 44 | [Compare Fractions](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/compare_fractions.py) | Which symbol represents the comparison between 8/2 and 9/8? | > | compare_fractions | `maxVal=10` |
| 47 | [Cube Root](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/cube_root.py) | What is the cube root of 396 up to 2 decimal places? | 7.34 | cube_root | `minNo=1` `maxNo=1000` |
| 53 | [Exponentiation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/exponentiation.py) | 2^7 = | 128 | exponentiation | `maxBase=20` `maxExpo=10` |
| 71 | [Absolute difference between two numbers](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/absolute_difference.py) | |37--95|= | 132 | absolute_difference | `maxA=100` `maxB=100` |
| 80 | [Percentage of a number](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/percentage.py) | What is 99% of 76? | 75.24 | percentage | `maxValue=99` `maxpercentage=99` |
| 90 | [isprime](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/is_prime.py) | Is 61 prime? | Yes | is_prime | `max_num=100` |
| 97 | [Power of Powers](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/basic_math/power_of_powers.py) | Simplify 49^8^2= | 49^16 | power_of_powers | `maxBase=50` `maxPower=10` |
## calculus
| Id | Skill | Example problem | Example Solution | Function Name | Kwargs |
|------|-------|-----------------|------------------|---------------|--------|
| 7 | [Power Rule Differentiation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/calculus/power_rule_differentiation.py) | 7x^2 + 7x^3 + 5x^9 + 4x^1 | 14x^1 + 21x^2 + 45x^8 + 4x^0 | power_rule_differentiation | `maxCoef=10` `maxExp=10` `maxTerms=5` |
| 48 | [Power Rule Integration](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/calculus/power_rule_integration.py) | 4x^6 + 1x^9 + 8x^1 + 1x^8 | (4/6)x^7 + (1/9)x^10 + (8/1)x^2 + (1/8)x^9 + c | power_rule_integration | `maxCoef=10` `maxExp=10` `maxTerms=5` |
| 88 | [Differentiation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/calculus/differentiation.py) | differentiate w.r.t x : d(sin(x)+8*x^3)/dx | 24*x^2 + cos(x) | differentiation | `diff_lvl=2` |
| 89 | [Definite Integral of Quadratic Equation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/calculus/definite_integral.py) | The definite integral within limits 0 to 1 of the equation 62x^2 + 93x + 81 is = | 148.1667 | definite_integral | `max_coeff=100` |
| 110 | [Stationary Points](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/calculus/stationary_points.py) | f(x)=9*x^3 + 3*x^2 + 4 | (-2/9,328/81),(0,4) | stationary_points | `maxExp=3` `maxCoef=10` |
| 7 | [Power Rule Differentiation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/calculus/power_rule_differentiation.py) | 2x^1 + 9x^7 + 6x^4 | 2x^0 + 63x^6 + 24x^3 | power_rule_differentiation | `maxCoef=10` `maxExp=10` `maxTerms=5` |
| 48 | [Power Rule Integration](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/calculus/power_rule_integration.py) | 5x^2 + 3x^10 + 4x^1 | (5/2)x^3 + (3/10)x^11 + (4/1)x^2 + c | power_rule_integration | `maxCoef=10` `maxExp=10` `maxTerms=5` |
| 88 | [Differentiation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/calculus/differentiation.py) | differentiate w.r.t x : d(ln(x)+2*x^(-3))/dx | 1/x - 6/x^4 | differentiation | `diff_lvl=2` |
| 89 | [Definite Integral of Quadratic Equation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/calculus/definite_integral.py) | The definite integral within limits 0 to 1 of the equation 100x^2 + 80x + 22 is = | 95.3333 | definite_integral | `max_coeff=100` |
| 110 | [Stationary Points](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/calculus/stationary_points.py) | f(x)=3*x^3 + 6*x^2 + 9*x + 1 | | stationary_points | `maxExp=3` `maxCoef=10` |
## computer_science
| Id | Skill | Example problem | Example Solution | Function Name | Kwargs |
|------|-------|-----------------|------------------|---------------|--------|
| 4 | [Binary Complement 1s](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/binary_complement_1s.py) | 01000= | 10111 | binary_complement_1s | `maxDigits=10` |
| 5 | [Modulo Division](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/modulo_division.py) | 64%42= | 22 | modulo_division | `maxRes=99` `maxModulo=99` |
| 14 | [Decimal to Binary](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/decimal_to_binary.py) | Binary of 63= | 111111 | decimal_to_binary | `max_dec=99` |
| 15 | [Binary to Decimal](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/binary_to_decimal.py) | 101 | 5 | binary_to_decimal | `max_dig=10` |
| 56 | [Fibonacci Series](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/fibonacci_series.py) | The Fibonacci Series of the first 14 numbers is ? | [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233] | fibonacci_series | `minNo=1` |
| 62 | [nth Fibonacci number](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/nth_fibonacci_number.py) | What is the 67th Fibonacci number? | 44945570212853 | nth_fibonacci_number | `maxN=100` |
| 64 | [Binary to Hexidecimal](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/binary_to_hex.py) | 0111111 | 0x3f | binary_to_hex | `max_dig=10` |
| 73 | [Binary 2's Complement](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/binary_2s_complement.py) | 2's complement of 10 = | 10 | binary_2s_complement | `maxDigits=10` |
| 79 | [Decimal to Hexadecimal](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/decimal_to_hexadeci.py) | Binary of 169= | 0xa9 | decimal_to_hexadeci | `max_dec=1000` |
| 84 | [Converts decimal to octal](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/decimal_to_octal.py) | The decimal number 3744 in Octal is: | 0o7240 | decimal_to_octal | `maxDecimal=4096` |
| 91 | [Binary Coded Decimal to Integer](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/bcd_to_decimal.py) | Integer of Binary Coded Decimal 1 is = | 5924 | bcd_to_decimal | `maxNumber=10000` |
| 103 | [Decimal to Binary Coded Decimal](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/decimal_to_bcd.py) | BCD of Decimal Number 3461 is = | 1385 | decimal_to_bcd | `maxNumber=10000` |
| 4 | [Binary Complement 1s](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/binary_complement_1s.py) | 1= | 0 | binary_complement_1s | `maxDigits=10` |
| 5 | [Modulo Division](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/modulo_division.py) | 51%46= | 5 | modulo_division | `maxRes=99` `maxModulo=99` |
| 14 | [Decimal to Binary](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/decimal_to_binary.py) | Binary of 58= | 111010 | decimal_to_binary | `max_dec=99` |
| 15 | [Binary to Decimal](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/binary_to_decimal.py) | 0110001111 | 399 | binary_to_decimal | `max_dig=10` |
| 56 | [Fibonacci Series](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/fibonacci_series.py) | The Fibonacci Series of the first 8 numbers is ? | [0, 1, 1, 2, 3, 5, 8, 13] | fibonacci_series | `minNo=1` |
| 62 | [nth Fibonacci number](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/nth_fibonacci_number.py) | What is the 78th Fibonacci number? | 8944394323791488 | nth_fibonacci_number | `maxN=100` |
| 64 | [Binary to Hexidecimal](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/binary_to_hex.py) | 111011 | 0x3b | binary_to_hex | `max_dig=10` |
| 73 | [Binary 2's Complement](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/binary_2s_complement.py) | 2's complement of 11010 = | 110 | binary_2s_complement | `maxDigits=10` |
| 79 | [Decimal to Hexadecimal](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/decimal_to_hexadeci.py) | Binary of 456= | 0x1c8 | decimal_to_hexadeci | `max_dec=1000` |
| 84 | [Converts decimal to octal](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/decimal_to_octal.py) | The decimal number 3211 in Octal is: | 0o6213 | decimal_to_octal | `maxDecimal=4096` |
| 91 | [Binary Coded Decimal to Integer](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/bcd_to_decimal.py) | Integer of Binary Coded Decimal 7 is = | 29237 | bcd_to_decimal | `maxNumber=10000` |
| 103 | [Decimal to Binary Coded Decimal](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/computer_science/decimal_to_bcd.py) | BCD of Decimal Number 5763 is = | 1683 | decimal_to_bcd | `maxNumber=10000` |
## geometry
| Id | Skill | Example problem | Example Solution | Function Name | Kwargs |
|------|-------|-----------------|------------------|---------------|--------|
| 18 | [Area of Triangle](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/area_of_triangle.py) | Area of triangle with side lengths: 13 7 16 = | 44.49719092257398 | area_of_triangle | `maxA=20` `maxB=20` `maxC=20` |
| 19 | [Triangle exists check](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/valid_triangle.py) | Does triangle with sides 32, 44 and 10 exist? | No | valid_triangle | `maxSideLength=50` |
| 22 | [Third Angle of Triangle](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/third_angle_of_triangle.py) | Third angle of triangle with angles 24 and 46 = | 110 | third_angle_of_triangle | `maxAngle=89` |
| 25 | [Pythagorean Theorem](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/pythagorean_theorem.py) | The hypotenuse of a right triangle given the other two lengths 13 and 10 = | 16.40 | pythagorean_theorem | `maxLength=20` |
| 29 | [Angle of a Regular Polygon](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/angle_regular_polygon.py) | Find the angle of a regular polygon with 3 sides | 60.0 | angle_regular_polygon | `minVal=3` `maxVal=20` |
| 32 | [Surface Area of Cube](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/surface_area_cube.py) | Surface area of cube with side = 15m is | 1350 m^2 | surface_area_cube | `maxSide=20` `unit='m'` |
| 33 | [Surface Area of Cuboid](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/surface_area_cuboid.py) | Surface area of cuboid with sides = 6m, 11m, 3m is | 234 m^2 | surface_area_cuboid | `maxSide=20` `unit='m'` |
| 34 | [Surface Area of Cylinder](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/surface_area_cylinder.py) | Surface area of cylinder with height = 38m and radius = 2m is | 502 m^2 | surface_area_cylinder | `maxRadius=20` `maxHeight=50` `unit='m'` |
| 35 | [Volum of Cube](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/volume_cube.py) | Volume of cube with side = 3m is | 27 m^3 | volume_cube | `maxSide=20` `unit='m'` |
| 36 | [Volume of Cuboid](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/volume_cuboid.py) | Volume of cuboid with sides = 6m, 14m, 3m is | 252 m^3 | volume_cuboid | `maxSide=20` `unit='m'` |
| 37 | [Volume of cylinder](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/volume_cylinder.py) | Volume of cylinder with height = 12m and radius = 16m is | 9650 m^3 | volume_cylinder | `maxRadius=20` `maxHeight=50` `unit='m'` |
| 38 | [Surface Area of cone](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/surface_area_cone.py) | Surface area of cone with height = 2m and radius = 5m is | 163 m^2 | surface_area_cone | `maxRadius=20` `maxHeight=50` `unit='m'` |
| 39 | [Volume of cone](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/volume_cone.py) | Volume of cone with height = 31m and radius = 8m is | 2077 m^3 | volume_cone | `maxRadius=20` `maxHeight=50` `unit='m'` |
| 49 | [Fourth Angle of Quadrilateral](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/fourth_angle_of_quadrilateral.py) | Fourth angle of quadrilateral with angles 166 , 68, 65 = | 61 | fourth_angle_of_quadrilateral | `maxAngle=180` |
| 57 | [Trigonometric Values](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/basic_trigonometry.py) | What is sin(0)? | 0 | basic_trigonometry | `angles=[0, 30, 45, 60, 90]` `functions=['sin', 'cos', 'tan']` |
| 58 | [Sum of Angles of Polygon](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/sum_of_polygon_angles.py) | Sum of angles of polygon with 10 sides = | 1440 | sum_of_polygon_angles | `maxSides=12` |
| 60 | [Surface Area of Sphere](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/surface_area_sphere.py) | Surface area of Sphere with radius = 13m is | 2123.7166338267 m^2 | surface_area_sphere | `maxSide=20` `unit='m'` |
| 61 | [Volume of Sphere](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/volume_sphere.py) | Volume of sphere with radius 33 m = | 150532.55358940852 m^3 | volume_sphere | `maxRadius=100` |
| 70 | [Angle between 2 vectors](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/angle_btw_vectors.py) | angle between the vectors [373.03, 280.56, 51.12, 848.19, 914.96, 636.42, 936.04, 218.18, 727.01, 248.11] and [696.71, 8.09, 219.08, 466.57, 583.92, 152.82, 964.12, 686.21, 400.77, 343.46] is: | 0.56 radians | angle_btw_vectors | `maxEltAmt=20` |
| 75 | [Area of a Sector](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/sector_area.py) | Given radius, 45 and angle, 145. Find the area of the sector. | Area of sector = 2562.36151 | sector_area | `maxRadius=49` `maxAngle=359` |
| 86 | [Degrees to Radians](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/degree_to_rad.py) | Angle 196 in radians is = | 3.42 | degree_to_rad | `max_deg=360` |
| 87 | [Radians to Degrees](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/radian_to_deg.py) | Angle 1 in degrees is = | 57.3 | radian_to_deg | `max_rad=3` |
| 95 | [Curved surface area of a cylinder](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/curved_surface_area_cylinder.py) | What is the curved surface area of a cylinder of radius, 16 and height, 21? | CSA of cylinder = 2111.15 | curved_surface_area_cylinder | `maxRadius=49` `maxHeight=99` |
| 96 | [Perimeter of Polygons](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/perimeter_of_polygons.py) | The perimeter of a 5 sided polygon with lengths of [13, 84, 9, 97, 119]cm is: | 322 | perimeter_of_polygons | `maxSides=12` `maxLength=120` |
| 104 | [Circumference](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/circumference.py) | Circumference of circle with radius 48 | 301.59289474462014 | circumference | `maxRadius=100` |
| 108 | [Arc length of Angle](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/arc_length.py) | Given radius, 16 and angle, 326. Find the arc length of the angle. | Arc length of the angle = 91.03637 | arc_length | `maxRadius=49` `maxAngle=359` |
| 112 | [Area of Circle](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/area_of_circle.py) | Area of circle with radius 44 | 6084.571428571428 | area_of_circle | `maxRadius=100` |
| 18 | [Area of Triangle](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/area_of_triangle.py) | Area of triangle with side lengths: 15 18 11 = | 82.3164625090267 | area_of_triangle | `maxA=20` `maxB=20` `maxC=20` |
| 19 | [Triangle exists check](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/valid_triangle.py) | Does triangle with sides 16, 30 and 26 exist? | Yes | valid_triangle | `maxSideLength=50` |
| 22 | [Third Angle of Triangle](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/third_angle_of_triangle.py) | Third angle of triangle with angles 75 and 64 = | 41 | third_angle_of_triangle | `maxAngle=89` |
| 25 | [Pythagorean Theorem](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/pythagorean_theorem.py) | The hypotenuse of a right triangle given the other two lengths 7 and 6 = | 9.22 | pythagorean_theorem | `maxLength=20` |
| 29 | [Angle of a Regular Polygon](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/angle_regular_polygon.py) | Find the angle of a regular polygon with 19 sides | 161.05 | angle_regular_polygon | `minVal=3` `maxVal=20` |
| 32 | [Surface Area of Cube](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/surface_area_cube.py) | Surface area of cube with side = 7m is | 294 m^2 | surface_area_cube | `maxSide=20` `unit='m'` |
| 33 | [Surface Area of Cuboid](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/surface_area_cuboid.py) | Surface area of cuboid with sides = 9m, 6m, 3m is | 198 m^2 | surface_area_cuboid | `maxSide=20` `unit='m'` |
| 34 | [Surface Area of Cylinder](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/surface_area_cylinder.py) | Surface area of cylinder with height = 35m and radius = 1m is | 226 m^2 | surface_area_cylinder | `maxRadius=20` `maxHeight=50` `unit='m'` |
| 35 | [Volum of Cube](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/volume_cube.py) | Volume of cube with side = 19m is | 6859 m^3 | volume_cube | `maxSide=20` `unit='m'` |
| 36 | [Volume of Cuboid](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/volume_cuboid.py) | Volume of cuboid with sides = 14m, 18m, 8m is | 2016 m^3 | volume_cuboid | `maxSide=20` `unit='m'` |
| 37 | [Volume of cylinder](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/volume_cylinder.py) | Volume of cylinder with height = 2m and radius = 4m is | 100 m^3 | volume_cylinder | `maxRadius=20` `maxHeight=50` `unit='m'` |
| 38 | [Surface Area of cone](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/surface_area_cone.py) | Surface area of cone with height = 10m and radius = 1m is | 34 m^2 | surface_area_cone | `maxRadius=20` `maxHeight=50` `unit='m'` |
| 39 | [Volume of cone](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/volume_cone.py) | Volume of cone with height = 41m and radius = 2m is | 171 m^3 | volume_cone | `maxRadius=20` `maxHeight=50` `unit='m'` |
| 49 | [Fourth Angle of Quadrilateral](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/fourth_angle_of_quadrilateral.py) | Fourth angle of quadrilateral with angles 47 , 186, 23 = | 104 | fourth_angle_of_quadrilateral | `maxAngle=180` |
| 57 | [Trigonometric Values](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/basic_trigonometry.py) | What is tan(90)? | | basic_trigonometry | `angles=[0, 30, 45, 60, 90]` `functions=['sin', 'cos', 'tan']` |
| 58 | [Sum of Angles of Polygon](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/sum_of_polygon_angles.py) | Sum of angles of polygon with 8 sides = | 1080 | sum_of_polygon_angles | `maxSides=12` |
| 60 | [Surface Area of Sphere](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/surface_area_sphere.py) | Surface area of Sphere with radius = 2m is | 50.26548245743669 m^2 | surface_area_sphere | `maxSide=20` `unit='m'` |
| 61 | [Volume of Sphere](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/volume_sphere.py) | Volume of sphere with radius 70 m = | 1436755.040241732 m^3 | volume_sphere | `maxRadius=100` |
| 70 | [Angle between 2 vectors](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/angle_btw_vectors.py) | angle between the vectors [809.39, 750.64, 808.48] and [99.52, 21.47, 323.85] is: | 0.69 radians | angle_btw_vectors | `maxEltAmt=20` |
| 75 | [Area of a Sector](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/sector_area.py) | Given radius, 38 and angle, 119. Find the area of the sector. | Area of sector = 1499.55199 | sector_area | `maxRadius=49` `maxAngle=359` |
| 86 | [Degrees to Radians](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/degree_to_rad.py) | Angle 187 in radians is = | 3.26 | degree_to_rad | `max_deg=360` |
| 87 | [Radians to Degrees](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/radian_to_deg.py) | Angle 2 in degrees is = | 114.59 | radian_to_deg | `max_rad=3` |
| 95 | [Curved surface area of a cylinder](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/curved_surface_area_cylinder.py) | What is the curved surface area of a cylinder of radius, 25 and height, 26? | CSA of cylinder = 4084.07 | curved_surface_area_cylinder | `maxRadius=49` `maxHeight=99` |
| 96 | [Perimeter of Polygons](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/perimeter_of_polygons.py) | The perimeter of a 11 sided polygon with lengths of [39, 70, 58, 27, 85, 119, 47, 59, 113, 38, 45]cm is: | 700 | perimeter_of_polygons | `maxSides=12` `maxLength=120` |
| 104 | [Circumference](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/circumference.py) | Circumference of circle with radius 76 | 477.5220833456485 | circumference | `maxRadius=100` |
| 108 | [Arc length of Angle](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/arc_length.py) | Given radius, 30 and angle, 240. Find the arc length of the angle. | Arc length of the angle = 125.66371 | arc_length | `maxRadius=49` `maxAngle=359` |
| 112 | [Area of Circle](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/geometry/area_of_circle.py) | Area of circle with radius 37 | 4302.571428571428 | area_of_circle | `maxRadius=100` |
## misc
| Id | Skill | Example problem | Example Solution | Function Name | Kwargs |
|------|-------|-----------------|------------------|---------------|--------|
| 9 | [LCM (Least Common Multiple)](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/lcm.py) | LCM of 1 and 15 = | 15 | lcm | `maxVal=20` |
| 10 | [GCD (Greatest Common Denominator)](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/gcd.py) | GCD of 3 and 3 = | 3 | gcd | `maxVal=20` |
| 27 | [Prime Factorisation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/prime_factors.py) | Find prime factors of 167 | [167] | prime_factors | `minVal=1` `maxVal=200` |
| 40 | [Common Factors](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/common_factors.py) | Common Factors of 55 and 33 = | [1, 11] | common_factors | `maxVal=100` |
| 51 | [HCF (Highest Common Factor)](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/hcf.py) | HCF of 16 and 9 = | 1 | hcf | `maxVal=20` |
| 55 | [Comparing surds](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/surds_comparison.py) | Fill in the blanks 62^(1/7) _ 74^(1/6) | < | surds_comparison | `maxValue=100` `maxRoot=10` |
| 63 | [Profit or Loss Percent](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/profit_loss_percent.py) | Loss percent when CP = 704 and SP = 134 is: | 80.9659090909091 | profit_loss_percent | `maxCP=1000` `maxSP=1000` |
| 66 | [Geometric Progression](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/geometric_progression.py) | For the given GP [8, 40, 200, 1000, 5000, 25000] ,Find the value of a,common ratio,8th term value, sum upto 11th term | The value of a is 8, common ratio is 5 , 8th term is 625000 , sum upto 11th term is 97656248.0 | geometric_progression | `number_values=6` `min_value=2` `max_value=12` `n_term=7` `sum_term=5` |
| 67 | [Geometric Mean of N Numbers](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/geometric_mean.py) | Geometric mean of 4 numbers 66 , 46 , 28 , 54 = | (66*46*28*54)^(1/4) = 46.2874642463462 | geometric_mean | `maxValue=100` `maxNum=4` |
| 68 | [Harmonic Mean of N Numbers](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/harmonic_mean.py) | Harmonic mean of 4 numbers 74 , 59 , 47 , 36 = | 4/((1/74) + (1/59) + (1/47) + (1/36)) = 50.30368360304657 | harmonic_mean | `maxValue=100` `maxNum=4` |
| 69 | [Euclidian norm or L2 norm of a vector](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/euclidian_norm.py) | Euclidian norm or L2 norm of the vector[118.69308620957398, 418.5316709436745, 529.1318417822414, 545.3215860464462, 387.999979078107, 298.1451264197782, 392.3895332994427, 833.7453539560848, 555.724882920332, 472.05768476591004, 214.55377537613495, 760.9785260761229, 448.91380437418314, 73.27333213603282, 791.8291233802007, 918.6577753538513] is: | 2165.5845872381433 | euclidian_norm | `maxEltAmt=20` |
| 81 | [Celsius To Fahrenheit](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/celsius_to_fahrenheit.py) | Convert -12 degrees Celsius to degrees Fahrenheit = | 10.399999999999999 | celsius_to_fahrenheit | `maxTemp=100` |
| 82 | [AP Term Calculation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/arithmetic_progression_term.py) | Find the term number 29 of the AP series: -80, -71, -62 ... | 172 | arithmetic_progression_term | `maxd=100` `maxa=100` `maxn=100` |
| 83 | [AP Sum Calculation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/arithmetic_progression_sum.py) | Find the sum of first 64 terms of the AP series: -94, -6, 82 ... | 171392.0 | arithmetic_progression_sum | `maxd=100` `maxa=100` `maxn=100` |
| 85 | [Converts decimal to Roman Numerals](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/decimal_to_roman_numerals.py) | The number 3026 in Roman Numerals is: | MMMXXVI | decimal_to_roman_numerals | `maxDecimal=4000` |
| 92 | [Complex To Polar Form](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/complex_to_polar.py) | rexp(itheta) = | 26.91exp(i-2.3) | complex_to_polar | `minRealImaginaryNum=-20, maxRealImaginaryNum=20` |
| 93 | [Union,Intersection,Difference of Two Sets](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/set_operation.py) | Given the two sets a={1, 6, 7, 8, 9} ,b={1, 3, 4, 5, 10}.Find the Union,intersection,a-b,b-a and symmetric difference | Union is {1, 3, 4, 5, 6, 7, 8, 9, 10},Intersection is {1}, a-b is {8, 9, 6, 7},b-a is {10, 3, 4, 5}, Symmetric difference is {3, 4, 5, 6, 7, 8, 9, 10} | set_operation | `minval=3` `maxval=7` `n_a=4` `n_b=5` |
| 94 | [Base Conversion](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/base_conversion.py) | Convert A201 from base 14 to base 10. | 27833 | base_conversion | `maxNum=60000` `maxBase=16` |
| 98 | [Quotient of Powers with Same Base](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/quotient_of_power_same_base.py) | The Quotient of 42^7 and 42^6 = 42^(7-6) = 42^1 | 42 | quotient_of_power_same_base | `maxBase=50` `maxPower=10` |
| 99 | [Quotient of Powers with Same Power](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/quotient_of_power_same_power.py) | The Quotient of 31^10 and 37^10 = (31/37)^10 = 0.8378378378378378^10 | 0.17045105659000342 | quotient_of_power_same_power | `maxBase=50` `maxPower=10` |
| 101 | [Leap Year or Not](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/is_leap_year.py) | Year 1999 | is not a leap year | is_leap_year | `minNumber=1900` `maxNumber=2099` |
| 102 | [Minute to Hour conversion](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/minutes_to_hours.py) | Convert 851 minutes to Hours & Minutes | 14 hours and 11 minutes | minutes_to_hours | `maxMinutes=999` |
| 106 | [signum function](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/signum_function.py) | signum of 525 is = | 1 | signum_function | `min=-999` `max=999` |
| 109 | [Binomial distribution](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/binomial_distribution.py) | A manufacturer of metal pistons finds that, on average, 40.41% of the pistons they manufacture are rejected because they are incorrectly sized. What is the probability that a batch of 11 pistons will contain no more than 4 rejected pistons? | 52.15 | binomial_distribution | `` |
| 9 | [LCM (Least Common Multiple)](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/lcm.py) | LCM of 19 and 2 = | 38 | lcm | `maxVal=20` |
| 10 | [GCD (Greatest Common Denominator)](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/gcd.py) | GCD of 16 and 6 = | 2 | gcd | `maxVal=20` |
| 27 | [Prime Factorisation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/prime_factors.py) | Find prime factors of 78 | [2, 3, 13] | prime_factors | `minVal=1` `maxVal=200` |
| 40 | [Common Factors](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/common_factors.py) | Common Factors of 21 and 77 = | [1, 7] | common_factors | `maxVal=100` |
| 51 | [HCF (Highest Common Factor)](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/hcf.py) | HCF of 17 and 3 = | 1 | hcf | `maxVal=20` |
| 55 | [Comparing surds](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/surds_comparison.py) | Fill in the blanks 58^(1/5) _ 18^(1/8) | > | surds_comparison | `maxValue=100` `maxRoot=10` |
| 63 | [Profit or Loss Percent](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/profit_loss_percent.py) | Loss percent when CP = 821 and SP = 113 is: | 86.23629719853837 | profit_loss_percent | `maxCP=1000` `maxSP=1000` |
| 66 | [Geometric Progression](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/geometric_progression.py) | For the given GP [5, 15, 45, 135, 405, 1215] ,Find the value of a,common ratio,10th term value, sum upto 11th term | The value of a is 5, common ratio is 3 , 10th term is 98415 , sum upto 11th term is 442865.0 | geometric_progression | `number_values=6` `min_value=2` `max_value=12` `n_term=7` `sum_term=5` |
| 67 | [Geometric Mean of N Numbers](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/geometric_mean.py) | Geometric mean of 4 numbers 76 , 17 , 48 , 57 = | (76*17*48*57)^(1/4) = 43.36053695794891 | geometric_mean | `maxValue=100` `maxNum=4` |
| 68 | [Harmonic Mean of N Numbers](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/harmonic_mean.py) | Harmonic mean of 4 numbers 12 , 23 , 94 , 96 = | 4/((1/12) + (1/23) + (1/94) + (1/96)) = 27.0514173998045 | harmonic_mean | `maxValue=100` `maxNum=4` |
| 69 | [Euclidian norm or L2 norm of a vector](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/euclidian_norm.py) | Euclidian norm or L2 norm of the vector[802.4475305377166, 660.7012519538307, 370.72333556197833, 54.54747734093479, 367.379416204208, 945.4792894951261, 219.91075384694793, 302.48678829534293] is: | 1545.8386466508773 | euclidian_norm | `maxEltAmt=20` |
| 81 | [Celsius To Fahrenheit](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/celsius_to_fahrenheit.py) | Convert 6 degrees Celsius to degrees Fahrenheit = | 42.8 | celsius_to_fahrenheit | `maxTemp=100` |
| 82 | [AP Term Calculation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/arithmetic_progression_term.py) | Find the term number 67 of the AP series: -19, -81, -143 ... | -4111 | arithmetic_progression_term | `maxd=100` `maxa=100` `maxn=100` |
| 83 | [AP Sum Calculation](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/arithmetic_progression_sum.py) | Find the sum of first 45 terms of the AP series: 58, 32, 6 ... | -23130.0 | arithmetic_progression_sum | `maxd=100` `maxa=100` `maxn=100` |
| 85 | [Converts decimal to Roman Numerals](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/decimal_to_roman_numerals.py) | The number 0 in Roman Numerals is: | MMMDCCCXXXV | decimal_to_roman_numerals | `maxDecimal=4000` |
| 92 | [Complex To Polar Form](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/complex_to_polar.py) | 17.12(2.0theta + i-17.0theta) | -1.45 | complex_to_polar | `minRealImaginaryNum=-20, maxRealImaginaryNum=20` |
| 93 | [Union,Intersection,Difference of Two Sets](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/set_operation.py) | Given the two sets a={8, 9, 5} ,b={10, 3, 6, 7}.Find the Union,intersection,a-b,b-a and symmetric difference | Union is {3, 5, 6, 7, 8, 9, 10},Intersection is set(), a-b is {8, 9, 5},b-a is {10, 3, 6, 7}, Symmetric difference is {3, 5, 6, 7, 8, 9, 10} | set_operation | `minval=3` `maxval=7` `n_a=4` `n_b=5` |
| 94 | [Base Conversion](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/base_conversion.py) | Convert E87 from base 16 to base 10. | 3719 | base_conversion | `maxNum=60000` `maxBase=16` |
| 98 | [Quotient of Powers with Same Base](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/quotient_of_power_same_base.py) | The Quotient of 31^8 and 31^8 = 31^(8-8) = 31^0 | 1 | quotient_of_power_same_base | `maxBase=50` `maxPower=10` |
| 99 | [Quotient of Powers with Same Power](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/quotient_of_power_same_power.py) | The Quotient of 24^1 and 19^1 = (24/19)^1 = 1.263157894736842^1 | 1.263157894736842 | quotient_of_power_same_power | `maxBase=50` `maxPower=10` |
| 101 | [Leap Year or Not](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/is_leap_year.py) | Year 2086 | is not a leap year | is_leap_year | `minNumber=1900` `maxNumber=2099` |
| 102 | [Minute to Hour conversion](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/minutes_to_hours.py) | Convert 680 minutes to Hours & Minutes | 11 hours and 20 minutes | minutes_to_hours | `maxMinutes=999` |
| 106 | [signum function](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/signum_function.py) | signum of -93 is = | -1 | signum_function | `min=-999` `max=999` |
| 109 | [Binomial distribution](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/misc/binomial_distribution.py) | A manufacturer of metal pistons finds that, on average, 40.52% of the pistons they manufacture are rejected because they are incorrectly sized. What is the probability that a batch of 20 pistons will contain no more than 2 rejected pistons? | 0.32 | binomial_distribution | `` |
## statistics
| Id | Skill | Example problem | Example Solution | Function Name | Kwargs |
|------|-------|-----------------|------------------|---------------|--------|
| 30 | [Combinations of Objects](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/statistics/combinations.py) | Number of combinations from 15 objects picked 1 at a time | 15 | combinations | `maxlength=20` |
| 42 | [Permutations](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/statistics/permutation.py) | Number of Permutations from 11 objects picked 8 at a time = | 6652800 | permutation | `maxlength=20` |
| 52 | [Probability of a certain sum appearing on faces of dice](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/statistics/dice_sum_probability.py) | If 1 dice are rolled at the same time, the probability of getting a sum of 5 = | 1/6 | dice_sum_probability | `maxDice=3` |
| 54 | [Confidence interval For sample S](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/statistics/confidence_interval.py) | The confidence interval for sample [214, 235, 201, 238, 244, 219, 266, 234, 298, 258, 255, 254, 243, 220, 223, 215, 209, 225, 296, 252, 267, 248, 262, 226, 205, 211, 265] with 99% confidence is | (252.7166888228517, 227.50553339937053) | confidence_interval | `` |
| 59 | [Mean,Standard Deviation,Variance](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/statistics/data_summary.py) | Find the mean,standard deviation and variance for the data[31, 36, 35, 21, 38, 20, 19, 11, 37, 31, 24, 19, 18, 15, 17] | The Mean is 24.8 , Standard Deviation is 75.22666666666666, Variance is 8.673330771201261 | data_summary | `number_values=15` `minval=5` `maxval=50` |
| 76 | [Mean and Median](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/statistics/mean_median.py) | Given the series of numbers [32, 87, 22, 86, 92, 17, 57, 68, 82, 94]. find the arithmatic mean and mdian of the series | Arithmetic mean of the series is 63.7 and Arithmetic median of this series is 75.0 | mean_median | `maxlen=10` |
| 107 | [Conditional Probability](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/statistics/conditional_probability.py) | Someone tested positive for a nasty disease which only 1.78% of population have. Test sensitivity (true positive) is equal to SN= 96.47% whereas test specificity (true negative) SP= 92.86%. What is the probability that this guy really has that disease? | 19.67% | conditional_probability | `` |
| 30 | [Combinations of Objects](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/statistics/combinations.py) | Number of combinations from 17 objects picked 0 at a time | 1 | combinations | `maxlength=20` |
| 42 | [Permutations](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/statistics/permutation.py) | Number of Permutations from 16 objects picked 8 at a time = | 518918400 | permutation | `maxlength=20` |
| 52 | [Probability of a certain sum appearing on faces of dice](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/statistics/dice_sum_probability.py) | If 3 dice are rolled at the same time, the probability of getting a sum of 5 = | 6/216 | dice_sum_probability | `maxDice=3` |
| 54 | [Confidence interval For sample S](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/statistics/confidence_interval.py) | The confidence interval for sample [272, 287, 274, 273, 266, 212, 242, 258, 291, 243, 248, 240, 236, 232, 249, 207, 271, 251, 206, 282, 295, 283, 238, 210, 234, 288, 268, 229, 289, 219, 294, 264, 215] with 95% confidence is | (262.9335851189468, 244.09671791135625) | confidence_interval | `` |
| 59 | [Mean,Standard Deviation,Variance](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/statistics/data_summary.py) | Find the mean,standard deviation and variance for the data[50, 29, 15, 50, 26, 25, 12, 16, 31, 38, 31, 5, 7, 42, 36] | The Mean is 27.533333333333335 , Standard Deviation is 193.0488888888889, Variance is 13.894203427648845 | data_summary | `number_values=15` `minval=5` `maxval=50` |
| 76 | [Mean and Median](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/statistics/mean_median.py) | Given the series of numbers [6, 9, 17, 22, 26, 35, 37, 58, 75, 83]. find the arithmatic mean and mdian of the series | Arithmetic mean of the series is 36.8 and Arithmetic median of this series is 30.5 | mean_median | `maxlen=10` |
| 107 | [Conditional Probability](https://github.com/lukew3/mathgenerator/blob/main/mathgenerator/funcs/statistics/conditional_probability.py) | Someone tested positive for a nasty disease which only 0.18% of population have. Test sensitivity (true positive) is equal to SN= 93.38% whereas test specificity (true negative) SP= 93.15%. What is the probability that this guy really has that disease? | 2.4% | conditional_probability | `` |

View File

@@ -31,12 +31,6 @@ class Generator:
) + " " + self.title
def __call__(self, *args, **kwargs):
try:
return self.func(*args, **kwargs)
except TypeError:
# If an error is thrown from kwargs, remove the style element
# This happens if someone trys to get style='latex' for an
del kwargs['style']
return self.func(*args, **kwargs)

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def basicAlgebraFunc(maxVariable=10, style='raw'):
def basicAlgebraFunc(maxVariable=10, format='string'):
a = random.randint(1, maxVariable)
b = random.randint(1, maxVariable)
c = random.randint(b, maxVariable)
@@ -20,13 +20,17 @@ def basicAlgebraFunc(maxVariable=10, style='raw'):
elif a == 1 or a == i:
x = f"{c - b}"
if style == 'latex':
problem = f"\\({a}x + {b} = {c}\\)"
solution = "\\(" + x + "\\)"
else:
if format == 'string':
problem = f"{a}x + {b} = {c}"
solution = x
return problem, solution
return problem, solution
elif format == 'latex':
problem = f"\\({a}x + {b} = {c}\\)"
solution = "\\(" + x + "\\)"
return problem, solution
else:
return a, b, c, x
basic_algebra = Generator("Basic Algebra", 11,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def likeTermCombineFunc(maxCoef=10, maxExp=20, maxTerms=10):
def likeTermCombineFunc(maxCoef=10, maxExp=20, maxTerms=10, format='string'):
numTerms = random.randint(1, maxTerms)
problem = ""
solution = ""
@@ -16,7 +16,10 @@ def likeTermCombineFunc(maxCoef=10, maxExp=20, maxTerms=10):
problem += str(coefficient) + "x^" + str(exponent)
solution = combineTerms(problem)
return problem, solution
if format == 'string':
return problem, solution
else:
return problem, solution
def combineTerms(string):

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def complexQuadraticFunc(prob_type=0, max_range=10):
def complexQuadraticFunc(prob_type=0, max_range=10, format='string'):
if prob_type < 0 or prob_type > 1:
print("prob_type not supported")
print("prob_type = 0 for real roots problems ")

View File

@@ -1,16 +1,19 @@
from .__init__ import *
def compoundInterestFunc(maxPrinciple=10000, maxRate=10, maxTime=10):
def compoundInterestFunc(maxPrinciple=10000, maxRate=10, maxTime=10, format='string'):
p = random.randint(1000, maxPrinciple)
r = random.randint(1, maxRate)
n = random.randint(1, maxTime)
a = p * (1 + r / 100)**n
problem = "Compound interest for a principle amount of " + \
str(p) + " dollars, " + str(r) + \
"% rate of interest and for a time period of " + str(n) + " year is = "
solution = round(a, 2)
return problem, solution
a = round(p * (1 + r / 100)**n, 2)
if format == 'string':
problem = "Compound interest for a principle amount of " + \
str(p) + " dollars, " + str(r) + \
"% rate of interest and for a time period of " + str(n) + " year is = "
return problem, str(a)
else:
return p, r, n, a
compound_interest = Generator(

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def distanceTwoPointsFunc(maxValXY=20, minValXY=-20):
def distanceTwoPointsFunc(maxValXY=20, minValXY=-20, format='string'):
point1X = random.randint(minValXY, maxValXY + 1)
point1Y = random.randint(minValXY, maxValXY + 1)
point2X = random.randint(minValXY, maxValXY + 1)
@@ -9,10 +9,12 @@ def distanceTwoPointsFunc(maxValXY=20, minValXY=-20):
distanceSq = (point1X - point2X)**2 + (point1Y - point2Y)**2
solution = f"sqrt({distanceSq})"
problem = f"Find the distance between ({point1X}, {point1Y}) and ({point2X}, {point2Y})"
return problem, solution
if format == 'string':
solution = f"sqrt({distanceSq})"
problem = f"Find the distance between ({point1X}, {point1Y}) and ({point2X}, {point2Y})"
return problem, solution
else:
return point1X, point1Y, point2X, point2Y, distanceSq
distance_two_points = Generator(
"Distance between 2 points", 24,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def expandingFunc(range_x1=10, range_x2=10, range_a=10, range_b=10):
def expandingFunc(range_x1=10, range_x2=10, range_a=10, range_b=10, format='string'):
x1 = random.randint(-range_x1, range_x1)
x2 = random.randint(-range_x2, range_x2)
a = random.randint(-range_a, range_a)
@@ -32,7 +32,6 @@ def expandingFunc(range_x1=10, range_x2=10, range_a=10, range_b=10):
p3 = ""
elif p3 == "+":
p3 = p3[1:]
problem = f"({p1}x{p2})({p3}x{p4})"
if c1 == "+1":
c1 = ""
@@ -40,8 +39,13 @@ def expandingFunc(range_x1=10, range_x2=10, range_a=10, range_b=10):
c1 = c1[1:] # Cuts off the plus for readability
if c2 == "+1":
c2 = ""
solution = f"{c1}*x^2{c2}*x{c3}"
return problem, solution
if format == 'string':
problem = f"({p1}x{p2})({p3}x{p4})"
solution = f"{c1}*x^2{c2}*x{c3}"
return problem, solution
else:
return p1, p2, p3, p4, c1, c2, c3
expanding = Generator("Expanding Factored Binomial", 111, expandingFunc,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def factoringFunc(range_x1=10, range_x2=10):
def factoringFunc(range_x1=10, range_x2=10, format='string'):
x1 = random.randint(-range_x1, range_x1)
x2 = random.randint(-range_x2, range_x2)
@@ -23,10 +23,13 @@ def factoringFunc(range_x1=10, range_x2=10):
else:
problem = f"x^2{b}x{c}"
x1 = intParser(x1)
x2 = intParser(x2)
solution = f"(x{x1})(x{x2})"
return problem, solution
if format == 'string':
x1 = intParser(x1)
x2 = intParser(x2)
solution = f"(x{x1})(x{x2})"
return problem, solution
else:
return b, c, x1, x2
factoring = Generator("Factoring Quadratic", 21, factoringFunc,

View File

@@ -1,16 +1,20 @@
from .__init__ import *
def determinantToMatrix22(maxMatrixVal=100):
def determinantToMatrix22(maxMatrixVal=100, format='string'):
a = random.randint(0, maxMatrixVal)
b = random.randint(0, maxMatrixVal)
c = random.randint(0, maxMatrixVal)
d = random.randint(0, maxMatrixVal)
determinant = a * d - b * c
problem = f"Det([[{a}, {b}], [{c}, {d}]]) = "
solution = f" {determinant}"
return problem, solution
if format == 'string':
problem = f"Det([[{a}, {b}], [{c}, {d}]]) = "
solution = f" {determinant}"
return problem, solution
else:
return a, b, c, d, determinant
int_matrix_22_determinant = Generator("Determinant to 2x2 Matrix", 77,

View File

@@ -8,7 +8,8 @@ def intersectionOfTwoLinesFunc(minM=-10,
minB=-10,
maxB=10,
minDenominator=1,
maxDenominator=6):
maxDenominator=6,
format='string'):
def generateEquationString(m, b):
"""
Generates an equation given the slope and intercept.
@@ -65,7 +66,10 @@ def intersectionOfTwoLinesFunc(minM=-10,
intersection_y = ((m2 * b1) - (m1 * b2)) / (m2 - m1)
solution = f"({fractionToString(intersection_x)}, {fractionToString(intersection_y)})"
return problem, solution
if format == 'string':
return problem, solution
else:
return equation1, equation2, solution
intersection_of_two_lines = Generator(

View File

@@ -4,7 +4,8 @@ import sympy
def matrixInversion(SquareMatrixDimension=3,
MaxMatrixElement=99,
OnlyIntegerElementsInInvertedMatrix=False):
OnlyIntegerElementsInInvertedMatrix=False,
format='string'):
if OnlyIntegerElementsInInvertedMatrix is True:
isItOk = False
Mat = list()
@@ -73,9 +74,13 @@ def matrixInversion(SquareMatrixDimension=3,
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
if format == 'string':
problem = 'Inverse of Matrix ' + str(Mat) + ' is:'
solution = str(sympy.Matrix.inv(Mat))
return problem, solution
else:
return Mat, sympy.Matrix.inv(Mat)
invert_matrix = Generator("Inverse of a Matrix", 74,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def linearEquationsFunc(n=2, varRange=20, coeffRange=20):
def linearEquationsFunc(n=2, varRange=20, coeffRange=20, format='string'):
if n > 10:
print("[!] n cannot be greater than 10")
return None, None
@@ -27,7 +27,11 @@ def linearEquationsFunc(n=2, varRange=20, coeffRange=20):
# problem = "\n".join(problem)
problem = ", ".join(problem)
return problem, solution
if format == 'string':
return problem, solution
else:
return problem, solution
linear_equations = Generator("Linear Equations", 26, linearEquationsFunc,

View File

@@ -1,20 +1,22 @@
from .__init__ import *
def logFunc(maxBase=3, maxVal=8, style='raw'):
def logFunc(maxBase=3, maxVal=8, format='string'):
a = random.randint(1, maxVal)
b = random.randint(2, maxBase)
c = pow(b, a)
if style == 'latex':
if format == 'string':
problem = "log" + str(b) + "(" + str(c) + ")"
solution = str(a)
return problem, solution
elif format == 'latex':
problem = "\\(\\log_{" + str(b) + "}" + str(c) + "\\)"
print(problem)
solution = "\\(" + str(a) + "\\)"
return problem, solution
else:
problem = "log" + str(b) + "(" + str(c) + ")"
solution = str(a)
return problem, solution
return b, c, a
log = Generator("Logarithm", 12, logFunc,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def matrixMultiplicationFunc(maxVal=100, max_dim=10):
def matrixMultiplicationFunc(maxVal=100, max_dim=10, format='string'):
m = random.randint(2, max_dim)
n = random.randint(2, max_dim)
k = random.randint(2, max_dim)
@@ -33,9 +33,12 @@ def matrixMultiplicationFunc(maxVal=100, max_dim=10):
res[r].append(temp)
# consider using a, b instead of a_string, b_string if the problem doesn't look right
problem = f"Multiply \n{a_string}\n and \n\n{b_string}"
solution = matrixMultiplicationFuncHelper(res)
return problem, solution
if format == 'string':
problem = f"Multiply \n{a_string}\n and \n\n{b_string}"
solution = matrixMultiplicationFuncHelper(res)
return problem, solution
else:
return a_string, b_string, res
def matrixMultiplicationFuncHelper(inp):

View File

@@ -1,15 +1,20 @@
from .__init__ import *
def MidPointOfTwoPointFunc(maxValue=20):
def MidPointOfTwoPointFunc(maxValue=20, format='string'):
x1 = random.randint(-20, maxValue)
y1 = random.randint(-20, maxValue)
x2 = random.randint(-20, maxValue)
y2 = random.randint(-20, maxValue)
xm = (x1 + x2) / 2
ym = (y1 + y2) / 2
problem = f"({x1},{y1}),({x2},{y2})="
solution = f"({(x1+x2)/2},{(y1+y2)/2})"
return problem, solution
if format == 'string':
problem = f"({x1},{y1}),({x2},{y2})="
solution = f"({xm},{ym})"
return problem, solution
else:
return x1, y1, x2, y2, xm, ym
midPoint_of_two_points = Generator("Midpoint of the two point", 20,

View File

@@ -2,14 +2,19 @@ from .__init__ import *
def multiplyComplexNumbersFunc(minRealImaginaryNum=-20,
maxRealImaginaryNum=20):
maxRealImaginaryNum=20,
format='string'):
num1 = complex(random.randint(minRealImaginaryNum, maxRealImaginaryNum),
random.randint(minRealImaginaryNum, maxRealImaginaryNum))
num2 = complex(random.randint(minRealImaginaryNum, maxRealImaginaryNum),
random.randint(minRealImaginaryNum, maxRealImaginaryNum))
problem = f"{num1} * {num2} = "
solution = str(num1 * num2)
return problem, solution
product = num1 * num2
if format == 'string':
problem = f"{num1} * {num2} = "
solution = str(product)
return problem, solution
else:
return num1, num2, product
multiply_complex_numbers = Generator("Multiplication of 2 complex numbers", 65,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def multiplyIntToMatrix22(maxMatrixVal=10, maxRes=100, style='raw'):
def multiplyIntToMatrix22(maxMatrixVal=10, maxRes=100, format='string'):
a = random.randint(0, maxMatrixVal)
b = random.randint(0, maxMatrixVal)
c = random.randint(0, maxMatrixVal)
@@ -14,15 +14,18 @@ def multiplyIntToMatrix22(maxMatrixVal=10, maxRes=100, style='raw'):
c1 = c * constant
d1 = d * constant
if style == 'latex':
if format == 'string':
problem = f"{constant} * [[{a}, {b}], [{c}, {d}]] = "
solution = f"[[{a1},{b1}],[{c1},{d1}]]"
return problem, solution
elif style == 'latex':
problem = "\\(" + str(constant) + "\\cdot\\begin{bmatrix}" + str(
a) + "&" + str(b) + "\\\\" + str(c) + "&" + str(d) + "\\end{bmatrix}=\\)"
solution = "\\(\\begin{bmatrix}" + str(a1) + "&" + str(b1) + \
"\\\\" + str(c1) + "&" + str(d1) + "\\end{bmatrix}\\)"
return problem, solution
else:
problem = f"{constant} * [[{a}, {b}], [{c}, {d}]] = "
solution = f"[[{a1},{b1}],[{c1},{d1}]]"
return problem, solution
return constant, a, b, c, d, a1, b1, c1, d1
multiply_int_to_22_matrix = Generator("Integer Multiplication with 2x2 Matrix",

View File

@@ -3,18 +3,21 @@ from .__init__ import *
import math
def quadraticEquation(maxVal=100):
def quadraticEquation(maxVal=100, format='string'):
a = random.randint(1, maxVal)
c = random.randint(1, maxVal)
b = random.randint(
round(math.sqrt(4 * a * c)) + 1, round(math.sqrt(4 * maxVal * maxVal)))
problem = "Zeros of the Quadratic Equation {}x^2+{}x+{}=0".format(a, b, c)
D = math.sqrt(b * b - 4 * a * c)
solution = str(
[round((-b + D) / (2 * a), 2),
round((-b - D) / (2 * a), 2)])
return problem, solution
res = [round((-b + D) / (2 * a), 2), round((-b - D) / (2 * a), 2)]
if format == 'string':
problem = "Zeros of the Quadratic Equation {}x^2+{}x+{}=0".format(a, b, c)
solution = str(res)
return problem, solution
else:
return a, b, c, res
quadratic_equation = Generator(

View File

@@ -1,18 +1,21 @@
from .__init__ import *
def simpleInterestFunc(maxPrinciple=10000, maxRate=10, maxTime=10):
def simpleInterestFunc(maxPrinciple=10000, maxRate=10, maxTime=10, format='string'):
a = random.randint(1000, maxPrinciple)
b = random.randint(1, maxRate)
c = random.randint(1, maxTime)
d = (a * b * c) / 100
d = round((a * b * c) / 100, 2)
problem = "Simple interest for a principle amount of " + str(
a) + " dollars, " + str(
b) + "% rate of interest and for a time period of " + str(
c) + " years is = "
solution = round(d, 2)
return problem, solution
if format == 'string':
problem = "Simple interest for a principle amount of " + str(
a) + " dollars, " + str(
b) + "% rate of interest and for a time period of " + str(
c) + " years is = "
solution = str(d)
return problem, solution
else:
return a, b, c, d
simple_interest = Generator(

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def systemOfEquationsFunc(range_x=10, range_y=10, coeff_mult_range=10):
def systemOfEquationsFunc(range_x=10, range_y=10, coeff_mult_range=10, format='string'):
# Generate solution point first
x = random.randint(-range_x, range_x)
y = random.randint(-range_y, range_y)
@@ -41,9 +41,12 @@ def systemOfEquationsFunc(range_x=10, range_y=10, coeff_mult_range=10):
'' if x_str != '' else '0')
return f'{x_str}{op}{y_str} = {coeffs[2]}'
problem = f"{coeffToFuncString(new_c1)}, {coeffToFuncString(new_c2)}"
solution = f"x = {x}, y = {y}"
return problem, solution
if format == 'string':
problem = f"{coeffToFuncString(new_c1)}, {coeffToFuncString(new_c2)}"
solution = f"x = {x}, y = {y}"
return problem, solution
else:
return new_c1, new_c2, x, y
# Add random (non-zero) multiple of equations to each other

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def vectorCrossFunc(minVal=-20, maxVal=20):
def vectorCrossFunc(minVal=-20, maxVal=20, format='string'):
a = [random.randint(minVal, maxVal) for i in range(3)]
b = [random.randint(minVal, maxVal) for i in range(3)]
c = [
@@ -9,9 +9,12 @@ def vectorCrossFunc(minVal=-20, maxVal=20):
a[0] * b[1] - a[1] * b[0]
]
problem = str(a) + " X " + str(b) + " = "
solution = str(c)
return problem, solution
if format == 'string':
problem = str(a) + " X " + str(b) + " = "
solution = str(c)
return problem, solution
else:
return a, b, c
vector_cross = Generator("Cross Product of 2 Vectors", 43,

View File

@@ -1,14 +1,17 @@
from .__init__ import *
def vectorDotFunc(minVal=-20, maxVal=20):
def vectorDotFunc(minVal=-20, maxVal=20, format='string'):
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
if format == 'string':
problem = str(a) + " . " + str(b) + " = "
solution = str(c)
return problem, solution
else:
return a, b, c
vector_dot = Generator("Dot Product of 2 Vectors", 72,

View File

@@ -1,21 +1,21 @@
from .__init__ import *
def absoluteDifferenceFunc(maxA=100, maxB=100, style='raw'):
def main(maxA=100, maxB=100, format='string'):
a = random.randint(-1 * maxA, maxA)
b = random.randint(-1 * maxB, maxB)
absDiff = abs(a - b)
if style == 'latex':
problem = "\\(|" + str(a) + "-" + str(b) + "|=\\)"
solution = f"\\({absDiff}\\)"
if format == "string":
return "|" + str(a) + "-" + str(b) + "|=", absDiff
elif format == 'latex':
return ("\\(|" + str(a) + "-" + str(b) + "|=\\)",
f"\\({absDiff}\\)")
else:
problem = "|" + str(a) + "-" + str(b) + "|="
solution = absDiff
return problem, solution
return a, b, absDiff
absolute_difference = Generator(
"Absolute difference between two numbers", 71,
absoluteDifferenceFunc,
main,
["maxA=100", "maxB=100"])

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def main(maxSum=99, maxAddend=50, style='raw'):
def main(maxSum=99, maxAddend=50, format='string'):
if maxAddend > maxSum:
maxAddend = maxSum
a = random.randint(0, maxAddend)
@@ -9,14 +9,16 @@ def main(maxSum=99, maxAddend=50, style='raw'):
b = random.randint(0, min((maxSum - a), maxAddend))
c = a + b
if style == 'latex':
if format == "string":
problem = str(a) + "+" + str(b) + "="
solution = str(c)
return problem, solution
elif format == 'latex':
problem = "\\(" + str(a) + '+' + str(b) + "\\)"
solution = str(c)
return problem, solution
else:
problem = str(a) + "+" + str(b) + "="
solution = str(c)
return problem, solution
return a, b, c
addition = Generator("Addition", 0, main, ["maxSum=99", "maxAddend=50"])

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def compareFractionsFunc(maxVal=10, style='raw'):
def compareFractionsFunc(maxVal=10, format='string'):
a = random.randint(1, maxVal)
b = random.randint(1, maxVal)
c = random.randint(1, maxVal)
@@ -22,11 +22,14 @@ def compareFractionsFunc(maxVal=10, style='raw'):
else:
solution = "="
if style == 'latex':
problem = f"Which symbol represents the comparison between \\(\\frac{{{a}}}{{{b}}}\\) and \\(\\frac{{{c}}}{{{d}}}\\)?"
if format == "string":
return (f"Which symbol represents the comparison between {a}/{b} and {c}/{d}?",
solution)
elif format == 'latex':
return (f"Which symbol represents the comparison between \\(\\frac{{{a}}}{{{b}}}\\) and \\(\\frac{{{c}}}{{{d}}}\\)?",
solution)
else:
problem = f"Which symbol represents the comparison between {a}/{b} and {c}/{d}?"
return problem, solution
return a, b, c, d, solution
compare_fractions = Generator(

View File

@@ -1,19 +1,20 @@
from .__init__ import *
def complexDivisionFunc(maxRes=99, maxDivid=99, style='raw'):
def complexDivisionFunc(maxRes=99, maxDivid=99, format='string'):
a = random.randint(0, maxDivid)
b = random.randint(1, min(maxRes, maxDivid))
c = a / b
c = round(c, 2)
if style == 'latex':
problem = "\\(" + str(a) + "\\div" + str(b) + "=\\)"
solution = "\\(" + str(c) + "\\)"
if format == "string":
return (str(a) + "/" + str(b) + "=",
str(c))
elif format == 'latex':
return ("\\(" + str(a) + "\\div" + str(b) + "=\\)",
"\\(" + str(c) + "\\)")
else:
problem = str(a) + "/" + str(b) + "="
solution = str(c)
return problem, solution
return a, b, c
complex_division = Generator("Complex Division", 13, complexDivisionFunc,

View File

@@ -1,18 +1,18 @@
from .__init__ import *
def cubeRootFunc(minNo=1, maxNo=1000, style='raw'):
def cubeRootFunc(minNo=1, maxNo=1000, format='string'):
b = random.randint(minNo, maxNo)
a = b**(1 / 3)
if style == 'latex':
problem = f"\\(\\sqrt[3]{{{b}}}=\\)"
solution = "\\(" + str(round(a, 2)) + "\\)"
if format == 'string':
return ("What is the cube root of " + str(b) + " up to 2 decimal places?",
str(round(a, 2)))
elif format == 'latex':
return (f"\\(\\sqrt[3]{{{b}}}=\\)",
"\\(" + str(round(a, 2)) + "\\)")
else:
problem = "What is the cube root of " + \
str(b) + " up to 2 decimal places?"
solution = str(round(a, 2))
return problem, solution
return b, a
cube_root = Generator("Cube Root", 47,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def divideFractionsFunc(maxVal=10, style='raw'):
def divideFractionsFunc(maxVal=10, format='string'):
a = random.randint(1, maxVal)
b = random.randint(1, maxVal)
@@ -29,18 +29,19 @@ def divideFractionsFunc(maxVal=10, style='raw'):
if (tmp_d == 1 or tmp_d == gcd):
x = f"{sol_numerator}"
if style == 'latex':
problem = "\\(\\frac{" + str(a) + "}{" + str(b) + \
"}\\div\\frac{" + str(c) + "}{" + str(d) + "}=\\)"
if format == 'string':
return f"({a}/{b})/({c}/{d})", x
elif format == 'latex':
if tmp_d == 1 or tmp_d == gcd:
solution = "\\(" + str(sol_numerator) + "\\)"
else:
solution = "\\(\\frac{" + str(sol_numerator) + \
"}{" + str(sol_denominator) + "}\\)"
return ("\\(\\frac{" + str(a) + "}{" + str(b) + \
"}\\div\\frac{" + str(c) + "}{" + str(d) + "}=\\)",
solution)
else:
problem = f"({a}/{b})/({c}/{d})"
solution = x
return problem, solution
return a, b, c, d, x
divide_fractions = Generator("Fraction Division", 16,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def divisionToIntFunc(maxA=25, maxB=25, style='raw'):
def divisionToIntFunc(maxA=25, maxB=25, format='string'):
a = random.randint(1, maxA)
b = random.randint(1, maxB)
@@ -9,13 +9,13 @@ def divisionToIntFunc(maxA=25, maxB=25, style='raw'):
dividend = random.choice([a, b])
quotient = int(divisor / dividend)
if style == 'latex':
problem = "\\(" + str(divisor) + "\\div" + str(dividend) + "=\\)"
solution = "\\(" + str(quotient) + "\\)"
if format == 'string':
return f"{divisor}/{dividend}=", str(quotient)
elif format == 'latex':
return ("\\(" + str(divisor) + "\\div" + str(dividend) + "=\\)",
"\\(" + str(quotient) + "\\)")
else:
problem = f"{divisor}/{dividend}="
solution = str(quotient)
return problem, solution
return divisor, dividend, quotient
division = Generator("Division", 3,

View File

@@ -1,17 +1,17 @@
from .__init__ import *
def exponentiationFunc(maxBase=20, maxExpo=10, style='raw'):
def exponentiationFunc(maxBase=20, maxExpo=10, format='string'):
base = random.randint(1, maxBase)
expo = random.randint(1, maxExpo)
if style == 'latex':
problem = f"\\({base}^{{{expo}}}\\)"
solution = "\\(" + str(base**expo) + "\\)"
if format == 'string':
return (f"{base}^{expo} =",
str(base**expo))
elif format == 'latex':
return f"\\({base}^{{{expo}}}\\)", "\\(" + str(base**expo) + "\\)"
else:
problem = f"{base}^{expo} ="
solution = str(base**expo)
return problem, solution
return base, expo, base**expo
exponentiation = Generator("Exponentiation", 53,

View File

@@ -1,18 +1,18 @@
from .__init__ import *
def factorialFunc(maxInput=6):
def factorialFunc(maxInput=6, format='string'):
a = random.randint(0, maxInput)
n = a
problem = str(a) + "! = "
b = 1
while a != 1 and n > 0:
b *= n
n -= 1
solution = str(b)
return problem, solution
if format == 'string':
return str(a) + "! = ", str(b)
else:
return a, b
factorial = Generator("Factorial", 31,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def multiplyFractionsFunc(maxVal=10, style='raw'):
def multiplyFractionsFunc(maxVal=10, format='string'):
a = random.randint(1, maxVal)
b = random.randint(1, maxVal)
c = random.randint(1, maxVal)
@@ -27,16 +27,17 @@ def multiplyFractionsFunc(maxVal=10, style='raw'):
if (tmp_d == 1 or tmp_d == gcd):
x = f"{tmp_n//gcd}"
if style == 'latex':
if format == 'string':
return f"({a}/{b})*({c}/{d})", x
elif format == 'latex':
problem = f"\\(\\frac{{{a}}}{{{b}}}\\cdot\\frac{{{c}}}{{{d}}}=\\)"
if (tmp_d == 1 or tmp_d == gcd):
solution = f"\\(\\frac{{{tmp_n}}}{{{gcd}}}\\)"
else:
solution = f"\\(\\frac{{{tmp_n//gcd}}}{{{tmp_d//gcd}}}\\)"
return problem, solution
else:
problem = f"({a}/{b})*({c}/{d})"
solution = x
return problem, solution
return a, b, c, d, x
fraction_multiplication = Generator("Fraction Multiplication", 28,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def isprime(max_num=100):
def isprime(max_num=100, format='string'):
a = random.randint(2, max_num)
problem = f"Is {a} prime?"
if a == 2:
@@ -15,7 +15,11 @@ def isprime(max_num=100):
solution = "No"
return (problem, solution)
solution = "Yes"
return (problem, solution)
if format == 'string':
return problem, solution
else:
return a, solution
is_prime = Generator('isprime', 90,

View File

@@ -1,18 +1,20 @@
from .__init__ import *
def multiplicationFunc(maxMulti=12, style='raw'):
def multiplicationFunc(maxMulti=12, format='string'):
a = random.randint(0, maxMulti)
b = random.randint(0, maxMulti)
c = a * b
if style == 'latex':
if format == 'string':
problem = str(a) + "*" + str(b) + "="
solution = str(c)
return problem, solution
elif format == 'latex':
problem = "\\(" + str(a) + "\\cdot" + str(b) + "=\\)"
solution = "\\(" + str(c) + "\\)"
else:
problem = str(a) + "*" + str(b) + "="
solution = str(c)
return problem, solution
return a, b, c
multiplication = Generator("Multiplication", 2,

View File

@@ -1,14 +1,18 @@
from .__init__ import *
def percentageFunc(maxValue=99, maxpercentage=99):
def percentageFunc(maxValue=99, maxpercentage=99, format='string'):
a = random.randint(1, maxpercentage)
b = random.randint(1, maxValue)
problem = f"What is {a}% of {b}?"
percentage = a / 100 * b
formatted_float = "{:.2f}".format(percentage)
solution = f"{formatted_float}"
return problem, solution
if format == 'string':
return problem, solution
else:
return a, b, formatted_float
percentage = Generator("Percentage of a number", 80, percentageFunc,

View File

@@ -1,20 +1,23 @@
from .__init__ import *
def powerOfPowersFunc(maxBase=50, maxPower=10, style='raw'):
def powerOfPowersFunc(maxBase=50, maxPower=10, format='string'):
base = random.randint(1, maxBase)
power1 = random.randint(1, maxPower)
power2 = random.randint(1, maxPower)
step = power1 * power2
if style == 'latex':
if format == 'string':
problem = f"Simplify {base}^{power1}^{power2}="
solution = str(base) + '^' + str(step)
return problem, solution
elif format == 'latex':
problem = "Simplify \\(" + str(base) + \
"^{" + str(power1) + "^{" + str(power2) + "}}\\)"
solution = f"\\({base}^{{{step}}}\\)"
return problem, solution
else:
problem = f"Simplify {base}^{power1}^{power2}="
solution = str(base) + '^' + str(step)
return problem, solution
return base, power1, power2, base, step
power_of_powers = Generator("Power of Powers", 97, powerOfPowersFunc,

View File

@@ -1,17 +1,20 @@
from .__init__ import *
def squareFunc(maxSquareNum=20, style='raw'):
def squareFunc(maxSquareNum=20, format='string'):
a = random.randint(1, maxSquareNum)
b = a * a
if style == 'latex':
problem = "\\(" + str(a) + "^{2}=\\)"
solution = "\\(" + str(b) + "\\)"
else:
if format == 'string':
problem = str(a) + "^2" + "="
solution = str(b)
return problem, solution
return problem, solution
if format == 'latex':
problem = "\\(" + str(a) + "^{2}=\\)"
solution = "\\(" + str(b) + "\\)"
return problem, solution
else:
return a, b
square = Generator("Square", 8, squareFunc, ["maxSquareNum=20"])

View File

@@ -1,17 +1,20 @@
from .__init__ import *
def squareRootFunc(minNo=1, maxNo=12, style='raw'):
def squareRootFunc(minNo=1, maxNo=12, format='string'):
b = random.randint(minNo, maxNo)
a = b * b
if style == 'latex':
problem = "\\(\\sqrt{" + str(a) + "}=\\)"
solution = "\\(" + str(b) + "\\)"
else:
if format == 'string':
problem = "sqrt(" + str(a) + ")="
solution = str(b)
return problem, solution
return problem, solution
elif format == 'latex':
problem = "\\(\\sqrt{" + str(a) + "}=\\)"
solution = "\\(" + str(b) + "\\)"
return problem, solution
else:
return a, b
square_root = Generator("Square Root", 6, squareRootFunc,

View File

@@ -1,14 +1,17 @@
from .__init__ import *
def subtractionFunc(maxMinuend=99, maxDiff=99):
def subtractionFunc(maxMinuend=99, maxDiff=99, format='string'):
a = random.randint(0, maxMinuend)
b = random.randint(max(0, (a - maxDiff)), a)
c = a - b
problem = str(a) + "-" + str(b) + "="
solution = str(c)
return problem, solution
if format == 'string':
problem = str(a) + "-" + str(b) + "="
solution = str(c)
return problem, solution
else:
return a, b, c
subtraction = Generator("Subtraction", 1, subtractionFunc,

View File

@@ -3,7 +3,7 @@ import scipy
from scipy.integrate import quad
def definiteIntegralFunc(max_coeff=100):
def definiteIntegralFunc(max_coeff=100, format='string'):
def integrand(x, a, b, c):
return a * x**2 + b * x + c
@@ -14,12 +14,13 @@ def definiteIntegralFunc(max_coeff=100):
result = quad(integrand, 0, 1, args=(a, b, c))[0]
S = round(result, 4)
problem = "The definite integral within limits 0 to 1 of the equation " + \
str(a) + "x^2 + " + str(b) + "x + " + str(c) + " is = "
solution = str(S)
return problem, solution
if format == 'string':
problem = "The definite integral within limits 0 to 1 of the equation " + \
str(a) + "x^2 + " + str(b) + "x + " + str(c) + " is = "
solution = str(S)
return problem, solution
else:
return a, b, c, S
definite_integral = Generator(

View File

@@ -31,11 +31,10 @@ def genDifferentiationProblem(diff_lvl=2):
operator = random.choice(('/', '*'))
problem = '(' + genDifferentiationProblem(2) + ')' + \
operator + '(' + genDifferentiationProblem(3) + ')'
return problem
def differentiationFunc(diff_lvl=2):
def differentiationFunc(diff_lvl=2, format='string'):
if diff_lvl < 1 or diff_lvl > 4:
print("diff_lvl not supported")
return None
@@ -46,7 +45,10 @@ def differentiationFunc(diff_lvl=2):
solution = solution.replace('**', '^')
problem = f"differentiate w.r.t x : d({problem})/dx"
return problem, solution
if format == 'string':
return problem, solution
else:
return problem, solution
differentiation = Generator("Differentiation", 88,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def powerRuleDifferentiationFunc(maxCoef=10, maxExp=10, maxTerms=5):
def powerRuleDifferentiationFunc(maxCoef=10, maxExp=10, maxTerms=5, format='string'):
numTerms = random.randint(1, maxTerms)
problem = ""
solution = ""
@@ -15,7 +15,11 @@ def powerRuleDifferentiationFunc(maxCoef=10, maxExp=10, maxTerms=5):
problem += str(coefficient) + "x^" + str(exponent)
solution += str(coefficient * exponent) + "x^" + str(exponent - 1)
return problem, solution
if format == 'string':
return problem, solution
else:
return problem, solution
power_rule_differentiation = Generator("Power Rule Differentiation", 7,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def powerRuleIntegrationFunc(maxCoef=10, maxExp=10, maxTerms=5):
def powerRuleIntegrationFunc(maxCoef=10, maxExp=10, maxTerms=5, format='string'):
numTerms = random.randint(1, maxTerms)
problem = ""
solution = ""
@@ -18,7 +18,11 @@ def powerRuleIntegrationFunc(maxCoef=10, maxExp=10, maxTerms=5):
str(exponent) + ")x^" + str(exponent + 1)
solution += " + c"
return problem, solution
if format == 'string':
return problem, solution
else:
return problem, solution
power_rule_integration = Generator("Power Rule Integration", 48,

View File

@@ -2,7 +2,7 @@ from .__init__ import *
import sympy
def stationaryPointsFunc(maxExp=3, maxCoef=10):
def stationaryPointsFunc(maxExp=3, maxCoef=10, format='string'):
while True:
x = sympy.symbols('x')
problem = 0
@@ -11,12 +11,15 @@ def stationaryPointsFunc(maxExp=3, maxCoef=10):
problem += coefficient * pow(x, exp)
solution = sympy.stationary_points(problem, x)
if len(solution) != 0:
solution = ','.join('({},{})'.format(
str(p),
sympy.sympify(problem.replace(x, p))
) for p in solution)
problem = 'f(x)=' + str(problem).replace('**', '^')
#if len(solution) != 0:
solution = ','.join('({},{})'.format(
str(p),
sympy.sympify(problem.replace(x, p))
) for p in solution)
problem = 'f(x)=' + str(problem).replace('**', '^')
if format == 'string':
return problem, solution
else:
return problem, solution

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def BCDtoDecimalFunc(maxNumber=10000):
def BCDtoDecimalFunc(maxNumber=10000, format='string'):
n = random.randint(1000, maxNumber)
binstring = ''
while True:
@@ -15,9 +15,12 @@ def BCDtoDecimalFunc(maxNumber=10000):
else:
n = q
problem = "Integer of Binary Coded Decimal " + str(n) + " is = "
solution = int(binstring, 2)
return problem, solution
if format == 'string':
problem = "Integer of Binary Coded Decimal " + str(n) + " is = "
solution = int(binstring, 2)
return problem, solution
else:
return n, int(binstring, 2)
bcd_to_decimal = Generator("Binary Coded Decimal to Integer", 91,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def binary2sComplementFunc(maxDigits=10):
def binary2sComplementFunc(maxDigits=10, format='string'):
digits = random.randint(1, maxDigits)
question = ''.join([str(random.randint(0, 1))
for i in range(digits)]).lstrip('0')
@@ -23,9 +23,12 @@ def binary2sComplementFunc(maxDigits=10):
if j == 0 and carry is True:
answer.insert(0, '1')
problem = "2's complement of " + question + " ="
solution = ''.join(answer).lstrip('0')
return problem, solution
if format == 'string':
problem = "2's complement of " + question + " ="
solution = ''.join(answer).lstrip('0')
return problem, solution
else:
return question, answer
binary_2s_complement = Generator("Binary 2's Complement", 73,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def binaryComplement1sFunc(maxDigits=10):
def binaryComplement1sFunc(maxDigits=10, format='string'):
question = ''
answer = ''
@@ -10,9 +10,11 @@ def binaryComplement1sFunc(maxDigits=10):
question += temp
answer += "0" if temp == "1" else "1"
problem = question + "="
solution = answer
return problem, solution
if format == 'string':
problem = question + "="
return problem, answer
else:
return problem, answer
binary_complement_1s = Generator("Binary Complement 1s", 4,

View File

@@ -1,15 +1,18 @@
from .__init__ import *
def binaryToDecimalFunc(max_dig=10):
def binaryToDecimalFunc(max_dig=10, format='string'):
problem = ''
for i in range(random.randint(1, max_dig)):
temp = str(random.randint(0, 1))
problem += temp
solution = int(problem, 2)
return problem, solution
if format == 'string':
solution = int(problem, 2)
return problem, solution
else:
return problem, solution
binary_to_decimal = Generator("Binary to Decimal", 15,

View File

@@ -1,14 +1,17 @@
from .__init__ import *
def binaryToHexFunc(max_dig=10):
def binaryToHexFunc(max_dig=10, format='string'):
problem = ''
for i in range(random.randint(1, max_dig)):
temp = str(random.randint(0, 1))
problem += temp
solution = hex(int(problem, 2))
return problem, solution
if format == 'string':
solution = hex(int(problem, 2))
return problem, solution
else:
return problem, solution
binary_to_hex = Generator("Binary to Hexidecimal", 64, binaryToHexFunc,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def DecimalToBCDFunc(maxNumber=10000):
def DecimalToBCDFunc(maxNumber=10000, format='string'):
n = random.randint(1000, maxNumber)
x = n
# binstring = ''

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def DecimalToBinaryFunc(max_dec=99):
def DecimalToBinaryFunc(max_dec=99, format='string'):
a = random.randint(1, max_dec)
b = bin(a).replace("0b", "")

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def deciToHexaFunc(max_dec=1000):
def deciToHexaFunc(max_dec=1000, format='string'):
a = random.randint(0, max_dec)
b = hex(a)
problem = "Binary of " + str(a) + "="

View File

@@ -1,11 +1,15 @@
from .__init__ import *
def decimalToOctalFunc(maxDecimal=4096):
def decimalToOctalFunc(maxDecimal=4096, format='string'):
x = random.randint(0, maxDecimal)
problem = "The decimal number " + str(x) + " in Octal is: "
solution = oct(x)
return problem, solution
if format == 'string':
return problem, solution
else:
return x, oct(x)
decimal_to_octal = Generator("Converts decimal to octal", 84,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def fibonacciSeriesFunc(minNo=1):
def fibonacciSeriesFunc(minNo=1, format='string'):
n = random.randint(minNo, 20)
def createFibList(n):
@@ -16,9 +16,11 @@ def fibonacciSeriesFunc(minNo=1):
fibList = createFibList(n)
problem = "The Fibonacci Series of the first " + str(n) + " numbers is ?"
solution = fibList
return problem, solution
if format == 'string':
problem = "The Fibonacci Series of the first " + str(n) + " numbers is ?"
return problem, fibList
else:
return n, fibList
fibonacci_series = Generator(

View File

@@ -1,14 +1,17 @@
from .__init__ import *
def moduloFunc(maxRes=99, maxModulo=99):
def moduloFunc(maxRes=99, maxModulo=99, format='string'):
a = random.randint(0, maxModulo)
b = random.randint(0, min(maxRes, maxModulo))
c = a % b if b != 0 else 0
problem = str(a) + "%" + str(b) + "="
solution = str(c)
return problem, solution
if format == 'string':
problem = str(a) + "%" + str(b) + "="
solution = str(c)
return problem, solution
else:
return a, b, c
modulo_division = Generator("Modulo Division", 5, moduloFunc,

View File

@@ -3,13 +3,17 @@ from .__init__ import *
import math
def nthFibonacciNumberFunc(maxN=100):
def nthFibonacciNumberFunc(maxN=100, format='string'):
golden_ratio = (1 + math.sqrt(5)) / 2
n = random.randint(1, maxN)
problem = f"What is the {n}th Fibonacci number?"
ans = round((math.pow(golden_ratio, n) - math.pow(-golden_ratio, -n)) / (math.sqrt(5)))
solution = f"{ans}"
return problem, solution
if format == 'string':
solution = f"{ans}"
return problem, solution
else:
return n, ans
nth_fibonacci_number = Generator("nth Fibonacci number", 62,

View File

@@ -2,7 +2,7 @@ from .__init__ import *
import math
def angleBtwVectorsFunc(maxEltAmt=20):
def angleBtwVectorsFunc(maxEltAmt=20, format='string'):
s = 0
v1 = [
round(random.uniform(0, 1000), 2)

View File

@@ -1,13 +1,17 @@
from .__init__ import *
def regularPolygonAngleFunc(minVal=3, maxVal=20):
def regularPolygonAngleFunc(minVal=3, maxVal=20, format='string'):
sideNum = random.randint(minVal, maxVal)
problem = f"Find the angle of a regular polygon with {sideNum} sides"
exteriorAngle = round((360 / sideNum), 2)
solution = 180 - exteriorAngle
return problem, solution
if format == 'string':
return problem, solution
else:
return sideNum, solution
angle_regular_polygon = Generator(

View File

@@ -3,14 +3,18 @@ from .__init__ import *
import math
def arclengthFunc(maxRadius=49, maxAngle=359):
Radius = random.randint(1, maxRadius)
Angle = random.randint(1, maxAngle)
problem = f"Given radius, {Radius} and angle, {Angle}. Find the arc length of the angle."
angle_arc_length = float((Angle / 360) * 2 * math.pi * Radius)
def arclengthFunc(maxRadius=49, maxAngle=359, format='string'):
radius = random.randint(1, maxRadius)
angle = random.randint(1, maxAngle)
problem = f"Given radius, {radius} and angle, {angle}. Find the arc length of the angle."
angle_arc_length = float((angle / 360) * 2 * math.pi * radius)
formatted_float = "{:.5f}".format(angle_arc_length)
solution = f"Arc length of the angle = {formatted_float}"
return problem, solution
if format == 'string':
solution = f"Arc length of the angle = {formatted_float}"
return problem, solution
else:
return radius, angle, formatted_float
arc_length = Generator("Arc length of Angle", 108, arclengthFunc,

View File

@@ -1,13 +1,16 @@
from .__init__ import *
def areaCircle(maxRadius=100):
def areaCircle(maxRadius=100, format='string'):
r = random.randint(0, maxRadius)
pi = 22 / 7
area = pi * r * r
problem = f"Area of circle with radius {r}"
solution = area
return problem, solution
if format == 'string':
problem = f"Area of circle with radius {r}"
return problem, str(area)
else:
return r, area
area_of_circle = Generator("Area of Circle", 112, areaCircle,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def areaOfTriangleFunc(maxA=20, maxB=20, maxC=20):
def areaOfTriangleFunc(maxA=20, maxB=20, maxC=20, format='string'):
a = random.randint(1, maxA)
b = random.randint(1, maxB)
c = random.randint(1, maxC)
@@ -9,10 +9,13 @@ def areaOfTriangleFunc(maxA=20, maxB=20, maxC=20):
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 = str(area)
return problem, solution
if format == 'string':
problem = "Area of triangle with side lengths: " + \
str(a) + " " + str(b) + " " + str(c) + " = "
solution = str(area)
return problem, solution
else:
return a, b, c, area
area_of_triangle = Generator("Area of Triangle", 18,

View File

@@ -5,7 +5,7 @@ import math
# Handles degrees in quadrant one
def basicTrigonometryFunc(angles=[0, 30, 45, 60, 90],
functions=["sin", "cos", "tan"]):
functions=["sin", "cos", "tan"], format='string'):
angle = random.choice(angles)
function = random.choice(functions)
@@ -24,7 +24,11 @@ def basicTrigonometryFunc(angles=[0, 30, 45, 60, 90],
solution = result_fraction_map[round(eval(expression), 2)] if round(
eval(expression), 2) <= 99999 else "" # for handling the ∞ condition
return problem, solution
if format == 'string':
return problem, solution
else:
return function, angle, solution
basic_trigonometry = Generator("Trigonometric Values", 57, basicTrigonometryFunc,

View File

@@ -2,12 +2,15 @@ from .__init__ import *
import math
def circumferenceCircle(maxRadius=100):
def circumferenceCircle(maxRadius=100, format='string'):
r = random.randint(0, maxRadius)
circumference = 2 * math.pi * r
problem = f"Circumference of circle with radius {r}"
solution = circumference
return problem, solution
if format == 'string':
problem = f"Circumference of circle with radius {r}"
return problem, circumference
else:
return r, circumference
circumference = Generator("Circumference", 104, circumferenceCircle,

View File

@@ -1,14 +1,18 @@
from .__init__ import *
def curvedSurfaceAreaCylinderFunc(maxRadius=49, maxHeight=99):
def curvedSurfaceAreaCylinderFunc(maxRadius=49, maxHeight=99, format='string'):
r = random.randint(1, maxRadius)
h = random.randint(1, maxHeight)
problem = f"What is the curved surface area of a cylinder of radius, {r} and height, {h}?"
csa = float(2 * math.pi * r * h)
formatted_float = round(csa, 2) # "{:.5f}".format(csa)
solution = f"CSA of cylinder = {formatted_float}"
return problem, solution
if format == 'string':
problem = f"What is the curved surface area of a cylinder of radius, {r} and height, {h}?"
solution = f"CSA of cylinder = {formatted_float}"
return problem, solution
else:
return r, h, formatted_float
curved_surface_area_cylinder = Generator(

View File

@@ -2,15 +2,17 @@ from .__init__ import *
from numpy import pi
def degreeToRadFunc(max_deg=360):
def degreeToRadFunc(max_deg=360, format='string'):
a = random.randint(0, max_deg)
b = (pi * a) / 180
b = round(b, 2)
problem = "Angle " + str(a) + " in radians is = "
solution = str(b)
return problem, solution
if format == 'string':
problem = "Angle " + str(a) + " in radians is = "
solution = str(b)
return problem, solution
else:
return a, b
degree_to_rad = Generator("Degrees to Radians", 86, degreeToRadFunc,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def fourthAngleOfQuadriFunc(maxAngle=180):
def fourthAngleOfQuadriFunc(maxAngle=180, format='string'):
angle1 = random.randint(1, maxAngle)
angle2 = random.randint(1, 240 - angle1)
angle3 = random.randint(1, 340 - (angle1 + angle2))
@@ -9,9 +9,12 @@ def fourthAngleOfQuadriFunc(maxAngle=180):
sum_ = angle1 + angle2 + angle3
angle4 = 360 - sum_
problem = f"Fourth angle of quadrilateral with angles {angle1} , {angle2}, {angle3} ="
solution = angle4
return problem, solution
if format == 'string':
problem = f"Fourth angle of quadrilateral with angles {angle1} , {angle2}, {angle3} ="
solution = angle4
return problem, solution
else:
return angle1, angle2, angle3, angle4
fourth_angle_of_quadrilateral = Generator(

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def perimeterOfPolygons(maxSides=12, maxLength=120):
def perimeterOfPolygons(maxSides=12, maxLength=120, format='string'):
size_of_sides = random.randint(3, maxSides)
sides = []
for x in range(size_of_sides):
@@ -11,7 +11,11 @@ def perimeterOfPolygons(maxSides=12, maxLength=120):
solution = 0
for y in range(len(sides)):
solution += sides[y]
return problem, solution
if format == 'string':
return problem, solution
else:
return size_of_sides, sides, solution
perimeter_of_polygons = Generator(

View File

@@ -1,14 +1,17 @@
from .__init__ import *
def pythagoreanTheoremFunc(maxLength=20):
def pythagoreanTheoremFunc(maxLength=20, format='string'):
a = random.randint(1, maxLength)
b = random.randint(1, maxLength)
c = (a**2 + b**2)**0.5
problem = f"The hypotenuse of a right triangle given the other two lengths {a} and {b} = "
solution = f"{c:.0f}" if c.is_integer() else f"{c:.2f}"
return problem, solution
if format == 'string':
problem = f"The hypotenuse of a right triangle given the other two lengths {a} and {b} = "
solution = f"{c:.0f}" if c.is_integer() else f"{c:.2f}"
return problem, solution
else:
return a, b, round(c,2)
pythagorean_theorem = Generator(

View File

@@ -2,16 +2,18 @@ from .__init__ import *
from numpy import pi
def radianToDegFunc(max_rad=3):
def radianToDegFunc(max_rad=3, format='string'):
# max_rad is supposed to be pi but random can't handle non-integer
a = random.randint(0, max_rad)
b = (180 * a) / pi
b = round(b, 2)
problem = "Angle " + str(a) + " in degrees is = "
solution = str(b)
return problem, solution
if format == 'string':
problem = "Angle " + str(a) + " in degrees is = "
solution = str(b)
return problem, solution
else:
return a, b
radian_to_deg = Generator("Radians to Degrees", 87, radianToDegFunc,

View File

@@ -1,14 +1,18 @@
from .__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)
def sectorAreaFunc(maxRadius=49, maxAngle=359, format='string'):
r = random.randint(1, maxRadius)
a = random.randint(1, maxAngle)
secArea = float((a / 360) * math.pi * r * r)
formatted_float = "{:.5f}".format(secArea)
solution = f"Area of sector = {formatted_float}"
return problem, solution
if format == 'string':
problem = f"Given radius, {r} and angle, {a}. Find the area of the sector."
solution = f"Area of sector = {formatted_float}"
return problem, solution
else:
return r, a, formatted_float
sector_area = Generator("Area of a Sector", 75, sectorAreaFunc,

View File

@@ -1,13 +1,15 @@
from .__init__ import *
def sumOfAnglesOfPolygonFunc(maxSides=12):
side = random.randint(3, maxSides)
sum = (side - 2) * 180
def sumOfAnglesOfPolygonFunc(maxSides=12, format='string'):
side_count = random.randint(3, maxSides)
sum = (side_count - 2) * 180
problem = f"Sum of angles of polygon with {side} sides = "
solution = sum
return problem, solution
if format == 'string':
problem = f"Sum of angles of polygon with {side_count} sides = "
return problem, sum
else:
return side_count, sum
sum_of_polygon_angles = Generator("Sum of Angles of Polygon", 58,

View File

@@ -1,16 +1,19 @@
from .__init__ import *
def surfaceAreaCone(maxRadius=20, maxHeight=50, unit='m'):
def surfaceAreaCone(maxRadius=20, maxHeight=50, unit='m', format='string'):
a = random.randint(1, maxHeight)
b = random.randint(1, maxRadius)
slopingHeight = math.sqrt(a**2 + b**2)
problem = f"Surface area of cone with height = {a}{unit} and radius = {b}{unit} is"
ans = int(math.pi * b * slopingHeight + math.pi * b * b)
solution = f"{ans} {unit}^2"
return problem, solution
if format == 'string':
problem = f"Surface area of cone with height = {a}{unit} and radius = {b}{unit} is"
solution = f"{ans} {unit}^2"
return problem, solution
else:
return a, b, ans, unit
surface_area_cone = Generator(

View File

@@ -1,12 +1,16 @@
from .__init__ import *
def surfaceAreaCube(maxSide=20, unit='m'):
def surfaceAreaCube(maxSide=20, unit='m', format='string'):
a = random.randint(1, maxSide)
problem = f"Surface area of cube with side = {a}{unit} is"
ans = 6 * a * a
solution = f"{ans} {unit}^2"
return problem, solution
if format == 'string':
problem = f"Surface area of cube with side = {a}{unit} is"
solution = f"{ans} {unit}^2"
return problem, solution
else:
return a, ans, unit
surface_area_cube = Generator("Surface Area of Cube", 32,

View File

@@ -1,15 +1,18 @@
from .__init__ import *
def surfaceAreaCuboid(maxSide=20, unit='m'):
def surfaceAreaCuboid(maxSide=20, unit='m', format='string'):
a = random.randint(1, maxSide)
b = random.randint(1, maxSide)
c = random.randint(1, maxSide)
problem = f"Surface area of cuboid with sides = {a}{unit}, {b}{unit}, {c}{unit} is"
ans = 2 * (a * b + b * c + c * a)
solution = f"{ans} {unit}^2"
return problem, solution
if format == 'string':
problem = f"Surface area of cuboid with sides = {a}{unit}, {b}{unit}, {c}{unit} is"
solution = f"{ans} {unit}^2"
return problem, solution
else:
return a, b, c, ans, unit
surface_area_cuboid = Generator(

View File

@@ -1,14 +1,17 @@
from .__init__ import *
def surfaceAreaCylinder(maxRadius=20, maxHeight=50, unit='m'):
def surfaceAreaCylinder(maxRadius=20, maxHeight=50, unit='m', format='string'):
a = random.randint(1, maxHeight)
b = random.randint(1, maxRadius)
problem = f"Surface area of cylinder with height = {a}{unit} and radius = {b}{unit} is"
ans = int(2 * math.pi * a * b + 2 * math.pi * b * b)
solution = f"{ans} {unit}^2"
return problem, solution
if format == 'string':
problem = f"Surface area of cylinder with height = {a}{unit} and radius = {b}{unit} is"
solution = f"{ans} {unit}^2"
return problem, solution
else:
return a, b, ans, unit
surface_area_cylinder = Generator(

View File

@@ -1,13 +1,16 @@
from .__init__ import *
def surfaceAreaSphere(maxSide=20, unit='m'):
def surfaceAreaSphere(maxSide=20, unit='m', format='string'):
r = random.randint(1, maxSide)
problem = f"Surface area of Sphere with radius = {r}{unit} is"
ans = 4 * math.pi * r * r
solution = f"{ans} {unit}^2"
return problem, solution
if format == 'string':
problem = f"Surface area of Sphere with radius = {r}{unit} is"
solution = f"{ans} {unit}^2"
return problem, solution
else:
return r, ans, unit
surface_area_sphere = Generator(

View File

@@ -1,14 +1,16 @@
from .__init__ import *
def thirdAngleOfTriangleFunc(maxAngle=89):
def thirdAngleOfTriangleFunc(maxAngle=89, format='string'):
angle1 = random.randint(1, maxAngle)
angle2 = random.randint(1, maxAngle)
angle3 = 180 - (angle1 + angle2)
problem = f"Third angle of triangle with angles {angle1} and {angle2} = "
solution = angle3
return problem, solution
if format == 'string':
problem = f"Third angle of triangle with angles {angle1} and {angle2} = "
return problem, angle3
else:
return angle1, angle2, angle3
third_angle_of_triangle = Generator("Third Angle of Triangle", 22,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def isTriangleValidFunc(maxSideLength=50):
def isTriangleValidFunc(maxSideLength=50, format='string'):
sideA = random.randint(1, maxSideLength)
sideB = random.randint(1, maxSideLength)
sideC = random.randint(1, maxSideLength)
@@ -11,13 +11,16 @@ def isTriangleValidFunc(maxSideLength=50):
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"
if format == 'string':
problem = f"Does triangle with sides {sideA}, {sideB} and {sideC} exist?"
if exists:
solution = "Yes"
else:
solution = "No"
return problem, solution
solution = "No"
return problem, solution
else:
return sideA, sideB, sideC, exists
valid_triangle = Generator("Triangle exists check", 19,

View File

@@ -1,14 +1,17 @@
from .__init__ import *
def volumeCone(maxRadius=20, maxHeight=50, unit='m'):
def volumeCone(maxRadius=20, maxHeight=50, unit='m', format='string'):
a = random.randint(1, maxHeight)
b = random.randint(1, maxRadius)
problem = f"Volume of cone with height = {a}{unit} and radius = {b}{unit} is"
ans = int(math.pi * b * b * a * (1 / 3))
solution = f"{ans} {unit}^3"
return problem, solution
if format == 'string':
problem = f"Volume of cone with height = {a}{unit} and radius = {b}{unit} is"
solution = f"{ans} {unit}^3"
return problem, solution
else:
return a, b, ans, unit
volume_cone = Generator(

View File

@@ -1,13 +1,16 @@
from .__init__ import *
def volumeCube(maxSide=20, unit='m'):
def volumeCube(maxSide=20, unit='m', format='string'):
a = random.randint(1, maxSide)
ans = a ** 3
problem = f"Volume of cube with side = {a}{unit} is"
ans = a * a * a
solution = f"{ans} {unit}^3"
return problem, solution
if format == 'string':
problem = f"Volume of cube with side = {a}{unit} is"
solution = f"{ans} {unit}^3"
return problem, solution
else:
return a, ans, unit
volume_cube = Generator("Volum of Cube", 35,

View File

@@ -1,15 +1,18 @@
from .__init__ import *
def volumeCuboid(maxSide=20, unit='m'):
def volumeCuboid(maxSide=20, unit='m', format='string'):
a = random.randint(1, maxSide)
b = random.randint(1, maxSide)
c = random.randint(1, maxSide)
problem = f"Volume of cuboid with sides = {a}{unit}, {b}{unit}, {c}{unit} is"
ans = a * b * c
solution = f"{ans} {unit}^3"
return problem, solution
if format == 'string':
problem = f"Volume of cuboid with sides = {a}{unit}, {b}{unit}, {c}{unit} is"
solution = f"{ans} {unit}^3"
return problem, solution
else:
return a, b, c, ans, unit
volume_cuboid = Generator(

View File

@@ -1,14 +1,17 @@
from .__init__ import *
def volumeCylinder(maxRadius=20, maxHeight=50, unit='m'):
def volumeCylinder(maxRadius=20, maxHeight=50, unit='m', format='string'):
a = random.randint(1, maxHeight)
b = random.randint(1, maxRadius)
problem = f"Volume of cylinder with height = {a}{unit} and radius = {b}{unit} is"
ans = int(math.pi * b * b * a)
solution = f"{ans} {unit}^3"
return problem, solution
if format == 'string':
problem = f"Volume of cylinder with height = {a}{unit} and radius = {b}{unit} is"
solution = f"{ans} {unit}^3"
return problem, solution
else:
return a, b, ans, unit
volume_cylinder = Generator(

View File

@@ -1,13 +1,16 @@
from .__init__ import *
def volumeSphereFunc(maxRadius=100):
def volumeSphereFunc(maxRadius=100, format='string'):
r = random.randint(1, maxRadius)
ans = (4 * math.pi / 3) * r ** 3
problem = f"Volume of sphere with radius {r} m = "
ans = (4 * math.pi / 3) * r * r * r
solution = f"{ans} m^3"
return problem, solution
if format == 'string':
problem = f"Volume of sphere with radius {r} m = "
solution = f"{ans} m^3"
return problem, solution
else:
return r, ans
volume_sphere = Generator("Volume of Sphere", 61,

View File

@@ -1,18 +1,23 @@
from .__init__ import *
def arithmeticProgressionSumFunc(maxd=100, maxa=100, maxn=100):
def arithmeticProgressionSumFunc(maxd=100, maxa=100, maxn=100, format='string'):
d = random.randint(-1 * maxd, maxd)
a1 = random.randint(-1 * maxa, maxa)
a2 = a1 + d
a3 = a1 + 2 * d
n = random.randint(4, maxn)
apString = str(a1) + ', ' + str(a2) + ', ' + str(a3) + ' ... '
problem = 'Find the sum of first ' + \
str(n) + ' terms of the AP series: ' + apString
an = a1 + (n - 1) * d
solution = n * (a1 + an) / 2
return problem, solution
if format == 'string':
problem = 'Find the sum of first ' + \
str(n) + ' terms of the AP series: ' + apString
return problem, solution
else:
return n, apString, solution
arithmetic_progression_sum = Generator(

View File

@@ -1,17 +1,21 @@
from .__init__ import *
def arithmeticProgressionTermFunc(maxd=100, maxa=100, maxn=100):
def arithmeticProgressionTermFunc(maxd=100, maxa=100, maxn=100, format='string'):
d = random.randint(-1 * maxd, maxd)
a1 = random.randint(-1 * maxa, maxa)
a2 = a1 + d
a3 = a2 + d
n = random.randint(4, maxn)
apString = str(a1) + ', ' + str(a2) + ', ' + str(a3) + ' ... '
problem = 'Find the term number ' + str(
n) + ' of the AP series: ' + apString
solution = a1 + ((n - 1) * d)
return problem, solution
if format == 'string':
problem = 'Find the term number ' + str(
n) + ' of the AP series: ' + apString
return problem, solution
else:
return n, apString, solution
arithmetic_progression_term = Generator(

View File

@@ -30,7 +30,7 @@ def fromBaseTenTo(n, toBase):
# return int(n,fromBase)
def baseConversionFunc(maxNum=60000, maxBase=16):
def baseConversionFunc(maxNum=60000, maxBase=16, format='string'):
assert type(
maxNum
) == int and maxNum >= 100 and maxNum <= 65536, "maxNum({}) must be >=100 and <=65536".format(
@@ -47,10 +47,13 @@ def baseConversionFunc(maxNum=60000, maxBase=16):
while bases[0] == bases[1]:
bases = random.choices(dist, k=2)
problem = "Convert {} from base {} to base {}.".format(
fromBaseTenTo(n, bases[0]), bases[0], bases[1])
ans = fromBaseTenTo(n, bases[1])
return problem, ans
if format == 'string':
problem = "Convert {} from base {} to base {}.".format(
fromBaseTenTo(n, bases[0]), bases[0], bases[1])
ans = fromBaseTenTo(n, bases[1])
return problem, ans
else:
return fromBaseTenTo(n, bases[0]), bases[0], bases[1], fromBaseTenTo(n, bases[1])
base_conversion = Generator("Base Conversion", 94,

View File

@@ -13,29 +13,28 @@ def newton_symbol(n, k):
return factorial(n) / (factorial(k) * factorial(n - k))
def binomialDistFunc():
def binomialDistFunc(format='string'):
rejected_fraction = float(random.randint(30, 40)) + random.random()
batch = random.randint(10, 20)
rejections = random.randint(1, 9)
answer = 0
rejected_fraction = round(rejected_fraction, 2)
problem = "A manufacturer of metal pistons finds that, on average, {0:}% "\
"of the pistons they manufacture are rejected because " \
"they are incorrectly sized. What is the probability that a "\
"batch of {1:} pistons will contain no more than {2:} " \
"rejected pistons?".format(rejected_fraction, batch, rejections)
for i in range(0, rejections + 1):
answer += newton_symbol(float(batch), float(i)) * ((rejected_fraction / 100.) ** float(i)) * \
((1 - (rejected_fraction / 100.)) ** (float(batch) - float(i)))
answer = round(100 * answer, 2)
return problem, answer
if format == 'string':
problem = "A manufacturer of metal pistons finds that, on average, {0:}% "\
"of the pistons they manufacture are rejected because " \
"they are incorrectly sized. What is the probability that a "\
"batch of {1:} pistons will contain no more than {2:} " \
"rejected pistons?".format(rejected_fraction, batch, rejections)
return problem, answer
else:
return rejected_fraction, batch, rejections, answer
binomial_distribution = Generator("Binomial distribution", 109,

View File

@@ -1,13 +1,17 @@
from .__init__ import *
def celsiustofahrenheitFunc(maxTemp=100):
def celsiustofahrenheitFunc(maxTemp=100, format='string'):
celsius = random.randint(-50, maxTemp)
fahrenheit = (celsius * (9 / 5)) + 32
problem = "Convert " + str(
celsius) + " degrees Celsius to degrees Fahrenheit ="
solution = str(fahrenheit)
return problem, solution
if format == 'string':
problem = "Convert " + str(
celsius) + " degrees Celsius to degrees Fahrenheit ="
solution = str(fahrenheit)
return problem, solution
else:
return celsius, fahrenheit
celsius_to_fahrenheit = Generator("Celsius To Fahrenheit", 81,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def commonFactorsFunc(maxVal=100):
def commonFactorsFunc(maxVal=100, format='string'):
a = x = random.randint(1, maxVal)
b = y = random.randint(1, maxVal)
@@ -19,9 +19,12 @@ def commonFactorsFunc(maxVal=100):
count = count + 1
arr.append(i)
problem = f"Common Factors of {a} and {b} = "
solution = arr
return problem, solution
if format == 'string':
problem = f"Common Factors of {a} and {b} = "
solution = arr
return problem, solution
else:
return a, b, arr
common_factors = Generator("Common Factors", 40,

View File

@@ -3,17 +3,19 @@ from .__init__ import *
import math
def complexToPolarFunc(minRealImaginaryNum=-20, maxRealImaginaryNum=20):
def complexToPolarFunc(minRealImaginaryNum=-20, maxRealImaginaryNum=20, format='string'):
num = complex(random.randint(minRealImaginaryNum, maxRealImaginaryNum),
random.randint(minRealImaginaryNum, maxRealImaginaryNum))
a = num.real
b = num.imag
r = round(math.hypot(a, b), 2)
theta = round(math.atan2(b, a), 2)
plr = str(r) + "exp(i" + str(theta) + ")"
problem = "rexp(itheta) = "
solution = plr
return problem, solution
if format == 'string':
problem = f'{r}({a}theta + i{b}theta)'
return problem, theta
else:
return r, a, b, theta
complex_to_polar = Generator("Complex To Polar Form", 92, complexToPolarFunc,

View File

@@ -3,9 +3,8 @@ from .__init__ import *
import math
def decimalToRomanNumeralsFunc(maxDecimal=4000):
def decimalToRomanNumeralsFunc(maxDecimal=4000, format='string'):
x = random.randint(0, maxDecimal)
problem = "The number " + str(x) + " in Roman Numerals is: "
roman_dict = {
1: "I",
5: "V",
@@ -32,7 +31,12 @@ def decimalToRomanNumeralsFunc(maxDecimal=4000):
solution += (roman_dict[divisor] + roman_dict[divisor * 10])
x = math.floor(x % divisor)
divisor /= 10
return problem, solution
if format == 'string':
problem = "The number " + str(x) + " in Roman Numerals is: "
return problem, solution
else:
return x, solution
decimal_to_roman_numerals = Generator("Converts decimal to Roman Numerals", 85,

View File

@@ -3,13 +3,17 @@ from .__init__ import *
import math
def euclidianNormFunc(maxEltAmt=20):
def euclidianNormFunc(maxEltAmt=20, format='string'):
vec = [
random.uniform(0, 1000) for i in range(random.randint(2, maxEltAmt))
]
problem = f"Euclidian norm or L2 norm of the vector{vec} is:"
solution = math.sqrt(sum([i**2 for i in vec]))
return problem, solution
if format == 'string':
problem = f"Euclidian norm or L2 norm of the vector{vec} is:"
return problem, solution
else:
return vec, solution
eucldian_norm = Generator(

View File

@@ -1,15 +1,19 @@
from .__init__ import *
def gcdFunc(maxVal=20):
def gcdFunc(maxVal=20, format='string'):
a = random.randint(1, maxVal)
b = random.randint(1, maxVal)
x, y = a, b
while y:
x, y = y, x % y
problem = f"GCD of {a} and {b} = "
solution = str(x)
return problem, solution
if format == 'string':
problem = f"GCD of {a} and {b} = "
solution = str(x)
return problem, solution
else:
return a, b, x
gcd = Generator("GCD (Greatest Common Denominator)", 10, gcdFunc,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def geometricMeanFunc(maxValue=100, maxNum=4):
def geometricMeanFunc(maxValue=100, maxNum=4, format='string'):
a = random.randint(1, maxValue)
b = random.randint(1, maxValue)
c = random.randint(1, maxValue)

View File

@@ -5,7 +5,8 @@ def geomProgrFunc(number_values=6,
min_value=2,
max_value=12,
n_term=7,
sum_term=5):
sum_term=5,
format='string'):
r = random.randint(min_value, max_value)
a = random.randint(min_value, max_value)
n_term = random.randint(number_values, number_values + 5)
@@ -13,14 +14,19 @@ def geomProgrFunc(number_values=6,
GP = []
for i in range(number_values):
GP.append(a * (r**i))
problem = "For the given GP " + str(
GP) + " ,Find the value of a,common ratio," + str(
n_term) + "th term value, sum upto " + str(sum_term) + "th term"
value_nth_term = a * (r**(n_term - 1))
sum_till_nth_term = a * ((r**sum_term - 1) / (r - 1))
solution = "The value of a is {}, common ratio is {} , {}th term is {} , sum upto {}th term is {}".format(
a, r, n_term, value_nth_term, sum_term, sum_till_nth_term)
return problem, solution
if format == 'string':
problem = "For the given GP " + str(
GP) + " ,Find the value of a,common ratio," + str(
n_term) + "th term value, sum upto " + str(sum_term) + "th term"
solution = "The value of a is {}, common ratio is {} , {}th term is {} , sum upto {}th term is {}".format(
a, r, n_term, value_nth_term, sum_term, sum_till_nth_term)
return problem, solution
else:
return GP, n_term, sum_term, a, r, n_term, value_nth_term, sum_term, sum_till_nth_term
geometric_progression = Generator(

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def harmonicMeanFunc(maxValue=100, maxNum=4):
def harmonicMeanFunc(maxValue=100, maxNum=4, format='string'):
a = random.randint(1, maxValue)
b = random.randint(1, maxValue)

View File

@@ -1,15 +1,19 @@
from .__init__ import *
def hcfFunc(maxVal=20):
def hcfFunc(maxVal=20, format='string'):
a = random.randint(1, maxVal)
b = random.randint(1, maxVal)
x, y = a, b
while (y):
x, y = y, x % y
problem = f"HCF of {a} and {b} = "
solution = str(x)
return problem, solution
if format == 'string':
problem = f"HCF of {a} and {b} = "
solution = str(x)
return problem, solution
else:
return a, b, x
hcf = Generator("HCF (Highest Common Factor)", 51, hcfFunc,

View File

@@ -1,22 +1,28 @@
from .__init__ import *
def IsLeapYear(minNumber=1900, maxNumber=2099):
def IsLeapYear(minNumber=1900, maxNumber=2099, format='string'):
year = random.randint(minNumber, maxNumber)
problem = "Year " + str(year) + " "
solution = ""
if (year % 4) == 0:
if (year % 100) == 0:
if (year % 400) == 0:
solution = "is a leap year"
ans = True
else:
solution = "is not a leap year"
ans = False
else:
solution = "is a leap year"
ans = True
else:
solution = "is not a leap year"
ans = False
return problem, solution
if format == 'string':
if ans:
solution = "is a leap year"
else:
solution = "is not a leap year"
return problem, solution
else:
return year, ans
is_leap_year = Generator("Leap Year or Not", 101,

View File

@@ -1,7 +1,7 @@
from .__init__ import *
def lcmFunc(maxVal=20):
def lcmFunc(maxVal=20, format='string'):
a = random.randint(1, maxVal)
b = random.randint(1, maxVal)
c = a * b
@@ -11,10 +11,12 @@ def lcmFunc(maxVal=20):
x, y = y, x % y
d = c // x
problem = f"LCM of {a} and {b} ="
solution = str(d)
return problem, solution
if format == 'string':
problem = f"LCM of {a} and {b} ="
solution = str(d)
return problem, solution
else:
return a, b, d
lcm = Generator("LCM (Least Common Multiple)", 9,

Some files were not shown because too many files have changed in this diff Show More