public override MissionBase Generate() { // int randomNum = rnd.Next(); TextMission randomMission = new TextMission(NumOfMission, MissionName, "Вопрос", "Ответ"); return(randomMission); }
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); }
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); }
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); } } }
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 { } } }
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); }
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); }
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); }
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); } } }