diff --git a/README.md b/README.md index 5e09e7a..f9fc363 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,21 @@ To try out generators, go to If you have an idea for a generator, please add it as an issue and tag it with the "New Generator" label. -## Usage +## Table of Contents +* [Installation](#installation) +* [Basic Usage](#basic-usage) + * [More Complicated Usage](#more-complicated-usage) +* [Documentation](#documentation) +* [List of Generators](#list-of-generators) + * [algebra](#algebra) + * [basic_math](#basic_math) + * [calculus](#calculus) + * [computer_science](#computer_science) + * [geometry](#geometry) + * [misc](#misc) + * [statistics](#statistics) + +## Installation The project can be install via pip @@ -14,6 +28,7 @@ The project can be install via pip pip install mathgenerator ``` +## Basic Usage Here is an example of how you would generate an addition problem: ```python @@ -25,14 +40,7 @@ problem, solution = mathgen.addition() #another way to generate an addition problem using genById() problem, solution = mathgen.genById(0) ``` -## Documentation -`getGenList()` returns a list of all generators in the repository in the format `[id, title, self, funcname]` - -`genById(id)` generates a problem, solution set with generator id `id` in the form of a list in the format `[problem, solution]` - -`make_pdf(id, count)` creates a printable pdf worksheet with `count` problems generated by the generator with id `id`. - -### More complicated worksheets +### More Complicated Usage ``` import sys @@ -44,120 +52,145 @@ mathgen.add_section_with_task_to_worksheet(worksheet, 2, 5) mathgen.write_pdf(worksheet) ``` -## List of Generators +## Documentation +`getGenList()` returns a list of all generators in the repository in the format `[id, title, self, funcname]` +`genById(id)` generates a problem, solution set with generator id `id` in the form of a list in the format `[problem, solution]` + +`make_pdf(id, count)` creates a printable pdf worksheet with `count` problems generated by the generator with id `id`. + +## List of Generators +## algebra | Id | Skill | Example problem | Example Solution | Function Name | |------|-------|-----------------|------------------|---------------| -| 0 | Addition | 30+50= | 80 | addition | -| 1 | Subtraction | 75-7= | 68 | subtraction | -| 2 | Multiplication | 23*3= | 69 | multiplication | -| 3 | Division | 230/10 = | 23 | division | -| 4 | Binary Complement 1s | 01110= | 10001 | binary_complement_1s | -| 5 | Modulo Division | 92%37= | 18 | modulo_division | -| 6 | Square Root | sqrt(144)= | 12 | square_root | -| 7 | Power Rule Differentiation | 7x^10 | 70x^9 | power_rule_differentiation | -| 8 | Square | 6^2= | 36 | square | -| 9 | LCM (Least Common Multiple) | LCM of 15 and 8 = | 120 | lcm | -| 10 | GCD (Greatest Common Denominator) | GCD of 16 and 13 = | 1 | gcd | -| 11 | Basic Algebra | 3x + 4 = 6 | 2/3 | basic_algebra | -| 12 | Logarithm | log3(9) | 2 | log | -| 13 | Complex Division | 4/29= | 0.14 | complex_division | -| 14 | Decimal to Binary | Binary of 70= | 1000110 | decimal_to_binary | -| 15 | Binary to Decimal | 110000 | 48 | binary_to_decimal | -| 16 | Fraction Division | (2/9)/(9/10) | 20/81 | divide_fractions | -| 17 | Integer Multiplication with 2x2 Matrix | 4 * [[7, 4], [10, 2]] = | [[28,16],[40,8]] | multiply_int_to_22_matrix | -| 18 | Area of Triangle | Area of triangle with side lengths: 7 20 17 = | 57.445626465380286 | area_of_triangle | -| 19 | Triangle exists check | Does triangle with sides 20, 18 and 34 exist? | Yes | valid_triangle | -| 20 | Midpoint of the two point | (20,20),(12,14)= | (16.0,17.0) | midpoint_of_two_points | -| 21 | Factoring Quadratic | x^2+2x | (x+2)(x) | factoring | -| 22 | Third Angle of Triangle | Third angle of triangle with angles 16 and 2 = | 162 | third_angle_of_triangle | -| 23 | Solve a System of Equations in R^2 | 2x - 4y = 44, -9x - 4y = 22 | x = 2, y = -10 | system_of_equations | -| 24 | Distance between 2 points | Find the distance between (10, 1) and (-17, 8) | sqrt(778) | distance_two_points | -| 25 | Pythagorean Theorem | The hypotenuse of a right triangle given the other two lengths 19 and 1 = | 19.03 | pythagorean_theorem | -| 26 | Linear Equations | 2x + 15y = -211, 11x + -11y = 242 | x = 7, y = -15 | linear_equations | -| 27 | Prime Factorisation | Find prime factors of 199 | [199] | prime_factors | -| 28 | Fraction Multiplication | (6/7)*(9/5) | 54/35 | fraction_multiplication | -| 29 | Angle of a Regular Polygon | Find the angle of a regular polygon with 9 sides | 140.0 | angle_regular_polygon | -| 30 | Combinations of Objects | Number of combinations from 17 objects picked 2 at a time | 136 | combinations | -| 31 | Factorial | 6! = | 720 | factorial | -| 32 | Surface Area of Cube | Surface area of cube with side = 8m is | 384 m^2 | surface_area_cube | -| 33 | Surface Area of Cuboid | Surface area of cuboid with sides = 8m, 1m, 3m is | 70 m^2 | surface_area_cuboid | -| 34 | Surface Area of Cylinder | Surface area of cylinder with height = 4m and radius = 14m is | 1583 m^2 | surface_area_cylinder | -| 35 | Volum of Cube | Volume of cube with side = 13m is | 2197 m^3 | volume_cube | -| 36 | Volume of Cuboid | Volume of cuboid with sides = 14m, 17m, 18m is | 4284 m^3 | volume_cuboid | -| 37 | Volume of cylinder | Volume of cylinder with height = 45m and radius = 9m is | 11451 m^3 | volume_cylinder | -| 38 | Surface Area of cone | Surface area of cone with height = 40m and radius = 20m is | 4066 m^2 | surface_area_cone | -| 39 | Volume of cone | Volume of cone with height = 40m and radius = 4m is | 670 m^3 | volume_cone | -| 40 | Common Factors | Common Factors of 5 and 94 = | [1] | common_factors | -| 41 | Intersection of Two Lines | Find the point of intersection of the two lines: y = -6/4x + 10 and y = 10x - 2 | (24/23, 194/23) | intersection_of_two_lines | -| 42 | Permutations | Number of Permutations from 10 objects picked 0 at a time = | 1 | permutation | -| 43 | Cross Product of 2 Vectors | [-19, 5, 14] X [19, -3, -14] = | [-28, 0, -38] | vector_cross | -| 44 | Compare Fractions | Which symbol represents the comparison between 2/9 and 7/3? | < | compare_fractions | -| 45 | Simple Interest | Simple interest for a principle amount of 2924 dollars, 2% rate of interest and for a time period of 8 years is = | 467.84 | simple_interest | -| 46 | Multiplication of two matrices | Multiply
-176
-107-8
1510
and
-10-10-8-1
-7-10109
8106-8
|
9011416
-13-50102137
3540102-36
| matrix_multiplication | -| 47 | Cube Root | cuberoot of 113 upto 2 decimal places is: | 4.83 | cube_root | -| 48 | Power Rule Integration | 3x^5 + 1x^10 + 10x^10 + 10x^9 + 1x^6 | (3/5)x^6 + (1/10)x^11 + (10/10)x^11 + (10/9)x^10 + (1/6)x^7 + c | power_rule_integration | -| 49 | Fourth Angle of Quadrilateral | Fourth angle of quadrilateral with angles 165 , 67, 58 = | 70 | fourth_angle_of_quadrilateral | -| 50 | Quadratic Equation | Zeros of the Quadratic Equation 94x^2+200x+90=0 | [-0.65, -1.48] | quadratic_equation | -| 51 | HCF (Highest Common Factor) | HCF of 7 and 12 = | 1 | hcf | -| 52 | Probability of a certain sum appearing on faces of dice | If 3 dice are rolled at the same time, the probability of getting a sum of 16 = | 6/216 | dice_sum_probability | -| 53 | Exponentiation | 16^3 = | 4096 | exponentiation | -| 54 | Confidence interval For sample S | The confidence interval for sample [200, 282, 224, 297, 230, 261, 260, 223, 290, 203, 268, 295, 202, 280, 210, 274, 214, 270, 205, 258, 237, 265] with 80% confidence is | (256.5414375664878, 238.73128970623947) | confidence_interval | -| 55 | Comparing surds | Fill in the blanks 15^(1/6) _ 86^(1/5) | < | surds_comparison | -| 56 | Fibonacci Series | The Fibonacci Series of the first 6 numbers is ? | [0, 1, 1, 2, 3, 5] | fibonacci_series | -| 57 | Trigonometric Values | What is sin(90)? | 1 | basic_trigonometry | -| 58 | Sum of Angles of Polygon | Sum of angles of polygon with 5 sides = | 540 | sum_of_polygon_angles | -| 59 | Mean,Standard Deviation,Variance | Find the mean,standard deviation and variance for the data[29, 30, 37, 47, 25, 21, 33, 33, 19, 22, 36, 16, 7, 26, 46] | The Mean is 28.466666666666665 , Standard Deviation is 109.71555555555557, Variance is 10.474519347232864 | data_summary | -| 60 | Surface Area of Sphere | Surface area of Sphere with radius = 16m is | 3216.990877275948 m^2 | surface_area_sphere | -| 61 | Volume of Sphere | Volume of sphere with radius 86 m = | 2664305.1424956126 m^3 | volume_sphere | -| 62 | nth Fibonacci number | What is the 27th Fibonacci number? | 196418 | nth_fibonacci_number | -| 63 | Profit or Loss Percent | Profit percent when CP = 644 and SP = 662 is: | 2.7950310559006213 | profit_loss_percent | -| 64 | Binary to Hexidecimal | 1001100 | 0x4c | binary_to_hex | -| 65 | Multiplication of 2 complex numbers | (-4+10j) * -14j = | (140+56j) | multiply_complex_numbers | -| 66 | Geometric Progression | For the given GP [4, 12, 36, 108, 324, 972] ,Find the value of a,common ratio,7th term value, sum upto 11th term | The value of a is 4, common ratio is 3 , 7th term is 2916 , sum upto 11th term is 354292.0 | geometric_progression | -| 67 | Geometric Mean of N Numbers | Geometric mean of 2 numbers 8 and 39 = | (8*39)^(1/2) = 17.663521732655695 | geometric_mean | -| 68 | Harmonic Mean of N Numbers | Harmonic mean of 3 numbers 70 , 28 and 10 = | 3/((1/70) + (1/28) + (1/10)) = 20.0 | harmonic_mean | -| 69 | Euclidian norm or L2 norm of a vector | Euclidian norm or L2 norm of the vector[140.27767298648374, 455.13963882440834, 712.0553226043899, 459.3121590782242, 524.4218909490598, 750.5372175572093, 808.8045224974901, 383.6429461786214, 429.4419005181599, 678.4158119220333, 949.0750177704684, 959.5226153129328, 480.3240208778324, 106.9115204040202] is: | 2300.592987768802 | euclidian_norm | -| 70 | Angle between 2 vectors | angle between the vectors [411.42, 822.89, 457.69, 983.28] and [516.87, 275.57, 334.47, 19.0] is: | 0.88 radians | angle_btw_vectors | -| 71 | Absolute difference between two numbers | Absolute difference between numbers 14 and -97 = | 111 | absolute_difference | -| 72 | Dot Product of 2 Vectors | [-2, 0, -18] . [9, 10, 15] = | -288 | vector_dot | -| 73 | Binary 2's Complement | 2's complement of 10 = | 10 | binary_2s_complement | -| 74 | Inverse of a Matrix | Inverse of Matrix Matrix([[71, 25, 61], [21, 23, 8], [41, 70, 11]]) is: | Matrix([[-307/12775, 799/2555, -1203/12775], [97/12775, -344/2555, 713/12775], [527/12775, -789/2555, 1108/12775]]) | invert_matrix | -| 75 | Area of a Sector | Given radius, 13 and angle, 322. Find the area of the sector. | Area of sector = 474.88664 | sector_area | -| 76 | Mean and Median | Given the series of numbers [42, 66, 61, 2, 25, 95, 18, 14, 96, 6]. find the arithmatic mean and mdian of the series | Arithmetic mean of the series is 42.5 and Arithmetic median of this series is 33.5 | mean_median | -| 77 | Determinant to 2x2 Matrix | Det([[67, 22], [83, 9]]) = | -1223 | int_matrix_22_determinant | -| 78 | Compound Interest | Compound interest for a principle amount of 1159 dollars, 3% rate of interest and for a time period of 9 year is = | 1512.23 | compound_interest | -| 79 | Decimal to Hexadecimal | Binary of 260= | 0x104 | decimal_to_hexadeci | -| 80 | Percentage of a number | What is 40% of 80? | Required percentage = 32.00% | percentage | -| 81 | Celsius To Fahrenheit | Convert 77 degrees Celsius to degrees Fahrenheit = | 170.6 | celsius_to_fahrenheit | -| 82 | AP Term Calculation | Find the term number 19 of the AP series: 66, 109, 152 ... | 840 | arithmetic_progression_term | -| 83 | AP Sum Calculation | Find the sum of first 84 terms of the AP series: 59, 110, 161 ... | 182742.0 | arithmetic_progression_sum | -| 84 | Converts decimal to octal | The decimal number 983 in Octal is: | 0o1727 | decimal_to_octal | -| 85 | Converts decimal to Roman Numerals | The number 1994 in Roman Numerals is: | MCMXCIV | decimal_to_roman_numerals | -| 86 | Degrees to Radians | Angle 82 in radians is = | 1.43 | degree_to_rad | -| 87 | Radians to Degrees | Angle 0 in degrees is = | 0.0 | radian_to_deg | -| 88 | Differentiation | differentiate w.r.t x : d(sin(x)+7*x^3)/dx | 21*x^2 + cos(x) | differentiation | -| 89 | Definite Integral of Quadratic Equation | The definite integral within limits 0 to 1 of the equation 65x^2 + 91x + 72 is = | 139.1667 | definite_integral | -| 90 | isprime | 64 | False | is_prime | -| 91 | Binary Coded Decimal to Integer | Integer of Binary Coded Decimal 1 is = | 4674 | bcd_to_decimal | -| 92 | Complex To Polar Form | rexp(itheta) = | 15.52exp(i1.83) | complex_to_polar | -| 93 | Union,Intersection,Difference of Two Sets | Given the two sets a={1, 3, 7, 8, 10} ,b={9, 10, 2, 5}.Find the Union,intersection,a-b,b-a and symmetric difference | Union is {1, 2, 3, 5, 7, 8, 9, 10},Intersection is {10}, a-b is {8, 1, 3, 7},b-a is {9, 2, 5}, Symmetric difference is {1, 2, 3, 5, 7, 8, 9} | set_operation | -| 94 | Base Conversion | Convert 44639 from base 10 to base 6. | 542355 | base_conversion | -| 95 | Curved surface area of a cylinder | What is the curved surface area of a cylinder of radius, 46 and height, 69? | CSA of cylinder = 19942.83 | curved_surface_area_cylinder | -| 96 | Perimeter of Polygons | The perimeter of a 12 sided polygon with lengths of [18, 4, 59, 94, 107, 115, 42, 99, 16, 73, 2, 51]cm is: | 680 | perimeter_of_polygons | -| 97 | Power of Powers | The 14^10^5 = 14^(10*5) = 14^50 | 2024891623976437135118764865774783290467102632746078437376 | power_of_powers | -| 98 | Quotient of Powers with Same Base | The Quotient of 36^8 and 36^10 = 36^(8-10) = 36^-2 | 0.0007716049382716049 | quotient_of_power_same_base | -| 99 | Quotient of Powers with Same Power | The Quotient of 2^8 and 45^8 = (2/45)^8 = 0.044444444444444446^8 | 1.5224388403474453e-11 | quotient_of_power_same_power | -| 100 | complex Quadratic Equation | Find the roots of given Quadratic Equation 4x^2 + 5x + 1 = 0 | simplified solution : ((-0.25, -1.0)), generalized solution : ((-5 + 3)/2*4, (-5 - 3)/2*4) | complex_quadratic | -| 101 | Leap Year or Not | Year 2018 | is not a leap year | is_leap_year | -| 102 | Minute to Hour conversion | Convert 381 minutes to Hours & Minutes | 6 hours and 21 minutes | minutes_to_hours | -| 103 | Decimal to Binary Coded Decimal | BCD of Decimal Number 6496 is = | 1960 | decimal_to_bcd | -| 104 | Circumference | Circumference of circle with radius 68 | 427.2566008882119 | circumference | -| 105 | Combine Like terms | 9x^4 + 3x^2 + 5x^3 + 5x^1 + 10x^2 | 5x^1 + 13x^2 + 5x^3 + 9x^4 | combine_like_terms | -| 106 | signum function | signum of -831 is = | -1 | signum_function | -| 107 | Conditional Probability | Someone tested positive for a nasty disease which only 1.48% of population have. Test sensitivity (true positive) is equal to SN= 93.80% whereas test specificity (true negative) SP= 90.92%. What is the probability that this guy really has that disease? | 13.43% | conditional_probability | -| 108 | Arc length of Angle | Given radius, 32 and angle, 122. Find the arc length of the angle. | Arc length of the angle = 68.13765 | arc_length | -| 109 | Binomial distribution | A manufacturer of metal pistons finds that, on average, 35.48% 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? | 65.57 | binomial_distribution | -| 110 | Stationary Points | f(x)=2*x^2 + 9*x + 7 | (-9/4,-25/8) | stationary_points | -| 111 | Expanding Factored Binomial | (3x-3)(-1x+2) | -3*x^2+9*x-6 | expanding | -| 112 | Area of Circle | Area of circle with radius 93 | 27182.571428571428 | area_of_circle | +| 11 | Basic Algebra | 10x + 4 = 8 | 2/5 | basic_algebra | +| 12 | Logarithm | log2(16) | 4 | log | +| 17 | Integer Multiplication with 2x2 Matrix | 5 * [[9, 7], [8, 7]] = | [[45,35],[40,35]] | multiply_int_to_22_matrix | +| 20 | Midpoint of the two point | (-2,-6),(8,-10)= | (3.0,-8.0) | midpoint_of_two_points | +| 21 | Factoring Quadratic | x^2-7x-8 | (x+1)(x-8) | factoring | +| 23 | Solve a System of Equations in R^2 | 4x + 8y = 40, -2x - 4y = -20 | x = 8, y = 1 | system_of_equations | +| 24 | Distance between 2 points | Find the distance between (14, -2) and (17, 4) | sqrt(45) | distance_two_points | +| 26 | Linear Equations | 7x + 4y = -144, -19x + 15y = 365 | x = -20, y = -1 | linear_equations | +| 41 | Intersection of Two Lines | Find the point of intersection of the two lines: y = 4x - 9 and y = -2x + 1 | (5/3, -7/3) | intersection_of_two_lines | +| 43 | Cross Product of 2 Vectors | [-14, 15, -1] X [-7, 1, 6] = | [91, 91, 91] | vector_cross | +| 45 | Simple Interest | Simple interest for a principle amount of 2349 dollars, 4% rate of interest and for a time period of 9 years is = | 845.64 | simple_interest | +| 46 | Multiplication of two matrices | Multiply
86
-89
23
10-1
and
-8-10-1
-4-1-1
|
-88-86-14
2871-1
-28-23-5
-76-99-9
| matrix_multiplication | +| 50 | Quadratic Equation | Zeros of the Quadratic Equation 4x^2+120x+5=0 | [-0.04, -29.96] | quadratic_equation | +| 65 | Multiplication of 2 complex numbers | (-7-9j) * (19+8j) = | (-61-227j) | multiply_complex_numbers | +| 72 | Dot Product of 2 Vectors | [11, -4, 2] . [-1, 1, 19] = | 23 | vector_dot | +| 74 | Inverse of a Matrix | Inverse of Matrix Matrix([[43, 67, 81], [23, 71, 79], [70, 96, 7]]) is: | Matrix([[7087/168740, -7307/168740, 229/84370], [-7/220, 7/220, 1/110], [1381/84370, -281/84370, -378/42185]]) | invert_matrix | +| 77 | Determinant to 2x2 Matrix | Det([[31, 16], [92, 93]]) = | 1411 | int_matrix_22_determinant | +| 78 | Compound Interest | Compound interest for a principle amount of 6310 dollars, 1% rate of interest and for a time period of 2 year is = | 6436.83 | compound_interest | +| 100 | complex Quadratic Equation | Find the roots of given Quadratic Equation 2x^2 + 6x + 4 = 0 | simplified solution : ((-1.0, -2.0)), generalized solution : ((-6 + 2)/2*2, (-6 - 2)/2*2) | complex_quadratic | +| 105 | Combine Like terms | 3x^2 + 3x^1 + 1x^2 | 3x^1 + 4x^2 | combine_like_terms | +| 111 | Expanding Factored Binomial | (-7x)(-4x-1) | 28*x^2+7*x | expanding | +## basic_math +| Id | Skill | Example problem | Example Solution | Function Name | +|------|-------|-----------------|------------------|---------------| +| 0 | Addition | 21+24= | 45 | addition | +| 1 | Subtraction | 17-4= | 13 | subtraction | +| 2 | Multiplication | 87*0= | 0 | multiplication | +| 3 | Division | 136/17= | 8 | division | +| 6 | Square Root | sqrt(16)= | 4 | square_root | +| 8 | Square | 14^2= | 196 | square | +| 13 | Complex Division | 76/53= | 1.43 | complex_division | +| 16 | Fraction Division | (9/10)/(2/7) | 63/20 | divide_fractions | +| 28 | Fraction Multiplication | (3/9)*(1/3) | 1/9 | fraction_multiplication | +| 31 | Factorial | 1! = | 1 | factorial | +| 44 | Compare Fractions | Which symbol represents the comparison between 3/5 and 4/10? | > | compare_fractions | +| 47 | Cube Root | cuberoot of 127 upto 2 decimal places is: | 5.03 | cube_root | +| 53 | Exponentiation | 8^4 = | 4096 | exponentiation | +| 71 | Absolute difference between two numbers | Absolute difference between numbers -67 and 11 = | 78 | absolute_difference | +| 80 | Percentage of a number | What is 51% of 89? | Required percentage = 45.39% | percentage | +| 90 | isprime | 32 | False | is_prime | +| 97 | Power of Powers | The 23^7^4 = 23^(7*4) = 23^28 | 134393854047545109686936775588697536481 | power_of_powers | +## calculus +| Id | Skill | Example problem | Example Solution | Function Name | +|------|-------|-----------------|------------------|---------------| +| 7 | Power Rule Differentiation | 4x^10 + 1x^7 + 9x^8 + 2x^9 | 40x^9 + 7x^6 + 72x^7 + 18x^8 | power_rule_differentiation | +| 48 | Power Rule Integration | 9x^1 + 3x^2 + 1x^7 | (9/1)x^2 + (3/2)x^3 + (1/7)x^8 + c | power_rule_integration | +| 88 | Differentiation | differentiate w.r.t x : d(cot(x)+3*x^(-2))/dx | -cot(x)^2 - 1 - 6/x^3 | differentiation | +| 89 | Definite Integral of Quadratic Equation | The definite integral within limits 0 to 1 of the equation 72x^2 + 6x + 55 is = | 82.0 | definite_integral | +| 110 | Stationary Points | f(x)=x^3 + 9*x^2 + 3*x + 3 | (-3 - 2*sqrt(2),(-3 - 2*sqrt(2))**3 - 6*sqrt(2) - 6 + 9*(-3 - 2*sqrt(2))**2),(-3 + 2*sqrt(2),-6 + (-3 + 2*sqrt(2))**3 + 9*(-3 + 2*sqrt(2))**2 + 6*sqrt(2)) | stationary_points | +## computer_science +| Id | Skill | Example problem | Example Solution | Function Name | +|------|-------|-----------------|------------------|---------------| +| 4 | Binary Complement 1s | 011= | 100 | binary_complement_1s | +| 5 | Modulo Division | 79%59= | 20 | modulo_division | +| 14 | Decimal to Binary | Binary of 3= | 11 | decimal_to_binary | +| 15 | Binary to Decimal | 111100 | 60 | binary_to_decimal | +| 56 | Fibonacci Series | The Fibonacci Series of the first 15 numbers is ? | [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377] | fibonacci_series | +| 62 | nth Fibonacci number | What is the 80th Fibonacci number? | 23416728348467744 | nth_fibonacci_number | +| 64 | Binary to Hexidecimal | 11 | 0x3 | binary_to_hex | +| 73 | Binary 2's Complement | 2's complement of = | | binary_2s_complement | +| 79 | Decimal to Hexadecimal | Binary of 308= | 0x134 | decimal_to_hexadeci | +| 84 | Converts decimal to octal | The decimal number 4031 in Octal is: | 0o7677 | decimal_to_octal | +| 91 | Binary Coded Decimal to Integer | Integer of Binary Coded Decimal 1 is = | 5416 | bcd_to_decimal | +| 103 | Decimal to Binary Coded Decimal | BCD of Decimal Number 4889 is = | 1319 | decimal_to_bcd | +## geometry +| Id | Skill | Example problem | Example Solution | Function Name | +|------|-------|-----------------|------------------|---------------| +| 18 | Area of Triangle | Area of triangle with side lengths: 6 8 19 = | (3.715326154880634e-15+60.675880710542636j) | area_of_triangle | +| 19 | Triangle exists check | Does triangle with sides 8, 30 and 7 exist? | No | valid_triangle | +| 22 | Third Angle of Triangle | Third angle of triangle with angles 30 and 54 = | 96 | third_angle_of_triangle | +| 25 | Pythagorean Theorem | The hypotenuse of a right triangle given the other two lengths 20 and 4 = | 20.40 | pythagorean_theorem | +| 29 | Angle of a Regular Polygon | Find the angle of a regular polygon with 14 sides | 154.29 | angle_regular_polygon | +| 32 | Surface Area of Cube | Surface area of cube with side = 7m is | 294 m^2 | surface_area_cube | +| 33 | Surface Area of Cuboid | Surface area of cuboid with sides = 3m, 1m, 15m is | 126 m^2 | surface_area_cuboid | +| 34 | Surface Area of Cylinder | Surface area of cylinder with height = 27m and radius = 9m is | 2035 m^2 | surface_area_cylinder | +| 35 | Volum of Cube | Volume of cube with side = 7m is | 343 m^3 | volume_cube | +| 36 | Volume of Cuboid | Volume of cuboid with sides = 11m, 6m, 3m is | 198 m^3 | volume_cuboid | +| 37 | Volume of cylinder | Volume of cylinder with height = 34m and radius = 20m is | 42725 m^3 | volume_cylinder | +| 38 | Surface Area of cone | Surface area of cone with height = 31m and radius = 14m is | 2111 m^2 | surface_area_cone | +| 39 | Volume of cone | Volume of cone with height = 23m and radius = 1m is | 24 m^3 | volume_cone | +| 49 | Fourth Angle of Quadrilateral | Fourth angle of quadrilateral with angles 117 , 34, 65 = | 144 | fourth_angle_of_quadrilateral | +| 57 | Trigonometric Values | What is sin(60)? | √3/2 | basic_trigonometry | +| 58 | Sum of Angles of Polygon | Sum of angles of polygon with 4 sides = | 360 | sum_of_polygon_angles | +| 60 | Surface Area of Sphere | Surface area of Sphere with radius = 13m is | 2123.7166338267 m^2 | surface_area_sphere | +| 61 | Volume of Sphere | Volume of sphere with radius 9 m = | 3053.628059289279 m^3 | volume_sphere | +| 70 | Angle between 2 vectors | angle between the vectors [125.74, 310.83] and [290.27, 233.14] is: | 0.51 radians | angle_btw_vectors | +| 75 | Area of a Sector | Given radius, 41 and angle, 1. Find the area of the sector. | Area of sector = 14.66949 | sector_area | +| 86 | Degrees to Radians | Angle 244 in radians is = | 4.26 | degree_to_rad | +| 87 | Radians to Degrees | Angle 3 in degrees is = | 171.89 | radian_to_deg | +| 95 | Curved surface area of a cylinder | What is the curved surface area of a cylinder of radius, 16 and height, 41? | CSA of cylinder = 4121.77 | curved_surface_area_cylinder | +| 96 | Perimeter of Polygons | The perimeter of a 3 sided polygon with lengths of [117, 20, 100]cm is: | 237 | perimeter_of_polygons | +| 104 | Circumference | Circumference of circle with radius 22 | 138.23007675795088 | circumference | +| 108 | Arc length of Angle | Given radius, 15 and angle, 88. Find the arc length of the angle. | Arc length of the angle = 23.03835 | arc_length | +| 112 | Area of Circle | Area of circle with radius 9 | 254.57142857142856 | area_of_circle | +## misc +| Id | Skill | Example problem | Example Solution | Function Name | +|------|-------|-----------------|------------------|---------------| +| 9 | LCM (Least Common Multiple) | LCM of 6 and 13 = | 78 | lcm | +| 10 | GCD (Greatest Common Denominator) | GCD of 6 and 19 = | 1 | gcd | +| 27 | Prime Factorisation | Find prime factors of 88 | [2, 2, 2, 11] | prime_factors | +| 40 | Common Factors | Common Factors of 5 and 1 = | [1] | common_factors | +| 51 | HCF (Highest Common Factor) | HCF of 12 and 16 = | 4 | hcf | +| 55 | Comparing surds | Fill in the blanks 38^(1/3) _ 72^(1/7) | > | surds_comparison | +| 63 | Profit or Loss Percent | Loss percent when CP = 890 and SP = 392 is: | 55.955056179775276 | profit_loss_percent | +| 66 | Geometric Progression | For the given GP [3, 27, 243, 2187, 19683, 177147] ,Find the value of a,common ratio,8th term value, sum upto 8th term | The value of a is 3, common ratio is 9 , 8th term is 14348907 , sum upto 8th term is 16142520.0 | geometric_progression | +| 67 | Geometric Mean of N Numbers | Geometric mean of 4 numbers 68 , 99 , 69 , 94 = | (68*99*69*94)^(1/4) = 81.28871585461766 | geometric_mean | +| 68 | Harmonic Mean of N Numbers | Harmonic mean of 2 numbers 36 and 89 = | 2/((1/36) + (1/89)) = 51.264 | harmonic_mean | +| 69 | Euclidian norm or L2 norm of a vector | Euclidian norm or L2 norm of the vector[500.9951948616654, 42.203693843008814, 503.055665827151, 997.8018016538981, 720.8110612915443, 219.71485715574812, 445.67377783903027] is: | 1505.9611867978413 | euclidian_norm | +| 81 | Celsius To Fahrenheit | Convert -40 degrees Celsius to degrees Fahrenheit = | -40.0 | celsius_to_fahrenheit | +| 82 | AP Term Calculation | Find the term number 82 of the AP series: -86, -93, -100 ... | -653 | arithmetic_progression_term | +| 83 | AP Sum Calculation | Find the sum of first 71 terms of the AP series: -62, -8, 46 ... | 129788.0 | arithmetic_progression_sum | +| 85 | Converts decimal to Roman Numerals | The number 1282 in Roman Numerals is: | MCCLXXXII | decimal_to_roman_numerals | +| 92 | Complex To Polar Form | rexp(itheta) = | 16.12exp(i-1.05) | complex_to_polar | +| 93 | Union,Intersection,Difference of Two Sets | Given the two sets a={10, 2, 5, 7} ,b={2, 3, 6, 8, 10}.Find the Union,intersection,a-b,b-a and symmetric difference | Union is {2, 3, 5, 6, 7, 8, 10},Intersection is {10, 2}, a-b is {5, 7},b-a is {8, 3, 6}, Symmetric difference is {3, 5, 6, 7, 8} | set_operation | +| 94 | Base Conversion | Convert E079 from base 16 to base 2. | 1110000001111001 | base_conversion | +| 98 | Quotient of Powers with Same Base | The Quotient of 48^6 and 48^7 = 48^(6-7) = 48^-1 | 0.020833333333333332 | quotient_of_power_same_base | +| 99 | Quotient of Powers with Same Power | The Quotient of 2^3 and 17^3 = (2/17)^3 = 0.11764705882352941^3 | 0.001628332994097293 | quotient_of_power_same_power | +| 101 | Leap Year or Not | Year 2016 | is a leap year | is_leap_year | +| 102 | Minute to Hour conversion | Convert 509 minutes to Hours & Minutes | 8 hours and 29 minutes | minutes_to_hours | +| 106 | signum function | signum of 750 is = | 1 | signum_function | +| 109 | Binomial distribution | A manufacturer of metal pistons finds that, on average, 39.24% of the pistons they manufacture are rejected because they are incorrectly sized. What is the probability that a batch of 15 pistons will contain no more than 7 rejected pistons? | 80.44 | binomial_distribution | +## statistics +| Id | Skill | Example problem | Example Solution | Function Name | +|------|-------|-----------------|------------------|---------------| +| 30 | Combinations of Objects | Number of combinations from 12 objects picked 3 at a time | 220 | combinations | +| 42 | Permutations | Number of Permutations from 13 objects picked 1 at a time = | 13 | permutation | +| 52 | Probability of a certain sum appearing on faces of dice | If 2 dice are rolled at the same time, the probability of getting a sum of 6 = | 5/36 | dice_sum_probability | +| 54 | Confidence interval For sample S | The confidence interval for sample [270, 279, 280, 228, 245, 203, 254, 207, 218, 243, 205, 258, 244, 288, 278, 269, 216, 297, 215, 277, 296, 282, 257, 242, 246, 274, 224, 299, 239, 230, 225, 295, 284] with 99% confidence is | (266.76150517633465, 240.3294039145744) | confidence_interval | +| 59 | Mean,Standard Deviation,Variance | Find the mean,standard deviation and variance for the data[44, 7, 14, 15, 20, 43, 46, 29, 13, 15, 22, 45, 6, 24, 25] | The Mean is 24.533333333333335 , Standard Deviation is 181.58222222222224, Variance is 13.475244792664148 | data_summary | +| 76 | Mean and Median | Given the series of numbers [76, 34, 10, 78, 55, 74, 54, 91, 19, 39]. find the arithmatic mean and mdian of the series | Arithmetic mean of the series is 53.0 and Arithmetic median of this series is 54.5 | mean_median | +| 107 | Conditional Probability | Someone tested positive for a nasty disease which only 0.47% of population have. Test sensitivity (true positive) is equal to SN= 93.50% whereas test specificity (true negative) SP= 98.52%. What is the probability that this guy really has that disease? | 22.98% | conditional_probability | diff --git a/makeReadme.py b/makeReadme.py index 5467f8e..61a1744 100644 --- a/makeReadme.py +++ b/makeReadme.py @@ -1,5 +1,8 @@ from mathgenerator.mathgen import * +write_list = [] +subjects = ['algebra', 'basic_math', 'calculus', 'computer_science', 'geometry', 'misc', 'statistics'] +wList = getGenList() def array2markdown_table(string): string = string.replace("[[", "
") @@ -11,14 +14,40 @@ def array2markdown_table(string): string = string.replace("\n", "") return string +def write_table_of_contents(): + lines = [] -wList = getGenList() -lines = [] -with open('mathgenerator/mathgen.py', 'r') as f: - lines = f.readlines() + tc_lines = [ + '* [Installation](#installation)\n', + '* [Basic Usage](#basic-usage)\n', + ' * [More Complicated Usage](#more-complicated-usage)\n' + '* [Documentation](#documentation)\n', + '* [List of Generators](#list-of-generators)\n', + ] + for subject in subjects: + line = ' * [' + subject + '](#' + subject + ')\n' + tc_lines.append(line) -allRows = [] -for item in wList: + with open('README.md', "r") as g: + lines = g.readlines() + + upper_bound = lines.index('## Table of Contents\n') + upper_lines = lines[:upper_bound + 1] + lower_bound = lines.index('## Installation\n') + lower_lines = lines[lower_bound - 1:] + lines = [] + + for upper_line in upper_lines: + lines.append(upper_line) + for tc_line in tc_lines: + lines.append(tc_line) + for lower_line in lower_lines: + lines.append(lower_line) + + with open('README.md', "w") as g: + g.writelines(lines) + +def gen_to_row_string(item): myGen = item[2] # NOTE: renamed 'sol' to 'solu' to make it look nicer prob, solu = myGen() @@ -35,21 +64,54 @@ for item in wList: # NOTE: renamed 'def_name' to 'func_name' because it suits it more func_name = item[3] row = [myGen.id, myGen.title, prob, solu, func_name] + tableLine = "| " + str(row[0]) + " | " + str(row[1]) + " | " + str( + row[2]) + " | " + str(row[3]) + " | " + str(row[4]) + " |\n" print('added', item[1], '-', func_name, 'to the README.md') - allRows.append(row) + return tableLine -with open('README.md', "r") as g: - lines = g.readlines() +def make_table_header(name): + lines = [ + '## ' + name + '\n', + '| Id | Skill | Example problem | Example Solution | Function Name |\n', + '|------|-------|-----------------|------------------|---------------|\n' + ] + for line in lines: + write_list.append(line) - line = lines.index('|------|-------|-----------------|------------------|---------------|\n') - lines = lines[:line + 1] +def write_subject_table(subject_name, full_gen_list): + subject_list = [] + # Create list of generators in given subject + for gen in full_gen_list: + if gen[4] == subject_name: + subject_list.append(gen) + subject_list.sort() - for row in allRows: - tableLine = "| " + str(row[0]) + " | " + str(row[1]) + " | " + str( - row[2]) + " | " + str(row[3]) + " | " + str(row[4]) + " |\n" - lines.append(tableLine) + # Create table header + make_table_header(subject_name) -with open('README.md', "w") as g: - g.writelines(lines) + # Add each item to write_list + for item in subject_list: + write_list.append(gen_to_row_string(item)) -print("New README.md table generated") + +def main(): + write_table_of_contents() + for subject in subjects: + write_subject_table(subject, wList) + + with open('README.md', "r") as g: + lines = g.readlines() + + line = lines.index('## List of Generators\n') + lines = lines[:line + 1] + + for write_line in write_list: + lines.append(write_line) + + with open('README.md', "w") as g: + g.writelines(lines) + + print("New README.md table generated") + +if __name__ == "__main__": + main() diff --git a/mathgenerator/__init__.py b/mathgenerator/__init__.py index b4bfb54..cb899b3 100644 --- a/mathgenerator/__init__.py +++ b/mathgenerator/__init__.py @@ -21,10 +21,10 @@ class Generator: text) = traceback.extract_stack()[-2] funcname = filename[filename.rfind('/'):].strip() funcname = funcname[1:-3] - groupname = filename[:filename.rfind('/')].strip() - groupname = groupname[groupname.rfind('/'):].strip() - groupname = groupname[1:] - genList.append([id, title, self, funcname, groupname]) + subjectname = filename[:filename.rfind('/')].strip() + subjectname = subjectname[subjectname.rfind('/'):].strip() + subjectname = subjectname[1:] + genList.append([id, title, self, funcname, subjectname]) def __str__(self): return str( diff --git a/mathgenerator/funcs/algebra/intersection_of_two_lines.py b/mathgenerator/funcs/algebra/intersection_of_two_lines.py index c53f6be..f3bb678 100644 --- a/mathgenerator/funcs/algebra/intersection_of_two_lines.py +++ b/mathgenerator/funcs/algebra/intersection_of_two_lines.py @@ -1,5 +1,7 @@ from .__init__ import * +import fractions + def intersectionOfTwoLinesFunc(minM=-10, maxM=10, diff --git a/mathgenerator/funcs/algebra/quadratic_equation.py b/mathgenerator/funcs/algebra/quadratic_equation.py index 5961852..0a6581e 100644 --- a/mathgenerator/funcs/algebra/quadratic_equation.py +++ b/mathgenerator/funcs/algebra/quadratic_equation.py @@ -1,5 +1,7 @@ from .__init__ import * +import math + def quadraticEquation(maxVal=100): a = random.randint(1, maxVal) diff --git a/mathgenerator/funcs/computer_science/nth_fibonacci_number.py b/mathgenerator/funcs/computer_science/nth_fibonacci_number.py index cfb7e8a..273f236 100644 --- a/mathgenerator/funcs/computer_science/nth_fibonacci_number.py +++ b/mathgenerator/funcs/computer_science/nth_fibonacci_number.py @@ -1,5 +1,7 @@ from .__init__ import * +import math + def nthFibonacciNumberFunc(maxN=100): golden_ratio = (1 + math.sqrt(5)) / 2 diff --git a/mathgenerator/funcs/geometry/arc_length.py b/mathgenerator/funcs/geometry/arc_length.py index d88090e..fdda5e8 100644 --- a/mathgenerator/funcs/geometry/arc_length.py +++ b/mathgenerator/funcs/geometry/arc_length.py @@ -1,5 +1,7 @@ from .__init__ import * +import math + def arclengthFunc(maxRadius=49, maxAngle=359): Radius = random.randint(1, maxRadius) diff --git a/mathgenerator/funcs/geometry/basic_trigonometry.py b/mathgenerator/funcs/geometry/basic_trigonometry.py index 2992034..b93365b 100644 --- a/mathgenerator/funcs/geometry/basic_trigonometry.py +++ b/mathgenerator/funcs/geometry/basic_trigonometry.py @@ -1,5 +1,7 @@ from .__init__ import * +import math + # Handles degrees in quadrant one def basicTrigonometryFunc(angles=[0, 30, 45, 60, 90], diff --git a/mathgenerator/funcs/misc/complex_to_polar.py b/mathgenerator/funcs/misc/complex_to_polar.py index ad4798d..f948253 100644 --- a/mathgenerator/funcs/misc/complex_to_polar.py +++ b/mathgenerator/funcs/misc/complex_to_polar.py @@ -1,5 +1,7 @@ from .__init__ import * +import math + def complexToPolarFunc(minRealImaginaryNum=-20, maxRealImaginaryNum=20): num = complex(random.randint(minRealImaginaryNum, maxRealImaginaryNum), diff --git a/mathgenerator/funcs/misc/decimal_to_roman_numerals.py b/mathgenerator/funcs/misc/decimal_to_roman_numerals.py index c2470dc..7616f2c 100644 --- a/mathgenerator/funcs/misc/decimal_to_roman_numerals.py +++ b/mathgenerator/funcs/misc/decimal_to_roman_numerals.py @@ -1,5 +1,7 @@ from .__init__ import * +import math + def decimalToRomanNumeralsFunc(maxDecimal=4000): x = random.randint(0, maxDecimal) diff --git a/mathgenerator/funcs/misc/euclidian_norm.py b/mathgenerator/funcs/misc/euclidian_norm.py index 017fa74..8cbcf58 100644 --- a/mathgenerator/funcs/misc/euclidian_norm.py +++ b/mathgenerator/funcs/misc/euclidian_norm.py @@ -1,5 +1,7 @@ from .__init__ import * +import math + def euclidianNormFunc(maxEltAmt=20): vec = [ diff --git a/mathgenerator/funcs/misc/surds_comparison.py b/mathgenerator/funcs/misc/surds_comparison.py index 7c2825c..ec50c0e 100644 --- a/mathgenerator/funcs/misc/surds_comparison.py +++ b/mathgenerator/funcs/misc/surds_comparison.py @@ -1,5 +1,7 @@ from .__init__ import * +import math + def surdsComparisonFunc(maxValue=100, maxRoot=10): radicand1, radicand2 = tuple(random.sample(range(1, maxValue), 2)) diff --git a/mathgenerator/funcs/statistics/confidence_interval.py b/mathgenerator/funcs/statistics/confidence_interval.py index e6cb161..96b2b90 100644 --- a/mathgenerator/funcs/statistics/confidence_interval.py +++ b/mathgenerator/funcs/statistics/confidence_interval.py @@ -1,5 +1,7 @@ from .__init__ import * +import math + def confidenceIntervalFunc(): n = random.randint(20, 40) diff --git a/mathgenerator/funcs/statistics/permutation.py b/mathgenerator/funcs/statistics/permutation.py index 63d78a8..5341a88 100644 --- a/mathgenerator/funcs/statistics/permutation.py +++ b/mathgenerator/funcs/statistics/permutation.py @@ -1,5 +1,7 @@ from .__init__ import * +import math + def permutationFunc(maxlength=20): a = random.randint(10, maxlength)