diff --git a/README.md b/README.md index 56c81cf..042f337 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,6 @@ problem, solution = mathgen.genById(0) | Id | Skill | Example problem | Example Solution | Function Name | |------|-----------------------------------|--------------------|-----------------------|--------------------------| [//]: # list start -| 81 | Celsius To Fahrenheit | Convert 15 degrees Celsius to degrees Fahrenheit = | 59.0 | # addition | | 0 | Addition | 16+3= | 19 | subtraction | | 1 | Subtraction | 96-17= | 79 | multiplication | | 2 | Multiplication | 48*1= | 48 | multiplicationFunc) | diff --git a/mathgenerator/funcs/__init__.py b/mathgenerator/funcs/__init__.py index 8937e2c..eb6f31a 100644 --- a/mathgenerator/funcs/__init__.py +++ b/mathgenerator/funcs/__init__.py @@ -86,3 +86,5 @@ from .percentageFunc import * from .celsiustofahrenheit import * from .arithmeticProgressionTermFunc import * from .arithmeticProgressionSumFunc import * +from .decimalToOctalFunc import * +from .decimalToRomanNumeralsFunc import * diff --git a/mathgenerator/funcs/decimalToOctalFunc.py b/mathgenerator/funcs/decimalToOctalFunc.py new file mode 100644 index 0000000..1f2cf6f --- /dev/null +++ b/mathgenerator/funcs/decimalToOctalFunc.py @@ -0,0 +1,11 @@ +from .__init__ import * + + +def decimalToOctalFunc(maxDecimal=4096): + x = random.randint(0, maxDecimal) + problem = "The decimal number " + str(x) + " in Octal is: " + solution = oct(x) + return problem, solution + + +decimalToOctal = Generator("Converts decimal to octal", 82, "What's the octal representation of 98?", "0o142", decimalToOctalFunc) diff --git a/mathgenerator/funcs/decimalToRomanNumeralsFunc.py b/mathgenerator/funcs/decimalToRomanNumeralsFunc.py new file mode 100644 index 0000000..407a4f2 --- /dev/null +++ b/mathgenerator/funcs/decimalToRomanNumeralsFunc.py @@ -0,0 +1,28 @@ +from .__init__ import * + + +def decimalToRomanNumeralsFunc(maxDecimal=4000): + x = random.randint(0, maxDecimal) + problem = "The number " + str(x) + " in Roman Numerals is: " + roman_dict = {1: "I", 5: "V", 10: "X", 50: "L", 100: "C", 500: "D", 1000: "M"} + divisor = 1 + while x >= divisor: + divisor *= 10 + divisor /= 10 + solution = "" + while x: + last_value = int(x / divisor) + if last_value <= 3: + solution += (roman_dict[divisor] * last_value) + elif last_value == 4: + solution += (roman_dict[divisor] * roman_dict[divisor * 5]) + elif 5 <= last_value <= 8: + solution += (roman_dict[divisor * 5] + (roman_dict[divisor] * (last_value - 5))) + elif last_value == 9: + solution += (roman_dict[divisor] + roman_dict[divisor * 10]) + x = math.floor(x % divisor) + divisor /= 10 + return problem, solution + + +decimalToRomanNumerals = Generator("Converts decimal to Roman Numerals", 83, "Convert 20 into Roman Numerals", "XX", decimalToRomanNumeralsFunc)