unit TasksStr; uses LightPT; var AllTaskNames: array of string; procedure CheckTaskT(name: string); begin FlattenOutput; ClearOutputListFromSpaces; case name of 'Char1': begin CheckData(Input := Empty); var a := Arr(word(48), word(100), word(68), word(1102), word(8594)); CheckOutputSeq(a); end; 'Char2': begin CheckData(Input := Empty); var a := Arr(Chr(169), Chr(931), Chr(960), Chr(1105), Chr(8551), Chr(8734), Chr(8776), Chr(8986), Chr(9327), Chr(9775), Chr(9917), Chr(10054)); CheckOutputSeq(a); end; 'CharTable': begin CheckData(Input := Empty); var obj := new ObjectList; for var i:=32 to 1200 do begin Obj.Add(i); obj.Add(Chr(i)); end; CheckOutputSeq(obj); end; 'CharPredSucc': begin CheckData(Input := |cChar|); GenerateTests('b','c','2','y'); var c := LightPT.Chr(0); CheckOutput(Pred(c),Succ(c)); end; 'CharIs': begin CheckData(Input := |cChar|); GenerateTests('b','X','2','ю'); var c := LightPT.Chr(0); CheckOutputSeq(Arr(c.IsLetter, c.IsDigit, c.IsLower, c.IsUpper)); end; 'CharRange1': begin CheckData(Input := Empty); CheckOutputSeq(Arr('0'..'9')+Arr('a'..'z')+Arr('а'..'я')); end; 'CharRange2': begin CheckData(Input := |cChar|); GenerateTests('a','V','z','Ю','д','1'); var c := LightPT.Chr(0); CheckOutput(c in 'a'..'z'); end; 'CharRange3': begin CheckData(Input := |cChar|); GenerateTests('a','V','ю','A','1','Z'); var c := LightPT.Chr(0); CheckOutput(c in 'A'..'Z'); end; 'CharRange4': begin CheckData(Input := |cChar|); GenerateTests('a','V','z','A','1','Ю'); var c := LightPT.Chr(0); CheckOutput(c.ToLower in 'a'..'z'); end; 'CharTransform': begin CheckData(Input := |cChar|); var c := LightPT.Chr(0); GenerateTests('a','V','z','A','1','Ю'); if c.IsLower then c := c.ToUpper else if c.IsUpper then c := c.ToLower; CheckOutput(c); end; 'Strings1': begin CheckData(Input := Empty); CheckOutputSeq('трос'.ToCharArray); end; 'Strings2': begin CheckData(Input := Empty); CheckOutputSeq('сорт'.ToCharArray); end; 'Strings2a': begin CheckData(Input := Empty); CheckOutputSeq(Arr('грозы','осы','ложки','кошки')); end; 'Strings3': begin CheckData(Input := Empty); CheckOutputSeq(Arr('миг', 'мир', 'пир', 'пар')); end; 'Strings4': begin CheckData(Input := Empty); var hs := HSet('кошка','мышка','комик','комок','ножка','ножик','коржик','камыш'); var hs1 := OutputListAsStrings.ToHashSet; if (hs*hs1).Count >= 5 then TaskResult := Solved else begin TaskResult := PartialSolution; ColoredMessage($'Выведите еще по крайней мере {5-(hs*hs1).Count} правильных слов',MessageColorT.MsgColorGray) end; end; 'Strings5': begin CheckData(Input := Empty); CheckOutputSeq(Arr('********************', '010101010101010101010101010101')); end; 'Strings6': begin CheckData(Input := Empty); CheckOutputSeq(Arr('кросс', 'атолл', 'Гримм', 'быстрее')); end; 'String13': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutput(9); end; 'String15': begin ClearOutputListFromSpaces; CheckData(Input := |cStr|); var s := Str(0); CheckOutput(s.Count(c -> c.IsLetter and c.IsLower)); end; 'String16': begin ClearOutputListFromSpaces; CheckData(Input := |cStr|); GenerateTests('HeLLo','привет','ИНФОРМАТИКА'); var s := Str(0); CheckOutput(s.ToLower); end; 'StrCode': begin CheckData(Input := Empty); CheckOutputSeq(Arr('рсйгжу', 'сткдзф', 'тулеих')); end; 'StrDeCode': begin CheckData(Input := Empty); CheckOutput('мы великие взломщики шифров'); end; 'StrCountAlg': begin CheckData(Input := Empty); CheckOutputSeq(Arr(3,5,2)); end; 'StrGenerate1': begin CheckData(Input := Empty); CheckOutput('abcdefghijklmnopqrstuvwxyz'); end; 'StrGenerate2': begin CheckData(Input := Empty); CheckOutput('каждый охотник желает знать где сидит фазан'); end; 'StrCount': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutput(14,15); end; 'StrCountOf': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutput(3,5,2); end; 'StrCreate1': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutput('abcdefghijklmnopqrstuvwxyz'); end; 'StrCreate2': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutput('каждый охотник желает знать где сидит фазан'); end; 'StrWhere1': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutputSeq(Arr('каждый охотник желает знать где сидит фазан','буря мглою небо кроет вихри снежные крутя')); end; 'StrWhere2': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutputSeq(Arr('1223113221113','12112571191460')); end; 'StrSelect1': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutputSeq(Arr('вфсѐ!ндмпя!ожвп!лспжу!гйцсй!тожзоьж!лсфуѐ')); end; 'StrSelect2': begin ClearOutputListFromSpaces; CheckData(Input := Empty); var a := Arr(1082,1072,1078,1076,1099,1081,32,1086,1093,1086,1090,1085,1080,1082,32,1078,1077,1083,1072,1077,1090,32,1079,1085,1072,1090,1100,32,1075,1076,1077,32,1089,1080,1076,1080,1090,32,1092,1072,1079,1072,1085 ); var a1 := a.Select(x->word(x)); CheckOutputSeq(a1); end; 'StrMinMax': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutputSeq(Arr('а','ё')); end; 'StrWhereSelect': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutput(23); end; 'StrAllAny1': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutput(True,False); end; 'StrAllAny2': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutput(True,False); end; 'StrEachCount1': begin ClearOutputListFromSpaces; CheckData(Input := Empty); var res := 'The grass is always greener on the other side of the fence'.EachCount; var ob := new ObjectList; foreach var x in res.ToArray do ob.Add(x); CheckOutputSeq(ob); end; 'StrEachCount2': begin ClearOutputListFromSpaces; CheckData(Input := Empty); var res := 'L1o24st tim437364e is nev567e9r fo089874u89nd041342 ag8432ai6897'.EachCount; var ob := new ObjectList; foreach var x in res.ToArray do if x.Key.IsDigit then ob.Add(x); CheckOutputSeq(ob); end; 'StrOrder1': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutput(' adefgilmnorstuv'); end; 'StrOrder2': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutput('0','1','3','5','8'); end; 'ToWords1': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutput('головой жак звонарь как однажды сломал фонарь'); end; 'ToWords2': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutput('как жак сломал фонарь однажды звонарь головой'); end; 'ToWordsWhere1': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutput('косой кривоногий косой косой косой косой'); end; 'Pos1': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutputSeq(Arr(2,9)); end; 'Pos2': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutputSeq(Arr(7)); end; 'Delete1': begin CheckData(Input := Empty); CheckOutput('информатика'); end; 'Delete2': begin CheckData(Input := Empty); CheckOutput('программирование'); end; 'Delete3': begin CheckData(Input := Empty); CheckOutput('алгоритм'); end; 'Insert1': begin CheckData(Input := Empty); CheckOutput('Петр Первый был первым русским императором'); end; 'Insert2': begin CheckData(Input := Empty); CheckOutput('Петр первый был великим русским императором'); end; 'StrChange1': begin CheckData(Input := Empty); CheckOutput('красный коричневый желтый зеленый бирюзовый синий фиолетовый'); end; 'StrChange2': begin CheckData(Input := Empty); CheckOutput('Алекс у Мелиссы украл кораллы, а Мелисса у Алекса украла кларнет'); end; 'StrBorder0': begin CheckData(Input := Empty); CheckOutput('наклонный жирный подчеркнутый жирный жирный подчеркнутый'); end; 'StrBorder1': begin CheckData(Input := Empty); CheckOutput('наклонный жирный подчеркнутый жирный жирный подчеркнутый'); end; 'StrSlice1': begin CheckData(Input := Empty); CheckOutputSeq(Arr('Pascal','ABC','NET')); end; 'StrSlice2': begin CheckData(Input := Empty); CheckOutputSeq(Arr('клад зарыт на юго западе', 'клад зарыт на юго западе')); end; 'StrSlice4': begin CheckData(Input := Empty); CheckOutputSeq(Arr('mydocument', 'docx', 'picture', 'jpg')); end; 'Str_Number0': begin CheckData(Input := Empty); CheckOutput('оценка1', 'балл2', 'окно3'); end; 'Str_Number03': begin CheckData(Input := Empty); ClearOutputListFromSpaces; CheckOutput(386); end; 'Str_Number04': begin ClearOutputListFromSpaces; CheckData(Input := |cInt|); GenerateTests(2,34,567,67890); var n := Int(0); CheckOutput(n.ToString.Select(s->s.ToDigit).Sum); end; 'Str_Number05': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutput(31.6666666666667,27.0,42.0); end; 'Str_Number06': begin ClearOutputListFromSpaces; CheckData(Input := Empty); CheckOutput(420); end; end; end; initialization CheckTask := CheckTaskT; AllTaskNames := Arr('Char1','Char2','CharTable','CharPredSucc','CharIs', 'CharRange1','CharRange2','CharRange3','CharRange4','CharTransform', 'Strings1','Strings2','Strings2a','Strings3','Strings4','Strings5','Strings6','String13','String15','String16', 'StrCode','StrDeCode','StrCountAlg','StrGenerate1','StrGenerate2','StrCount','StrCountOf', 'StrCreate1','StrCreate2','StrWhere1','StrWhere2','StrSelect1','StrSelect2', 'StrMinMax','StrWhereSelect','StrAllAny1','StrAllAny2','StrEachCount1','StrEachCount2', 'StrOrder1','StrOrder2','ToWords1','ToWords2','ToWordsWhere1', 'Pos1','Pos2','Delete1','Delete2','Delete3','Insert1','Insert2', 'StrChange1','StrChange2','StrBorder0','StrBorder1', 'StrSlice1','StrSlice2','StrSlice4', 'Str_Number0','Str_Number03','Str_Number04','Str_Number05','Str_Number06' ); finalization end.