示例#1
0
            public override MissionBase Generate()
            {
                // int randomNum = rnd.Next();
                TextMission randomMission = new TextMission(NumOfMission, MissionName, "Вопрос", "Ответ");

                return(randomMission);
            }
示例#2
0
        public override MissionBase Generate()
        {
            var    temp  = GetRandomTwoUnits();
            string unit1 = temp[0];
            string unit2 = temp[1];
            //unit1 > unit2

            int num = rnd.Next(5, 20);

            int result = ConvertFromTo(num, unit1, unit2);

            MissionBase generated;

            if (rnd.Next(0, 2) == 0)
            {
                var Question = $"Перевидите {num} из {unit1} в {unit2}";
                var Answer   = result.ToString();

                generated = new TextMission(2, "Единицы измерения информации", Question, Answer);
            }
            else
            {
                var Question = $"Перевидите {result} из {unit2} в {unit1}";
                var Answer   = num.ToString();

                generated = new TextMission(NumOfMission, MissionName, Question, Answer);
            }
            return(generated);
        }
示例#3
0
        public override MissionBase Generate()
        {
            string question, answer;
            int    pow = rnd.Next(3, 13);

            question = $"Напишите {pow}-ую степень двойки";
            answer   = Math.Pow(2, pow).ToString();

            MissionBase mb = new TextMission(NumOfMission, MissionName, question, answer);

            return(mb);
        }
示例#4
0
        private TextMission Task1()
        {
            int    p = rnd.Next(5, 9);
            int    l = rnd.Next(25, 41);
            int    s = rnd.Next(40, 86);
            string q = $"Созданный на компьютере текст занимает {p} полных страниц.\n" +
                       $"На каждой странице размещается {l} строк по {s} символов в строке.\n" +
                       $"Какой объем оперативной памяти (в байтах) займет этот текст?";
            string      a      = $"{p * l * s}";
            TextMission result = new TextMission(NumOfMission, MissionName, q, a);

            return(result);
        }
        public override MissionBase Generate()
        {
            int num = rnd.Next(50, 200);
            int n1  = int.Parse("2,3,4,5,6,7,8,9,11,12,13,14,15,16".Split(',').RandomElement());
            int n2  = int.Parse("2,3,4,5,6,7,8,9,11,12,13,14,15,16".Split(',').RandomElement());
            var q   = $"Переведите число {FromDec(num, n1)} из {n1}-ой в {n2}-ую.";

            var answer = FromDec(num, n2);
            //TimeNeedToSolveMissionSeconds
            var mission = new TextMission(NumOfMission, MissionName, q, answer);

            return(mission);
        }
        public override MissionBase Generate()
        {
            while (true)
            {
                if (rnd.RandomBool())
                {
                    int fs   = rnd.Next(5, 2000);
                    int t    = rnd.Next(5, 61);
                    int tAsk = rnd.Next(5, 61);
                    if (t == tAsk)
                    {
                        continue;
                    }

                    string q = $"Файл размером {fs} Кбайт передаётся через некоторое соединение \n" +
                               $"в течение {t} секунд. Определите размер файла (в Кбайт), который \n" +
                               $"можно передать через это соединение за {tAsk} секунд.";

                    double a = Convert.ToDouble(fs) * Convert.ToDouble(tAsk) / Convert.ToDouble(t);
                    if (Convert.ToDouble((int)a) != a)
                    {
                        continue;
                    }

                    return(new TextMission(NumOfMission, MissionName, q, a.ToString()));
                }
                else
                {
                    int fs    = rnd.Next(5, 2000);
                    int t     = rnd.Next(5, 61);
                    int fsAsk = rnd.Next(5, 61);
                    if (fs == fsAsk)
                    {
                        continue;
                    }

                    string q = $"Файл размером {fs} Кбайт передаётся через некоторое соединение\n" +
                               $"в течение {t} секунд. Определите время, за которое\n" +
                               $"можно передать файл весом {fsAsk} Кбайт.";

                    double a = Convert.ToDouble(t) * Convert.ToDouble(fsAsk) / Convert.ToDouble(fs);
                    if (Convert.ToDouble((int)a) != a)
                    {
                        continue;
                    }
                    var mission = new TextMission(NumOfMission, MissionName, q, a.ToString());
                    return(mission);
                }
            }
        }
