From 0effa0c3a7272e301e6d445f477f2307b609d494 Mon Sep 17 00:00:00 2001 From: lukew3 Date: Tue, 13 Oct 2020 12:42:38 -0400 Subject: [PATCH] Changed to class-based generators --- CONTRIBUTING.md | 13 +++++++++- mathGenerator/generator.py | 51 ++++++++++++++++++++++---------------- 2 files changed, 42 insertions(+), 22 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9c81e82..4d9b6ee 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,7 +5,17 @@ This project was created with contributions at it's core. We need your help to e ## How You Can Help ### Coding Generators -As of right now, all of our generators are being coded in python. Each generator should be contained in a function. Your function should look something like the following: +As of right now, all of our generators are being coded in python. Your generator will be an object of the Generator class and will have a function created seperately. +Your object instantiation should follow this format: +``` +#g = Generator("", <id>, <generalized problem>, <generalized solution>, <function name>) + +``` +and look something like this: +``` +g2 = Generator("Addition", 2, "a+b=", "c", addition) +``` +Your function should look something like the following: ``` def addition(maxSum, maxAddend): """ @@ -25,6 +35,7 @@ def addition(maxSum, maxAddend): solution = str(c) return problem, solution ``` + Before coding, please check README.md to see if someone has already created the generator you plan to make. Skillid is determined by the next available id as can be determined in the table. diff --git a/mathGenerator/generator.py b/mathGenerator/generator.py index c3fcb0b..2be0ec8 100644 --- a/mathGenerator/generator.py +++ b/mathGenerator/generator.py @@ -1,16 +1,25 @@ import random +# || Generator class + +class Generator: + def __init__(self, title, id, generalProb, generalSol, func): + self.title = title + self.id = id + self.generalProb = generalProb + self.generalSol = generalSol + self.func = func + + def __str__(self): + return str(self.id) + " " + self.title + " " + self.generalProb + " " + self.generalSol + + def __call__(self): + return self.func() + + +# || Functions + def addition(maxSum = 99, maxAddend = 50): - """ - DESCRIPTION: - Generates addition problems with positive addends less than maxAddend and sum less than maxSum - SKILLID: - 2 - PROBLEM: - "a+b=" - SOLUTION: - "c" - """ a = random.randint(0, maxAddend) b = random.randint(0, min((maxSum-a), maxAddend)) #The highest value of b will be no higher than the maxsum minus the first number and no higher than the maxAddend as well c = a+b @@ -19,16 +28,6 @@ def addition(maxSum = 99, maxAddend = 50): return problem, solution def subtraction(maxMinuend = 99, maxDiff = 99): - """ - DESCRIPTION: - Generates subtraction problems with difference between 0 and maxDiff. Minuend and subtrahend are between 0 and maxMinuend. - SKILLID: - 3 - PROBLEM: - "a-b=" - SOLUTION: - "c" - """ a = random.randint(0, maxMinuend) b = random.randint(max(0, (a-maxDiff)), a) c = a-b @@ -36,4 +35,14 @@ def subtraction(maxMinuend = 99, maxDiff = 99): solution = str(c) return problem, solution -print(subtraction()) +# || Class Instances + +#Format is: +#g<id> = Generator("<Title>", <id>, <generalized problem>, <generalized solution>, <function name>) +g2 = Generator("Addition", 2, "a+b=", "c", addition) +g3 = Generator("Subtraction", 3, "a-b=", "c", subtraction) + +# || Testing Zone +print(g2) +print(g2()) +print(g3())