internal Question.SimpleDivisionQuestion generateQuestion(SimpleDivisionConstraint constraint)
        {
            Question.SimpleDivisionQuestion q = new Question.SimpleDivisionQuestion();

            while (true)
            {
                int denominator = PeanutButter.RandomGenerators.RandomValueGen.GetRandomInt((int)(constraint.MinDivisor),
                                                                                            (int)(constraint.MaxDivisor));

                int numerator = PeanutButter.RandomGenerators.RandomValueGen.GetRandomInt((int)(denominator * constraint.MinNumberOfMulitple),
                                                                                          (int)(denominator * constraint.MaxNumberOfMulitple));


                if (!constraint.AllowRemainder && numerator % denominator != 0)
                {
                    continue;
                }

                q.Numbers.Add(new Question.SignedNumber {
                    SortOrder = 1, Number = numerator
                });
                q.Numbers.Add(new Question.SignedNumber {
                    SortOrder = 2, Number = denominator
                });
                q.AllowRemainder = constraint.AllowRemainder;
                break;
            }

            return(q);
        }
        bool constraintPasses(SimpleDivisionConstraint constraint, Logic.Question.IQuestion q)
        {
            decimal score = getScore(q);

            return(score <= constraint.MaxScore || score >= constraint.MinScore);
        }