2023-08-14 00:32:18 +03:00
|
|
|
|
unit Tasks1Arr;
|
|
|
|
|
|
|
|
|
|
|
|
uses LightPT;
|
|
|
|
|
|
|
|
|
|
|
|
var AllTaskNames: array of string;
|
|
|
|
|
|
|
|
|
|
|
|
procedure CheckTaskT(name: string);
|
|
|
|
|
|
begin
|
|
|
|
|
|
ClearOutputListFromSpaces;
|
|
|
|
|
|
case name of
|
|
|
|
|
|
'Arr0': begin
|
|
|
|
|
|
CheckData(Empty);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(5,4,3,2,1,777,5,4,3,2,1,777);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Arr1': begin
|
|
|
|
|
|
CheckData(Empty);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(777,1,1,1,777);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Arr2': begin
|
|
|
|
|
|
var n := 5;
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckData(Input := cInt*n);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
GenerateTests(10,tInt*n);
|
|
|
|
|
|
var il := IntArr(n);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(il.Select(x->x+1));
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Arr3': begin
|
|
|
|
|
|
var n := 5;
|
|
|
|
|
|
CheckData(Input := |cInt|*n);
|
|
|
|
|
|
GenerateTests(10,tInt*n);
|
|
|
|
|
|
var il := IntArr(n);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(il.Select(x->x*2));
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Arr4': begin
|
|
|
|
|
|
var n := 10;
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckData(Input := cInt*n);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
GenerateTests(10,tInt*n);
|
|
|
|
|
|
var il := IntArr(n);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(il+il.Select(x->x*x));
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Arr5': begin
|
|
|
|
|
|
var n := 10;
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckData(Input := cInt*n);
|
|
|
|
|
|
GenerateTests(10, tInt*n);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
var il := IntArr(n);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(il, il.Reverse);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'ArrErr1': begin
|
|
|
|
|
|
TaskResult := TaskStatus.ErrFix
|
|
|
|
|
|
end;
|
|
|
|
|
|
'ArrErr2': begin
|
|
|
|
|
|
TaskResult := TaskStatus.ErrFix
|
|
|
|
|
|
end;
|
|
|
|
|
|
'Arr1Sum': begin
|
|
|
|
|
|
var n := 10;
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckData(Input := cInt*n);
|
|
|
|
|
|
GenerateTests(10, tInt*n);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
var il := InputListAsIntegers.Select(x->x*0.1);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(il, il.Sum);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Arr2Prod': begin
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CancelMessagesIfInitial := False; // !
|
2023-08-14 00:32:18 +03:00
|
|
|
|
var n := 8;
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckData(cRe*n, cRe*n);
|
|
|
|
|
|
GenerateTests(10, tRe(1,10,1)*n);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
var il := ReArr(n).Select(x->x);
|
|
|
|
|
|
CheckOutputAfterInitial(il.Product);
|
|
|
|
|
|
end;
|
|
|
|
|
|
'Arr1_If': begin
|
|
|
|
|
|
CancelMessagesIfInitial := False;
|
|
|
|
|
|
var n := 10;
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckData(cInt*n, cInt*n);
|
|
|
|
|
|
GenerateTests(10, tInt*n);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
var il := IntArr(n);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(il, il.Where(x->x.IsEven));
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Arr2_If': begin
|
|
|
|
|
|
CancelMessagesIfInitial := False;
|
|
|
|
|
|
var n := 10;
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckData(cInt*n, cInt*n);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
GenerateTests(10,tInt*n);
|
|
|
|
|
|
var il := IntArr(n);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(il, il.Where((x,i)->i.IsOdd));
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Arr0_Count': begin
|
|
|
|
|
|
CancelMessagesIfInitial := False;
|
|
|
|
|
|
var n := 10;
|
|
|
|
|
|
CheckData(|cInt|*n, |cInt|*n);
|
|
|
|
|
|
GenerateTests(10,tInt*n);
|
|
|
|
|
|
var il := IntArr(n);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(il, il.Count(x->x.IsOdd));
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Arr1_Sum': begin
|
|
|
|
|
|
var n := InputList.Count;
|
2024-07-05 23:04:23 +03:00
|
|
|
|
GenerateTests(10, tInt*n);
|
|
|
|
|
|
var a := IntArr(n);
|
|
|
|
|
|
var il := a.Where(x->x in 3..5).ToArray;
|
|
|
|
|
|
CheckOutput(a, il, il.sum);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Arr2_Count': begin
|
|
|
|
|
|
var n := InputList.Count;
|
2024-07-05 23:04:23 +03:00
|
|
|
|
GenerateTests(10, tInt*n);
|
|
|
|
|
|
var a := IntArr(n);
|
|
|
|
|
|
CheckOutput(a, a.CountOf(2), a.CountOf(3), a.CountOf(4), a.CountOf(5));
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Arr1_MinMax': begin
|
|
|
|
|
|
var n := InputList.Count;
|
2024-07-05 23:04:23 +03:00
|
|
|
|
GenerateTests(10, tInt*n);
|
|
|
|
|
|
var a := IntArr(n);
|
|
|
|
|
|
CheckOutput(a, a.Min);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Arr2_MinMax': begin
|
|
|
|
|
|
var n := InputList.Count;
|
|
|
|
|
|
GenerateTests(10,tInt*n);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
var a := IntArr(n);
|
|
|
|
|
|
CheckOutput(a, a.Max);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Arr3_MinMax': begin
|
|
|
|
|
|
var n := InputList.Count;
|
|
|
|
|
|
GenerateTests(10,tInt*n);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
var a := IntArr(n);
|
|
|
|
|
|
CheckOutput(a, a.IndexMin);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'ПоискВМассиве': begin
|
|
|
|
|
|
var n := 10;
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckData(cInt*n, cInt*n);
|
|
|
|
|
|
GenerateTests(10, tInt*n);
|
|
|
|
|
|
var a := IntArr(n);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
CheckOutputAfterInitial(5 in a);
|
|
|
|
|
|
end;
|
|
|
|
|
|
'ПоискВМассивеСтрок': begin
|
|
|
|
|
|
CheckData(InitialInput := |cStr|, InitialOutput := |cStr|*8);
|
|
|
|
|
|
GenerateTests('Козлов','Серов','Иванова','Петров','Умнова','Хулиганкин','Белова','Ослов');
|
|
|
|
|
|
var s := Str(0);
|
|
|
|
|
|
var a := Arr('Козлов','Серов','Иванова','Петров','Умнова','Хулиганкин','Белова','Ослов');
|
|
|
|
|
|
CheckOutputAfterInitial(s in a);
|
|
|
|
|
|
end;
|
|
|
|
|
|
'Заполнение1': begin
|
|
|
|
|
|
CheckData(Empty);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(0,1,4,9,16,25,36,49,64,81);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Заполнение2Арифм': begin
|
|
|
|
|
|
CheckData(Empty);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(ArrGen(10,1,x->x+2));
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Заполнение3Арифм': begin
|
|
|
|
|
|
CheckData(Empty);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(ArrGen(10,1,x->x+2));
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Заполнение4Арифм': begin
|
|
|
|
|
|
CheckData(Empty);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(ArrGen(10,1.0,x->x+0.5));
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'Заполнение1Геом': begin
|
|
|
|
|
|
CheckData(Empty);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(ArrGen(10,1,x->x*2));
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'ЗаполнениеЧисламиФибоначчи': begin
|
|
|
|
|
|
CheckData(Empty);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(ArrGen(10,1,1,(x,y)->x+y));
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'СоседниеЭлементы1': begin
|
|
|
|
|
|
var n := 10;
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckData(cInt*n, cInt*n);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
GenerateTests(10,tInt*n);
|
|
|
|
|
|
var a := IntArr(n);
|
|
|
|
|
|
var ol := new ObjectList;
|
|
|
|
|
|
ol.AddRange(a.Pairwise.Where(\(x,y)->x<y).Select(t->t[1]));
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutputAfterInitial(ol);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'СоседниеЭлементы2': begin
|
|
|
|
|
|
var n := 10;
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckData(cInt*n, cInt*n);
|
|
|
|
|
|
GenerateTests(10, tInt*n);
|
|
|
|
|
|
var a := IntArr(n);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
var ol := new ObjectList;
|
|
|
|
|
|
ol.AddRange(a);
|
|
|
|
|
|
ol.Add(a.Pairwise.Where(\(x,y)->x<y).Count);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(ol);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'ИнвертированиеМассива1': begin
|
|
|
|
|
|
var n := 7;
|
|
|
|
|
|
CheckData(InitialOutput := |cStr|*n);
|
|
|
|
|
|
var a := OutSliceStrArr(0,n-1);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput(a + a.Reverse);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'ИнвертированиеМассива2': begin
|
|
|
|
|
|
CancelMessagesIfInitial := False;
|
|
|
|
|
|
// Введено целое, потом массив целых(n). Выведен этот массив
|
|
|
|
|
|
var n := Int;
|
|
|
|
|
|
CheckData(InitialInput := |cInt|*(n+1), InitialOutput := |cInt|*n);
|
|
|
|
|
|
// Тут сгенерировать тесты сложнее потому что длина массива переменная. В дело вступает лямбда
|
|
|
|
|
|
TestCount := 10;
|
|
|
|
|
|
GenerateTestData := tnum -> begin
|
|
|
|
|
|
var n := Random(5,10);
|
|
|
|
|
|
var a := ArrRandomInteger(n);
|
|
|
|
|
|
InputList.AddTestData(|n|+a);
|
|
|
|
|
|
end;
|
|
|
|
|
|
var a := IntArr(n);
|
|
|
|
|
|
var ares := a.Reverse.ToArray;
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutputAfterInitial(ares);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'СтрокаКакМассив1': begin
|
|
|
|
|
|
CancelMessagesIfInitial := False;
|
|
|
|
|
|
CheckData(InitialOutput := |cStr|*2);
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckOutput('бочка','ночка','дочка','кочка','почка','точка');
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'СтрокаКакМассив2': begin
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckData(Empty);
|
|
|
|
|
|
CheckOutput('миг','мир','пир','пар');
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
'СтрокаКакМассив3': begin
|
|
|
|
|
|
CancelMessagesIfInitial := False;
|
|
|
|
|
|
var s := 'на паркете написана абракадабра';
|
|
|
|
|
|
CheckData(InitialOutput := |cStr|*1);
|
|
|
|
|
|
|
|
|
|
|
|
var ol := new ObjectList;
|
|
|
|
|
|
ol.Add(s);
|
|
|
|
|
|
ol.Add(s.CountOf('а'));
|
|
|
|
|
|
CheckOutputSeq(ol);
|
|
|
|
|
|
end;
|
|
|
|
|
|
'СтрокаКакМассив4': begin
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckData(Empty);
|
2023-08-14 00:32:18 +03:00
|
|
|
|
CheckOutput(True);
|
|
|
|
|
|
end;
|
|
|
|
|
|
'СтрокаКакМассив5': begin
|
2024-07-05 23:04:23 +03:00
|
|
|
|
CheckData(Empty);
|
|
|
|
|
|
CheckOutput('абракадабра','эбрэкэдэбрэ');
|
2023-08-14 00:32:18 +03:00
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
initialization
|
|
|
|
|
|
CheckTask := CheckTaskT;
|
|
|
|
|
|
AllTaskNames := Arr('Arr0','Arr1','Arr2','Arr3','Arr4','Arr5',
|
|
|
|
|
|
'ArrErr1','ArrErr2','Arr1Sum','Arr2Prod','Arr1_If','Arr2_If','Arr0_Count','Arr1_Sum','Arr2_Count',
|
|
|
|
|
|
'Arr1_MinMax','Arr2_MinMax','Arr3_MinMax',
|
|
|
|
|
|
'ПоискВМассиве','ПоискВМассивеСтрок',
|
|
|
|
|
|
'Заполнение1','Заполнение2Арифм','Заполнение3Арифм','Заполнение4Арифм','Заполнение1Геом','ЗаполнениеЧисламиФибоначчи',
|
|
|
|
|
|
'СоседниеЭлементы1','СоседниеЭлементы2',
|
|
|
|
|
|
'ИнвертированиеМассива1','ИнвертированиеМассива2',
|
|
|
|
|
|
'СтрокаКакМассив1','СтрокаКакМассив2','СтрокаКакМассив3','СтрокаКакМассив4','СтрокаКакМассив5' );
|
|
|
|
|
|
finalization
|
|
|
|
|
|
end.
|