示例#7
0
        public override MissionBase Generate()
        {
            while (true)
            {
                try
                {
                    LogicMission logicMission = new LogicMission();

                    logicMission.SetAllRandomValues();

                    List <int> right = new List <int>();
                    List <int> wrong = new List <int>();

                    for (int i = logicMission.numInFirst - 15; i < logicMission.numInFirst + 15; i++)
                    {
                        if (logicMission.IsRight(i))
                        {
                            right.Add(i);
                        }
                        else
                        {
                            wrong.Add(i);
                        }
                    }

                    int    rightAnswer = rnd.Next(0, 4);
                    string nums        = "";
                    for (int i = 0; i < 4; i++)
                    {
                        if (i == rightAnswer)
                        {
                            nums += $"{i + 1}. {right.OrderBy(x => rnd.Next()).ToArray()[0]}\n";
                            continue;
                        }
                        int w = wrong.OrderBy(x => rnd.Next()).ToArray()[0];
                        wrong.Remove(w);
                        nums += $"{i + 1}. {w}\n";
                    }

                    string q = $"Среди чисел выберите те, которые удовлетворяют условию\n" +
                               $"{logicMission.GetString()}\n{nums}";

                    var mission = new TextMission(NumOfMission, MissionName, q, (rightAnswer + 1).ToString());
                    return(mission);
                }
                catch { }
            }
        }
示例#8
0
        public void MissionGenerator()
        {
            MissionGenerateExample generator = new MissionGenerateExample();

            #region check mission
            Assert.AreEqual(0, generator.NumOfMission);
            Assert.AreEqual(120, generator.TimeToSolveMission);
            Assert.AreEqual(MissionType.Theory, generator.TypeOfMission);
            Assert.AreEqual(5, generator.MaxNumInTest);
            #endregion
            MissionGeneratorCategory missionGeneratorCatagory = new MissionGeneratorCategory("Название категории заданий", new MissionGenerator[]
            {
                generator
            });
            TextMission generatedMission = missionGeneratorCatagory.Missions[0].Generate() as TextMission;

            Assert.AreEqual("Вопрос", generatedMission.Question);
            Assert.AreEqual("Ответ", generatedMission.Answer);
        }
示例#9
0
        private TextMission Task2()
        {
genAgain:
            int b = rnd.Next(6, 9);  // bytes on one symbol

            int    p = rnd.Next(5, 9);
            int    l = rnd.Next(25, 41);
            int    s = rnd.Next(40, 86);
            string q = $"Для записи текста использовался {Math.Pow(2, b)}-символьный алфавит.\n" +
                       $"Каждая страница содержит {l} строк по {s} символов в строке.\n" +
                       $"Какой объем информации содержат {p} страниц текста (в байтах)?";

            double a = (double)(p * l * s * b) / 8.0;

            if (a != (int)a)
            {
                goto genAgain;
            }

            TextMission result = new TextMission(NumOfMission, MissionName, q, ((int)a).ToString());

            return(result);
        }
