Esempio n. 1
0
        private EquationCollection generate_equations()
        {
            EquationCollection result = new EquationCollection();

            foreach (int term_left in LeftRange.Values)
            {
                foreach (int term_right in RightRange.Values)
                {
                    if (Operation == OperationEnum.Division)
                    {
                        if (term_left % term_right != 0)
                        {
                            continue;
                        }
                    }
                    int term_result = 0;
                    switch (Operation)
                    {
                    case OperationEnum.Addition:       term_result = term_left + term_right; break;

                    case OperationEnum.Substraction:   term_result = term_left - term_right; break;

                    case OperationEnum.Multiplication: term_result = term_left * term_right; break;

                    case OperationEnum.Division:       term_result = term_left / term_right; break;
                    }
                    if (ResultRange.Includes(term_result))
                    {
                        Equation eq = new Equation(term_left, Operation, term_right, term_result);
                        result.Add(eq);
                    }
                }
            }
            return(result);
        }
Esempio n. 2
0
        private void re_build_selection()
        {
            EquationCollection result = new EquationCollection(Solutions);

            if (Selection_Randomized)
            {
                for (int i = 0; i < result.Count; i++)
                {
                    int i0 = randomizer.Next(result.Count);
                    int i1 = randomizer.Next(result.Count);
                    if (i0 != i1)
                    {
                        Equation e = result[i0];
                        result[i0] = result[i1];
                        result[i1] = e;
                    }
                }
            }

            if (Selection_Limit < result.Count)
            {
                result = new EquationCollection(result.Take(Selection_Limit));
            }

            Selection = result;
        }
Esempio n. 3
0
 public EquationGenerator(Range left_range,
                          OperationEnum op,
                          Range right_range,
                          Range result_range)
 {
     LeftRange       = left_range;
     RightRange      = right_range;
     ResultRange     = result_range;
     Operation       = op;
     Solutions       = generate_equations();
     ElipsisPosition = ElipsisPositionEnum.Result;
     re_build_selection();
 }