internal Question.MultiplicationQuestion generateQuestion(MultiplicationConstraints constraint)
        {
            int totalNumbers = 0;

            if (2 == constraint.MaxTotalNumbers)
            {
                totalNumbers = 2;
            }
            else
            {
                totalNumbers = PeanutButter.RandomGenerators.RandomValueGen.GetRandomInt(2, constraint.MaxTotalNumbers);
            }

            Question.MultiplicationQuestion q = new Question.MultiplicationQuestion();
            int totalNumberGenerated          = 0;

            while (true)
            {
                int number = PeanutButter.RandomGenerators.RandomValueGen.GetRandomInt((int)constraint.MinNumber,
                                                                                       (int)constraint.MaxNumber);

                q.Numbers.Add(new Question.SignedNumber()
                {
                    SortOrder = totalNumberGenerated, Number = number
                });
                totalNumberGenerated++;

                if (totalNumberGenerated >= totalNumbers)
                {
                    break;
                }
            }

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

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