March 13, 2023

Второй доклад 2023 по бесшумной проверке. Материалы

Функции для конструктора заданий. Пока без начального кода. Это нужно вносить в класс LT

Проверка ввода-вывода

CheckInput(массив типов)
CheckInputCount(n) - облегченная проверка
CheckInput2Count(i) - не меньше i
CheckInputTypes(a: array of System.Type);
CheckOutput(список значений)
CheckOutputSeq(последовательность значений базового типа)
CheckOutputSeq(a: ObjectList)
CheckOutputString(str: string); - при проверке вывода в виде строки

Формирование вывода для проверки - класс ObjectList

var ol := new ObjectList;
ol.Add(o)
ol.AddRange(sequence)
ol.AddFill(count,elem)
ol.AddArithm(n,a0,step)
ol.AddGeom(n,a0,step)
CheckOutputSeq(ol)

Фильтрация и преобразование вывода

FlattenOutput - когда выводится массив - преобразовать его в список значений
FilterOnlyNumbers;
FilterOnlyNumbersAndBools;
ClearOutputListFromSpaces;
ConvertStringsToNumbersInOutputList;

Низкоуровневые

CompareValues(o1, o2: Object)
CompareArrValues(a,lst: array of object)
CompareValuesWithOutput(params a: array of object) 
  - это чтобы не кидать исключение, а сделать что то еще
CompareTypeWithOutput(params a: array of System.Type) - редко

function ToObjArray(a: array of integer)
function ToObjArray(a: array of real)
function ToObjArray(a: array of string)
function ToObjArray(a: array of char)
function ToObjArray(a: array of boolean)

Считывание типизированного ввода-вывода в позиции i

function IsInt(i: integer) := InputList[i] is integer;
function IsRe(i: integer) := InputList[i] is real;
function IsStr(i: integer) := InputList[i] is string;
function IsBoo(i: integer) := InputList[i] is boolean;
function IsChr(i: integer) := InputList[i] is char;

function OutIsInt(i: integer) := OutputList[i] is integer;
function OutIsRe(i: integer) := OutputList[i] is real;
function OutIsStr(i: integer) := OutputList[i] is string;
function OutIsBoo(i: integer) := OutputList[i] is boolean;
function OutIsChr(i: integer) := OutputList[i] is char;

function Int(i: integer): integer; - это входные данные
function Re(i: integer): real;
function Str(i: integer): string;
function Boo(i: integer): boolean;
function Chr(i: integer): char;

function OutAsInt(i: integer): integer;
function OutAsRe(i: integer): real;
function OutAsBoo(i: integer): boolean;
function OutAsChr(i: integer): char;
function OutAsStr(i: integer): string;

Считывание следующего элемента (нескольких)

function Int: integer; - ввод
function Re: real;
function Str: string;
function Boo: boolean;
function Chr: char;
function Int2: (integer, integer)
function Re2: (real, real)
function IntArr(n: integer): array of integer
function ReArr(n: integer): array of real

Преобразование всего (части) ввода (вывода) в типизированный массив

function InputListAsIntegers: array of integer
function InputListAsReals: array of real
function InputListAsBooleans: array of boolean
function InputListAsChars: array of char
function InputListAsStrings: array of string

function InputListAsIntegers: array of integer
function InputListAsReals: array of real
function InputListAsBooleans: array of boolean
function InputListAsChars: array of char
function InputListAsStrings: array of string

function OutputListAsIntegers: array of integer
function OutputListAsReals: array of real
function OutputListAsBooleans: array of boolean
function OutputListAsChars: array of char
function OutputListAsStrings: array of string

function InputListSliceAsIntegers(a,b: integer): array of integer
function InputListSliceAsReals(a,b: integer): array of real
function InputListSliceAsBooleans(a,b: integer): array of boolean
function InputListSliceAsChars(a,b: integer): array of char;
function InputListSliceAsStrings(a,b: integer): array of string

function OutputListSliceAsIntegers(a,b: integer): array of integer 
function OutputListSliceAsReals(a,b: integer): array of real
function OutputListSliceAsBooleans(a,b: integer): array of boolean;
function OutputListSliceAsChars(a,b: integer): array of char;
function OutputListSliceAsStrings(a,b: integer): array of string