示例#10
0
        public override MissionBase Generate()
        {
            var Question = "В программе «:=» обозначает оператор присваивания, знаки «+», «-», «*» и «/» —\n\r" +
                           "соответственно операции сложения, вычитания, умножения и деления.\n\r" +
                           "Правила выполнения операций и порядок действий соответствуют правилам арифметики.\n\r";

            int x = rnd.Next(0, 17);
            int y = rnd.Next(2, 30);

            //line 1 - 2
            string task = $"a := {x}\n\r" +
                          $"b := {y}\n\r";

            //line 3
            int x1;

            if (x % 2 == 0)
            {
                if (rnd.RandomBool())
                {
                    task += $"a := a/2*b\n\r";
                    x1    = x / 2 * y;
                }
                else
                {
                    task += $"a := b+a/2\n\r";
                    x1    = y + x / 2;
                }
            }
            else
            {
                if (rnd.RandomBool())
                {
                    task += $"a := a*2+b\n\r";
                    x1    = x * 2 + y;
                }
                else
                {
                    task += $"a := a*2+3*b\n\r";
                    x1    = x * 2 + 3 * y;
                }
            }

            //line 4
            int y1;

            if (x1 % 3 == 0)
            {
                if (rnd.RandomBool())
                {
                    task += $"b := a/3-b\n\r";
                    y1    = x1 / 3 - y;
                }
                else
                {
                    task += $"b := a/3+b\n\r";
                    y1    = x1 / 3 + y;
                }
            }
            else
            {
                if (rnd.RandomBool())
                {
                    int randomNum = rnd.Next(30, 100);
                    task += $"b := {randomNum}-a\n\r";
                    y1    = randomNum - x1;
                }
                else
                {
                    if (rnd.RandomBool())
                    {
                        int randomNum = rnd.Next(30, 100);
                        task += $"b := {randomNum}-a-b\n\r";
                        y1    = randomNum - x1 - y;
                    }
                    else
                    {
                        int randomNum = rnd.Next(30, 100);
                        task += $"b := {randomNum}-a+b\n\r";
                        y1    = randomNum - x1 + y;
                    }
                }
            }

            //add all generated lines
            Question += task;

            MissionBase generated;

            //create answer
            if (rnd.RandomBool())
            {
                Question += "В ответе укажите одно целое число — значение переменной a.";
                var Answer = x1.ToString();

                generated = new TextMission(NumOfMission, MissionName, Question, Answer);
            }
            else
            {
                Question += "В ответе укажите одно целое число — значение переменной b.";
                var Answer = y1.ToString();

                generated = new TextMission(NumOfMission, MissionName, Question, Answer);
            }
            return(generated);
        }
示例#11
0
        public override MissionBase Generate()
        {
            while (true)
            {
                string question = "У исполнителя Квадратор две команды, которым присвоены номера:\n";

                int command1 = rnd.Next(-2, 5);
                if (command1 == 0)
                {
                    continue;
                }

                question += command1 > 0 ? $"1. Прибавь {command1}\n" : $"1. Отними {Math.Abs(command1)}\n";

                double command2 = rnd.Next(2, 5);
                if (rnd.RandomBool())
                {
                    question += $"2. Раздели на {command2}\n";
                    command2  = 1 / command2;
                }
                else
                {
                    question += $"2. Умножить на {command2}\n";
                }

                for (int i = 0; i < 100; i++)
                {
                    int    beginNum = rnd.Next(2, 120);
                    double result   = beginNum;
                    string answer   = "";
                    for (int j = 0; j < 5; j++)
                    {
                        if (rnd.RandomBool())
                        {
                            result += command1;
                            answer += "1";
                        }
                        else
                        {
                            result *= command2;
                            answer += "2";
                        }
                    }
                    if (result != (int)result || result == beginNum || answer.Distinct().Count() == 1 || // целое число. искл ответ вида: 22222
                        result > 500)
                    {
                        continue;
                    }

                    BeginNum = beginNum;
                    Result   = (int)result;
                    c1       = command1;
                    c2       = command2;

                    question += $"Запишите порядок команд в программе,\n" +
                                $"которая преобразует число {beginNum} в число {result}.\n" +
                                $"Указывайте лишь номера пяти команд.";
                    var mission = new TextMission(NumOfMission, MissionName, question, answer, IsSolvedRight);
                    return(mission);
                }
            }
        }