diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for array of T.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for array of T.html
index ca27e5434..557c57089 100644
--- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for array of T.html
+++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for array of T.html
@@ -50,9 +50,9 @@
function Indexes<T>(Self: array of T): sequence of integer;
diff --git a/PABCNetHelp/PABCSystemDocGen/PABC.pas b/PABCNetHelp/PABCSystemDocGen/PABC.pas
deleted file mode 100644
index a7755d6c2..000000000
--- a/PABCNetHelp/PABCSystemDocGen/PABC.pas
+++ /dev/null
@@ -1,3965 +0,0 @@
-
-// -----------------------------------------------------
-//>> Ñòàíäàðòíûå êîíñòàíòû # Standard constants
-// -----------------------------------------------------
-const
- /// Ìàêñèìàëüíîå çíà÷åíèå òèïà shortint
- MaxShortInt = shortint.MaxValue;
- /// Ìàêñèìàëüíîå çíà÷åíèå òèïà byte
- MaxByte = byte.MaxValue;
- /// Ìàêñèìàëüíîå çíà÷åíèå òèïà smallint
- MaxSmallInt = smallint.MaxValue;
- /// Ìàêñèìàëüíîå çíà÷åíèå òèïà word
- MaxWord = word.MaxValue;
- /// Ìàêñèìàëüíîå çíà÷åíèå òèïà longword
- MaxLongWord = longword.MaxValue;
- /// Ìàêñèìàëüíîå çíà÷åíèå òèïà int64
- MaxInt64 = int64.MaxValue;
- /// Ìàêñèìàëüíîå çíà÷åíèå òèïà uint64
- MaxUInt64 = uint64.MaxValue;
- /// Ìàêñèìàëüíîå çíà÷åíèå òèïà double
- MaxDouble = real.MaxValue;
- /// Ìèíèìàëüíîå ïîëîæèòåëüíîå çíà÷åíèå òèïà double
- MinDouble = real.Epsilon;
- /// Ìàêñèìàëüíîå çíà÷åíèå òèïà real
- MaxReal = real.MaxValue;
- /// Ìèíèìàëüíîå ïîëîæèòåëüíîå çíà÷åíèå òèïà real
- MinReal = real.Epsilon;
- /// Ìàêñèìàëüíîå çíà÷åíèå òèïà single
- MaxSingle = single.MaxValue;
- /// Ìèíèìàëüíîå ïîëîæèòåëüíîå çíà÷åíèå òèïà single
- MinSingle = single.Epsilon;
- /// Ìàêñèìàëüíîå çíà÷åíèå òèïà integer
- MaxInt = integer.MaxValue;
- /// Êîíñòàíòà Pi
- /// !! Pi constant
- Pi = 3.141592653589793;
- /// Êîíñòàíòà E
- /// !! E constant
- E = 2.718281828459045;
- /// Êîíñòàíòà ïåðåõîäà íà íîâóþ ñòðîêó
- /// !! The newline string defined for this environment.
- NewLine = System.Environment.NewLine;
-// -----------------------------------------------------
-//>> Ñòàíäàðòíûå òèïû # Standard types
-// -----------------------------------------------------
-type
- /// Áàçîâûé òèï îáúåêòîâ
- Object = System.Object;
-
- /// Áàçîâûé òèï èñêëþ÷åíèé
- Exception = System.Exception;
-
- /// double = real
- double = System.Double;
-
- /// longint = integer
- longint = System.Int32;
-
- /// cardinal = longword
- cardinal = System.UInt32;
-
- /// Ïðåäñòàâëÿåò 128-áèòíîå âåùåñòâåííîå ÷èñëî
- /// !! Represents a decimal number
- decimal = System.Decimal;
-
- /// Ïðåäñòàâëÿåò ïðîèçâîëüíî áîëüøîå öåëîå ÷èñëî
- BigInteger = System.Numerics.BigInteger;
-
- /// Ïðåäñòàâëÿåò äàòó è âðåìÿ
- DateTime = System.DateTime;
-
- /// Ïðåäñòàâëÿåò êîìïëåêñíîå ÷èñëî
- Complex = System.Numerics.Complex;
-
- /// Ïðåäñòàâëÿåò êîðòåæ
- Tuple = System.Tuple;
-
- /// Ïðåäñòàâëÿåò ñïèñîê íà áàçå äèíàìè÷åñêîãî ìàññèâà
- List = System.Collections.Generic.List;
-
- /// Ïðåäñòàâëÿåò áàçîâûé êëàññ äëÿ ðåàëèçàöèè èíòåðôåéñà IComparer
- Comparer = System.Collections.Generic.Comparer;
-
- /// Ïðåäñòàâëÿåò áàçîâûé êëàññ äëÿ ðåàëèçàöèè èíòåðôåéñà IComparer
- IComparable = System.IComparable;
-
- /// Ïðåäñòàâëÿåò ìíîæåñòâî çíà÷åíèé, ðåàëèçîâàííîå íà áàçå õåø-òàáëèöû
- HashSet = System.Collections.Generic.HashSet;
-
- /// Ïðåäñòàâëÿåò ìíîæåñòâî çíà÷åíèé, ðåàëèçîâàííîå íà áàçå áèíàðíîãî äåðåâà ïîèñêà
- SortedSet = System.Collections.Generic.SortedSet;
-
- /// Ïðåäñòàâëÿåò àññîöèàòèâíûé ìàññèâ (íàáîð ïàð Êëþ÷-Çíà÷åíèå), ðåàëèçîâàííûé íà áàçå õåø-òàáëèöû
- Dictionary = System.Collections.Generic.Dictionary;
-
- /// Ïðåäñòàâëÿåò àññîöèàòèâíûé ìàññèâ, ðåàëèçîâàííûé íà áàçå áèíàðíîãî äåðåâà ïîèñêà
- SortedDictionary = System.Collections.Generic.SortedDictionary;
-
- /// Ïðåäñòàâëÿåò àññîöèàòèâíûé ìàññèâ (íàáîð ïàð êëþ÷-çíà÷åíèå), ðåàëèçîâàííûé íà áàçå äèíàìè÷åñêîãî ìàññèâà ïàð
- SortedList = System.Collections.Generic.SortedList;
-
- /// Ïðåäñòàâëÿåò ïàðó Êëþ÷-Çíà÷åíèå äëÿ àññîöèàòèâíîãî ìàññèâà
- KeyValuePair = System.Collections.Generic.KeyValuePair;
-
- /// Ïðåäñòàâëÿåò äâóñâÿçíûé ñïèñîê
- LinkedList = System.Collections.Generic.LinkedList;
-
- /// Ïðåäñòàâëÿåò óçåë äâóñâÿçíîãî ñïèñêà
- LinkedListNode = System.Collections.Generic.LinkedListNode;
-
- /// Ïðåäñòàâëÿåò î÷åðåäü - íàáîð ýëåìåíòîâ, ðåàëèçîâàííûõ ïî ïðèíöèïó "ïåðâûé âîøåë-ïåðâûé âûøåë"
- Queue = System.Collections.Generic.Queue;
-
- /// Ïðåäñòàâëÿåò ñòåê - íàáîð ýëåìåíòîâ, ðåàëèçîâàííûõ ïî ïðèíöèïó "ïîñëåäíèé âîøåë-ïåðâûé âûøåë"
- Stack = System.Collections.Generic.Stack;
-
- /// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ êîëëåêöèè
- ICollection = System.Collections.Generic.ICollection;
-
- /// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ñðàâíåíèÿ äâóõ ýëåìåíòîâ
- IComparer = System.Collections.Generic.IComparer;
-
- /// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ íàáîðà ïàð Êëþ÷-Çíà÷åíèå
- IDictionary = System.Collections.Generic.IDictionary;
-
- /// Ïðåäñòàâëÿåò èíòåðôåéñ, ïðåäîñòàâëÿþùèé ïåðå÷èñëèòåëü äëÿ ïåðåáîðà ýëåìåíòîâ êîëëåêöèè
- IEnumerable = System.Collections.Generic.IEnumerable;
-
- /// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ïåðåáîðà ýëåìåíòîâ êîëëåêöèè
- IEnumerator = System.Collections.Generic.IEnumerator;
-
- /// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ïîääåðæêè ñðàâíåíèÿ íà ðàâåíñòâî
- IEqualityComparer = System.Collections.Generic.IEqualityComparer;
-
- /// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ êîëëåêöèè ñ äîñòóïîì ïî èíäåêñó
- IList = System.Collections.Generic.IList;
-
- /// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ìíîæåñòâà
- ISet = System.Collections.Generic.ISet;
-
- /// Ïðåäñòàâëÿåò èçìåíÿåìóþ ñòðîêó ñèìâîëîâ
- StringBuilder = System.Text.StringBuilder;
-
- /// Òèï êîäèðîâêè ñèìâîëîâ
- Encoding = System.Text.Encoding;
-
- /// Ïðåäñòàâëÿåò äåéñòâèå áåç ïàðàìåòðîâ
- Action0 = System.Action;
-
- /// Ïðåäñòàâëÿåò äåéñòâèå ñ îäíèì ïàðàìåòðîì
- Action = System.Action;
-
- /// Ïðåäñòàâëÿåò äåéñòâèå ñ äâóìÿ ïàðàìåòðàìè
- Action2 = System.Action;
-
- /// Ïðåäñòàâëÿåò äåéñòâèå ñ òðåìÿ ïàðàìåòðàìè
- Action3 = System.Action;
-
- /// Ïðåäñòàâëÿåò ôóíêöèþ áåç ïàðàìåòðîâ
- Func0 = System.Func;
-
- /// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì
- Func = System.Func;
-
- /// Ïðåäñòàâëÿåò ôóíêöèþ ñ äâóìÿ ïàðàìåòðàìè
- Func2 = System.Func;
-
- /// Ïðåäñòàâëÿåò ôóíêöèþ ñ òðåìÿ ïàðàìåòðàìè
- Func3 = System.Func;
-
- /// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì öåëîãî òèïà, âîçâðàùàþùóþ öåëîå
- IntFunc = Func;
-
- /// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì âåùåñòâåííîãî òèïà, âîçâðàùàþùóþ âåùåñòâåííîå
- RealFunc = Func;
-
- /// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì ñòðîêîâîãî òèïà, âîçâðàùàþùóþ ñòðîêó
- StringFunc = Func;
-
- /// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì, âîçâðàùàþùóþ boolean
- Predicate = System.Predicate;
-
- /// Ïðåäñòàâëÿåò ôóíêöèþ ñ äâóìÿ ïàðàìåòðàìè, âîçâðàùàþùóþ boolean
- Predicate2 = function(x1: T1; x2: T2): boolean;
-
- /// Ïðåäñòàâëÿåò ôóíêöèþ ñ òðåìÿ ïàðàìåòðàìè, âîçâðàùàþùóþ boolean
- Predicate3 = function(x1: T1; x2: T2; x3: T3): boolean;
-
- /// Ïðåäñòàâëÿåò ðåãóëÿðíîå âûðàæåíèå
- Regex = System.Text.RegularExpressions.Regex;
-
- /// Ïðåäñòàâëÿåò ðåçóëüòàòû èç îòäåëüíîãî ñîâïàäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ
- Match = System.Text.RegularExpressions.Match;
-
- /// Ïðåäñòàâëÿåò ìåòîä, âûçûâàåìûé ïðè îáíàðóæåíèè ñîâïàäåíèÿ â Regex.Replace
- MatchEvaluator = System.Text.RegularExpressions.MatchEvaluator;
-
- /// Ïðåäñòàâëÿåò íàáîð óñïåøíûõ ñîâïàäåíèé ðåãóëÿðíîãî âûðàæåíèÿ
- MatchCollection = System.Text.RegularExpressions.MatchCollection;
-
- /// Ïðåäñòàâëÿåò ïàðàìåòðû ðåãóëÿðíîãî âûðàæåíèÿ
- RegexOptions = System.Text.RegularExpressions.RegexOptions;
-
- /// Ïðåäñòàâëÿåò ðåçóëüòàòû èç îäíîé ãðóïïû ïðè âûïîëíåíèè Regex.Match
- RegexGroup = System.Text.RegularExpressions.Group;
-
- /// Ïðåäñòàâëÿåò ðåçóëüòàòû èç íàáîðà ãðóïï ïðè âûïîëíåíèè Regex.Match
- RegexGroupCollection = System.Text.RegularExpressions.GroupCollection;
-
- /// Ïðåäñòàâëÿåò òèï êîðîòêîé ñòðîêè ôèêñèðîâàííîé äëèíû 255 ñèìâîëîâ
- ShortString = string[255];
-
-
-// -----------------------------------------------------
-//>> Ïîäïðîãðàììû ââîäà # Read subroutines
-// -----------------------------------------------------
-///- procedure Read(a,b,...);
-/// Ââîäèò çíà÷åíèÿ a,b,... ñ êëàâèàòóðû
-procedure Read;
-///--
-procedure Read(var x: integer);
-///--
-procedure Read(var x: real);
-///--
-procedure Read(var x: char);
-///--
-procedure Read(var x: string);
-///--
-procedure Read(var x: byte);
-///--
-procedure Read(var x: shortint);
-///--
-procedure Read(var x: smallint);
-///--
-procedure Read(var x: word);
-///--
-procedure Read(var x: longword);
-///--
-procedure Read(var x: int64);
-///--
-procedure Read(var x: uint64);
-///--
-procedure Read(var x: single);
-///--
-procedure Read(var x: boolean);
-///- procedure Readln(a,b,...);
-/// Ââîäèò çíà÷åíèÿ a,b,... ñ êëàâèàòóðû è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó
-procedure Readln;
-
-/// Ââîäèò ÷èñëîâîå çíà÷åíèå x êëàâèàòóðû. Âîçâðàùàåò False åñëè ïðè ââîäå ïðîèçîøëà îøèáêà
-function TryRead(var x: integer): boolean;
-///--
-function TryRead(var x: real): boolean;
-///--
-function TryRead(var x: byte): boolean;
-///--
-function TryRead(var x: shortint): boolean;
-///--
-function TryRead(var x: smallint): boolean;
-///--
-function TryRead(var x: word): boolean;
-///--
-function TryRead(var x: longword): boolean;
-///--
-function TryRead(var x: int64): boolean;
-///--
-function TryRead(var x: uint64): boolean;
-///--
-function TryRead(var x: single): boolean;
-
-/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû
-function ReadInteger: integer;
-/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû
-function ReadReal: real;
-/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû
-function ReadChar: char;
-/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû
-function ReadString: string;
-/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû
-function ReadBoolean: boolean;
-
-/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnInteger: integer;
-/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnReal: real;
-/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnChar: char;
-/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnString: string;
-/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnBoolean: boolean;
-
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû
-function ReadInteger2: (integer, integer);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû
-function ReadReal2: (real, real);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû
-function ReadChar2: (char, char);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû
-function ReadString2: (string, string);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnInteger2: (integer, integer);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnReal2: (real, real);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnChar2: (char, char);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnString2: (string, string);
-
-/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû
-function ReadInteger3: (integer, integer, integer);
-/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû
-function ReadReal3: (real, real, real);
-/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû
-function ReadChar3: (char, char, char);
-/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû
-function ReadString3: (string, string, string);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnInteger3: (integer, integer, integer);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnReal3: (real, real, real);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnChar3: (char, char, char);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnString3: (string, string, string);
-
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû
-function ReadInteger2(prompt: string): (integer, integer);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû
-function ReadReal2(prompt: string): (real, real);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû
-function ReadChar2(prompt: string): (char, char);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû
-function ReadString2(prompt: string): (string, string);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnInteger2(prompt: string): (integer, integer);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnReal2(prompt: string): (real, real);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnChar2(prompt: string): (char, char);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnString2(prompt: string): (string, string);
-
-/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû
-function ReadInteger3(prompt: string): (integer, integer, integer);
-/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû
-function ReadReal3(prompt: string): (real, real, real);
-/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû
-function ReadChar3(prompt: string): (char, char, char);
-/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû
-function ReadString3(prompt: string): (string, string, string);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnInteger3(prompt: string): (integer, integer, integer);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnReal3(prompt: string): (real, real, real);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnChar3(prompt: string): (char, char, char);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnString3(prompt: string): (string, string, string);
-
-
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû
-function ReadInteger(prompt: string): integer;
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû
-function ReadReal(prompt: string): real;
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû
-function ReadChar(prompt: string): char;
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû
-function ReadString(prompt: string): string;
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû
-function ReadBoolean(prompt: string): boolean;
-
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû,
-///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnInteger(prompt: string): integer;
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû,
-///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnReal(prompt: string): real;
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû,
-///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnChar(prompt: string): char;
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû,
-///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnString(prompt: string): string;
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû,
-///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà
-function ReadlnBoolean(prompt: string): boolean;
-
-
-///--
-procedure ReadShortString(var s: string; n: integer);
-///--
-procedure ReadShortStringFromFile(f: Text; var s: string; n: integer);
-
-///- procedure Read(f: ôàéë; a,b,...);
-/// Ââîäèò çíà÷åíèÿ a,b,... èç ôàéëà f
-procedure Read(f: Text);
-///--
-procedure Read(f: Text; var x: integer);
-///--
-procedure Read(f: Text; var x: real);
-///--
-procedure Read(f: Text; var x: char);
-///--
-procedure Read(f: Text; var x: string);
-///--
-procedure Read(f: Text; var x: byte);
-///--
-procedure Read(f: Text; var x: shortint);
-///--
-procedure Read(f: Text; var x: smallint);
-///--
-procedure Read(f: Text; var x: word);
-///--
-procedure Read(f: Text; var x: longword);
-///--
-procedure Read(f: Text; var x: int64);
-///--
-procedure Read(f: Text; var x: uint64);
-///--
-procedure Read(f: Text; var x: single);
-///--
-procedure Read(f: Text; var x: boolean);
-
-///- procedure Readln(f: Text; a,b,...);
-/// Ââîäèò çíà÷åíèÿ a,b,... èç òåêñòîâîãî ôàéëà f è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó
-procedure Readln(f: Text);
-///--
-procedure Readln(f: Text; var x: string);
-
-/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå èç òåêñòîâîãî ôàéëà f
-function ReadInteger(f: Text): integer;
-/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå èç òåêñòîâîãî ôàéëà f
-function ReadReal(f: Text): real;
-/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå èç òåêñòîâîãî ôàéëà f
-function ReadChar(f: Text): char;
-/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå èç òåêñòîâîãî ôàéëà f
-function ReadString(f: Text): string;
-/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå èç òåêñòîâîãî ôàéëà f
-function ReadBoolean(f: Text): boolean;
-
-/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå èç òåêñòîâîãî ôàéëà f,
-///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó
-function ReadlnInteger(f: Text): integer;
-/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå èç òåêñòîâîãî ôàéëà f,
-///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó
-function ReadlnReal(f: Text): real;
-/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå èç òåêñòîâîãî ôàéëà f,
-///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó
-function ReadlnChar(f: Text): char;
-/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå èç òåêñòîâîãî ôàéëà f,
-///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó
-function ReadlnString(f: Text): string;
-/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå èç òåêñòîâîãî ôàéëà f,
-///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó
-function ReadlnBoolean(f: Text): boolean;
-
-// -----------------------------------------------------
-//>> Ïîäïðîãðàììû âûâîäà # Write subroutines
-// -----------------------------------------------------
-///- procedure Write(a,b,...);
-/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí
-procedure Write;
-///--
-procedure Write(obj: object);
-///--
-procedure Write(obj1, obj2: object);
-///--
-procedure Write(params args: array of object);
-
-///- procedure Writeln(a,b,...);
-/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó
-///!!- Writeln(a,b,...)
-/// Writes a,b,... to standart output stream and appends newline
-procedure Writeln;
-///--
-procedure Writeln(obj: object);
-///--
-//procedure writeln(ptr: pointer);
-///--
-procedure Writeln(obj1, obj2: object);
-///--
-procedure Writeln(params args: array of object);
-
-///- procedure Write(f: ôàéë; a,b,...);
-/// Âûâîäèò çíà÷åíèÿ a,b,... â ôàéë f
-procedure Write(f: Text);
-///--
-procedure Write(f: Text; val: object);
-///--
-procedure Write(f: Text; params args: array of object);
-
-///- procedure Writeln(f: Text; a,b,...);
-/// Âûâîäèò çíà÷åíèÿ a,b,... â òåêñòîâûé ôàéë f è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó
-procedure Writeln(f: Text);
-///--
-procedure Writeln(f: Text; val: object);
-///--
-procedure Writeln(f: Text; params args: array of object);
-
-/// Âûâîäèò çíà÷åíèÿ args ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr
-procedure WriteFormat(formatstr: string; params args: array of object);
-/// Âûâîäèò çíà÷åíèÿ args ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó
-procedure WritelnFormat(formatstr: string; params args: array of object);
-/// Âûâîäèò çíà÷åíèÿ args â òåêñòîâûé ôàéë f ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr
-procedure WriteFormat(f: Text; formatstr: string; params args: array of object);
-/// Âûâîäèò çíà÷åíèÿ args â òåêñòîâûé ôàéë f ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr
-///è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó
-procedure WritelnFormat(f: Text; formatstr: string; params args: array of object);
-
-///- procedure Print(a,b,...);
-/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë
-procedure Print(s: string);
-///--
-procedure Print(params args: array of object);
-///- procedure Print(f: Text; a,b,...);
-/// Âûâîäèò çíà÷åíèÿ a,b,... â òåêñòîâûé ôàéë f, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë
-procedure Print(f: Text; params args: array of object);
-///- procedure Println(a,b,...);
-/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë è ïåðåõîäèò íà íîâóþ ñòðîêó
-procedure Println(params args: array of object);
-///- procedure Println(f: Text; a,b,...);
-/// Âûâîäèò çíà÷åíèÿ a,b,... â òåêñòîâûé ôàéë f, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë è ïåðåõîäèò íà íîâóþ ñòðîêó
-procedure Println(f: Text; params args: array of object);
-
-// -----------------------------------------------------
-//>> Îáùèå ïîäïðîãðàììû äëÿ ðàáîòû ñ ôàéëàìè # Common subroutines for files
-// -----------------------------------------------------
-///- procedure Assign(f: ôàéë; name: string);
-/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ ñ ôàéëîì íà äèñêå
-procedure Assign(f: AbstractBinaryFile; name: string);
-///- procedure AssignFile(f: ôàéë; name: string);
-/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ ñ ôàéëîì íà äèñêå
-procedure AssignFile(f: AbstractBinaryFile; name: string);
-///- procedure Close(f: ôàéë);
-/// Çàêðûâàåò ôàéë
-procedure Close(f: AbstractBinaryFile);
-///- procedure CloseFile(f: ôàéë);
-/// Çàêðûâàåò ôàéë
-procedure CloseFile(f: AbstractBinaryFile);
-///- function Eof(f: ôàéë): boolean;
-/// Âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ôàéëà
-function Eof(f: AbstractBinaryFile): boolean;
-///- procedure Erase(f: ôàéë);
-/// Óäàëÿåò ôàéë, ñâÿçàííûé ñ ôàéëîâîé ïåðåìåííîé
-procedure Erase(f: AbstractBinaryFile);
-///- procedure Rename(f: ôàéë; newname: string);
-/// Ïåðåèìåíîâûâàåò ôàéë, ñâÿçàíûé ñ ôàéëîâîé ïåðåìåííîé, äàâàÿ åìó èìÿ newname.
-procedure Rename(f: AbstractBinaryFile; newname: string);
-
-// -----------------------------------------------------
-//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ òåêñòîâûìè ôàéëàìè # Subroutines for text files
-// -----------------------------------------------------
-///--
-procedure Assign(f: Text; name: string);
-///--
-procedure AssignFile(f: Text; name: string);
-///--
-procedure Close(f: Text);
-///--
-procedure CloseFile(f: Text);
-/// Îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â êîäèðîâêå Windows
-procedure Reset(f: Text);
-/// Îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â óêàçàííîé êîäèðîâêå
-procedure Reset(f: Text; en: Encoding);
-/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â êîäèðîâêå Windows
-procedure Reset(f: Text; name: string);
-/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â óêàçàííîé êîäèðîâêå
-procedure Reset(f: Text; name: string; en: Encoding);
-/// Îòêðûâàåò òåêñòîâûé ôàéë íà çàïèñü â êîäèðîâêå Windows.
-///Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé
-procedure Rewrite(f: Text);
-/// Îòêðûâàåò òåêñòîâûé ôàéë íà çàïèñü â óêàçàííîé êîäèðîâêå.
-///Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé
-procedure Rewrite(f: Text; en: Encoding);
-/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë f íà çàïèñü â êîäèðîâêå Windows.
-///Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé
-procedure Rewrite(f: Text; name: string);
-/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë f íà çàïèñü â óêàçàííîé êîäèðîâêå.
-///Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé
-procedure Rewrite(f: Text; name: string; en: Encoding);
-/// Îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â êîäèðîâêå Windows
-procedure Append(f: Text);
-/// Îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â óêàçàííîé êîäèðîâêå
-procedure Append(f: Text; en: Encoding);
-/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â êîäèðîâêå Windows
-procedure Append(f: Text; name: string);
-/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â óêàçàííîé êîäèðîâêå
-procedure Append(f: Text; name: string; en: Encoding);
-/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà ÷òåíèå â êîäèðîâêå Windows
-function OpenRead(fname: string): Text;
-/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà ÷òåíèå â óêàçàííîé êîäèðîâêå
-function OpenRead(fname: string; en: Encoding): Text;
-/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà çàïèñü â êîäèðîâêå Windows
-function OpenWrite(fname: string): Text;
-/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà çàïèñü â óêàçàííîé êîäèðîâêå
-function OpenWrite(fname: string; en: Encoding): Text;
-/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà äîïîëíåíèå â êîäèðîâêå Windows
-function OpenAppend(fname: string): Text;
-/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà äîïîëíåíèå â óêàçàííîé êîäèðîâêå
-function OpenAppend(fname: string; en: Encoding): Text;
-
-///--
-function Eof(f: Text): boolean;
-/// Âîçâðàùàåò True, åñëè â ôàéëå äîñòèãíóò êîíåö ñòðîêè
-function Eoln(f: Text): boolean;
-/// Ïðîïóñêàåò ïðîáåëüíûå ñèìâîëû, ïîñëå ÷åãî âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ôàéëà
-function SeekEof(f: Text): boolean;
-/// Ïðîïóñêàåò ïðîáåëüíûå ñèìâîëû, ïîñëå ÷åãî âîçâðàùàåò True, åñëè â ôàéëå äîñòèãíóò êîíåö ñòðîêè
-function SeekEoln(f: Text): boolean;
-/// Çàïèñûâàåò ñîäåðæèìîå áóôåðà ôàéëà íà äèñê
-procedure Flush(f: Text);
-///--
-procedure Erase(f: Text);
-///--
-procedure Rename(f: Text; newname: string);
-///--
-procedure TextFileInit(var f: Text);
-
-/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â êîäèðîâêå Windows è çàêðûâàåò ôàéë.  êàæäûé ìîìåíò â ïàìÿòè õðàíèòñÿ òîëüêî òåêóùàÿ ñòðîêà
-function ReadLines(path: string): sequence of string;
-/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â óêàçàíîé êîäèðîâêå è çàêðûâàåò ôàéë.  êàæäûé ìîìåíò â ïàìÿòè õðàíèòñÿ òîëüêî òåêóùàÿ ñòðîêà
-function ReadLines(path: string; en: Encoding): sequence of string;
-/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â êîäèðîâêå Windows â âèäå ìàññèâà ñòðîê, ïîñëå ÷åãî çàêðûâàåò ôàéë
-function ReadAllLines(path: string): array of string;
-/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â óêàçàíîé êîäèðîâêå â âèäå ìàññèâà ñòðîê, ïîñëå ÷åãî çàêðûâàåò ôàéë
-function ReadAllLines(path: string; en: Encoding): array of string;
-/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò åãî ñîäåðæèìîå â êîäèðîâêå Windows â âèäå ñòðîêè, ïîñëå ÷åãî çàêðûâàåò ôàéë
-function ReadAllText(path: string): string;
-/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò åãî ñîäåðæèìîå â óêàçàíîé êîäèðîâêå â âèäå ñòðîêè, ïîñëå ÷åãî çàêðûâàåò ôàéë
-function ReadAllText(path: string; en: Encoding): string;
-/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ïîñëåäîâàòåëüíîñòè â êîäèðîâêå Windows, ïîñëå ÷åãî çàêðûâàåò ôàéë
-procedure WriteLines(path: string; ss: sequence of string);
-/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ïîñëåäîâàòåëüíîñòè â óêàçàííîé êîäèðîâêå, ïîñëå ÷åãî çàêðûâàåò ôàéë
-procedure WriteLines(path: string; ss: sequence of string; en: Encoding);
-/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ìàññèâà â êîäèðîâêå Windows, ïîñëå ÷åãî çàêðûâàåò ôàéë
-procedure WriteAllLines(path: string; ss: array of string);
-/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ìàññèâà â óêàçàííîé êîäèðîâêå, ïîñëå ÷åãî çàêðûâàåò ôàéë
-procedure WriteAllLines(path: string; ss: array of string; en: Encoding);
-/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêó â êîäèðîâêå Windows, ïîñëå ÷åãî çàêðûâàåò ôàéë
-procedure WriteAllText(path: string; s: string);
-/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêó â óêàçàííîé êîäèðîâêå, ïîñëå ÷åãî çàêðûâàåò ôàéë
-procedure WriteAllText(path: string; s: string; en: Encoding);
-
-// -----------------------------------------------------
-//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ äâîè÷íûìè ôàéëàìè # Subroutines for binary files
-// -----------------------------------------------------
-///- procedure Reset(f: äâîè÷íûé ôàéë);
-/// Îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü.
-///Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file
-procedure Reset(f: AbstractBinaryFile);
-///- procedure Reset(f: äâîè÷íûé ôàéë; name: string);
-/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ ôàéëîì name íà äèñêå è îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü.
-///Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file
-procedure Reset(f: AbstractBinaryFile; name: string);
-///- procedure Rewrite(f: äâîè÷íûé ôàéë);
-/// Îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü, ïðè ýòîì îáíóëÿÿ åãî ñîäåðæèìîå. Åñëè ôàéë ñóùåñòâîâàë, îí îáíóëÿåòñÿ.
-///Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file
-procedure Rewrite(f: AbstractBinaryFile);
-///- procedure Rewrite(f: äâîè÷íûé ôàéë; name: string);
-/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ ôàéëîì name íà äèñêå è îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü, ïðè ýòîì îáíóëÿÿ åãî ñîäåðæèìîå.
-///Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file
-procedure Rewrite(f: AbstractBinaryFile; name: string);
-///- procedure Truncate(f: äâîè÷íûé ôàéë);
-/// Óñåêàåò äâîè÷íûé ôàéë, îòáðàñûâàÿ âñå ýëåìåíòû ñ ïîçèöèè ôàéëîâîãî óêàçàòåëÿ.
-///Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file
-procedure Truncate(f: AbstractBinaryFile);
-
-///--
-procedure Write(f: AbstractBinaryFile; params vals: array of object);
-///--
-procedure Writeln(f: AbstractBinaryFile);
-///--
-procedure Writeln(f: AbstractBinaryFile; val: object);
-///--
-procedure Writeln(f: AbstractBinaryFile; params vals: array of object);
-
-///- function FilePos(f: äâîè÷íûé ôàéë): int64;
-/// Âîçâðàùàåò òåêóùóþ ïîçèöèþ ôàéëîâîãî óêàçàòåëÿ â äâîè÷íîì ôàéëå
-function FilePos(f: TypedFile): int64;
-///- function FileSize(f: äâîè÷íûé ôàéë): int64;
-/// Âîçâðàùàåò êîëè÷åñòâî ýëåìåíòîâ â äâîè÷íîì ôàéëå
-function FileSize(f: TypedFile): int64;
-///- procedure Seek(f: äâîè÷íûé ôàéë; n: int64);
-/// Óñòàíàâëèâàåò òåêóùóþ ïîçèöèþ ôàéëîâîãî óêàçàòåëÿ â äâîè÷íîì ôàéëå íà ýëåìåíò ñ äàííûì íîìåðîì
-procedure Seek(f: TypedFile; n: int64);
-///--
-procedure TypedFileInit(var f: TypedFile; ElementType: System.Type);
-///--
-procedure TypedFileInit(var f: TypedFile; ElementType: System.Type; off: integer; params offs: array of integer);
-///--
-procedure TypedFileInitWithShortString(var f: TypedFile; ElementType: System.Type; off: integer; params offs: array of integer);
-///--
-function TypedFileRead(f: TypedFile): object;
-
-///--
-function FilePos(f: BinaryFile): int64;
-///--
-function FileSize(f: BinaryFile): int64;
-///--
-procedure Seek(f: BinaryFile; n: int64);
-///--
-procedure BinaryFileInit(var f: BinaryFile);
-///--
-function BinaryFileRead(var f: BinaryFile; ElementType: System.Type): object;
-
-// -----------------------------------------------------
-//>> Cèñòåìíûå ïîäïðîãðàììû # System subroutines
-// -----------------------------------------------------
-/// Âîçâðàùàåò âåðñèþ PascalABC.NET
-function PascalABCVersion: string;
-/// Âîçâðàùàåò êîëè÷åñòâî ïàðàìåòðîâ êîìàíäíîé ñòðîêè
-function ParamCount: integer;
-/// Âîçâðàùàåò i-òûé ïàðàìåòð êîìàíäíîé ñòðîêè
-function ParamStr(i: integer): string;
-/// Âîçâðàùàåò òåêóùèé êàòàëîã
-function GetDir: string;
-/// Ìåíÿåò òåêóùèé êàòàëîã
-procedure ChDir(s: string);
-/// Ñîçäàåò êàòàëîã
-procedure MkDir(s: string);
-/// Óäàëÿåò êàòàëîã
-procedure RmDir(s: string);
-
-/// Ñîçäàåò êàòàëîã. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî ñîçäàí
-function CreateDir(s: string): boolean;
-/// Óäàëÿåò ôàéë. Åñëè ôàéë íå ìîæåò áûòü óäàëåí, òî âîçâðàùàåò False
-function DeleteFile(s: string): boolean;
-/// Âîçâðàùàåò òåêóùèé êàòàëîã
-function GetCurrentDir: string;
-/// Óäàëÿåò êàòàëîã. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî óäàëåí
-function RemoveDir(s: string): boolean;
-/// Ïåðåèìåíîâûâàåò ôàéë name, äàâàÿ åìó íîâîå èìÿ newname. Âîçâðàùàåò True, åñëè ôàéë óñïåøíî ïåðåèìåíîâàí
-function RenameFile(name, newname: string): boolean;
-/// Óñòàíàâëèâàåò òåêóùèé êàòàëîã. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî óäàëåí
-function SetCurrentDir(s: string): boolean;
-
-/// Èçìåíÿåò ðàñøèðåíèå ôàéëà ñ èìåíåì name íà newext
-function ChangeFileNameExtension(name, newext: string): string;
-/// Âîçâðàùàåò True, åñëè ôàéë ñ èìåíåì name ñóùåñòâóåò
-function FileExists(name: string): boolean;
-
-/// Âûâîäèò â ñïåöèàëüíîì îêíå ñòåê âûçîâîâ ïîäïðîãðàìì åñëè óñëîâèå íå âûïîëíÿåòñÿ
-procedure Assert(cond: boolean; sourceFile: string := ''; line: integer := 0);
-/// Âûâîäèò â ñïåöèàëüíîì îêíå äèàãíîñòè÷åñêîå ñîîáùåíèå è ñòåê âûçîâîâ ïîäïðîãðàìì åñëè óñëîâèå íå âûïîëíÿåòñÿ
-procedure Assert(cond: boolean; message: string; sourceFile: string := ''; line: integer := 0);
-
-/// Âîçâðàùàåò ñâîáîäíîå ìåñòî â áàéòàõ íà äèñêå ñ èìåíåì diskname
-function DiskFree(diskname: string): int64;
-/// Âîçâðàùàåò ðàçìåð â áàéòàõ íà äèñêå ñ èìåíåì diskname
-function DiskSize(diskname: string): int64;
-/// Âîçâðàùàåò ñâîáîäíîå ìåñòî â áàéòàõ íà äèñêå disk. disk=0 - òåêóùèé äèñê, disk=1 - äèñê A: , disk=2 - äèñê B: è ò.ä.
-function DiskFree(disk: integer): int64;
-/// Âîçâðàùàåò ðàçìåð â áàéòàõ íà äèñêå disk. disk=0 - òåêóùèé äèñê, disk=1 - äèñê A: , disk=2 - äèñê B: è ò.ä.
-function DiskSize(disk: integer): int64;
-/// Âîçâðàùàåò êîëè÷åñòâî ìèëëèñåêóíä ñ ìîìåíòà íà÷àëà ðàáîòû ïðîãðàììû
-function Milliseconds: integer;
-/// Âîçâðàùàåò êîëè÷åñòâî ìèëëèñåêóíä ñ ìîìåíòà ïîñëåäíåãî âûçîâà Milliseconds èëè MillisecondsDelta
-function MillisecondsDelta: integer;
-
-/// Çàâåðøàåò ðàáîòó ïðîãðàììû
-procedure Halt;
-/// Çàâåðøàåò ðàáîòó ïðîãðàììû, âîçâðàùàÿ êîä îøèáêè exitCode
-procedure Halt(exitCode: integer);
-
-/// Äåëàåò ïàóçó íà ms ìèëëèñåêóíä
-procedure Sleep(ms: integer);
-/// Âîçâàùàåò èìÿ çàïóùåííîãî .exe-ôàéëà
-function GetEXEFileName: string;
-/// Ïðåîáðàçóåò óêàçàòåëü ê ñòðîêîâîìó ïðåäñòàâëåíèþ
-function PointerToString(p: pointer): string;
-
-/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename
-procedure Exec(filename: string);
-/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename è ïàðàìåòðàìè êîìàíäíîé ñòðîêè args
-procedure Exec(filename: string; args: string);
-/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename
-procedure Execute(filename: string);
-/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename è ïàðàìåòðàìè êîìàíäíîé ñòðîêè args
-procedure Execute(filename: string; args: string);
-
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí ôàéëîâ ïî çàäàííîìó ïóòè, ñîîòâåòñòâóþùèõ øàáëîíó ïîèñêà
-function EnumerateFiles(path: string; searchPattern: string := '*.*'): sequence of string;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí ôàéëîâ ïî çàäàííîìó ïóòè, ñîîòâåòñòâóþùèõ øàáëîíó ïîèñêà, âêëþ÷àÿ ïîäêàòàëîãè
-function EnumerateAllFiles(path: string; searchPattern: string := '*.*'): sequence of string;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí êàòàëîãîâ ïî çàäàííîìó ïóòè
-function EnumerateDirectories(path: string): sequence of string;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí êàòàëîãîâ ïî çàäàííîìó ïóòè, âêëþ÷àÿ ïîäêàòàëîãè
-function EnumerateAllDirectories(path: string): sequence of string;
-
-///-procedure New(var p: ^T);
-/// Âûäåëÿåò äèíàìè÷åñêóþ ïàìÿòü ðàçìåðà sizeof(T) è âîçâðàùàåò â ïåðåìåííîé p óêàçàòåëü íà íåå. Òèï T äîëæåí áûòü ðàçìåðíûì
-//procedure New(var p: ^T);
-
-///-procedure Dispose(var p: ^T);
-/// Îñâîáîæäàåò äèíàìè÷åñêóþ ïàìÿòü, íà êîòîðóþ óêàçûâàåò p
-//procedure Dispose(var p: ^T);
-
-
-// -----------------------------------------------------
-//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ èìåíàìè ôàéëîâ # Functions for file names
-// -----------------------------------------------------
-/// Âûäåëÿåò èìÿ ôàéëà èç ïîëíîãî èìåíè ôàéëà fname
-function ExtractFileName(fname: string): string;
-/// Âûäåëÿåò ðàñøèðåíèå èç ïîëíîãî èìåíè ôàéëà fname
-function ExtractFileExt(fname: string): string;
-/// Âûäåëÿåò ïóòü èç ïîëíîãî èìåíè ôàéëà fname
-function ExtractFilePath(fname: string): string;
-/// Âûäåëÿåò èìÿ äèñêà è ïóòü èç ïîëíîãî èìåíè ôàéëà fname
-function ExtractFileDir(fname: string): string;
-/// Âûäåëÿåò ïóòü èç ïîëíîãî èìåíè ôàéëà fname
-function ExtractFileDrive(fname: string): string;
-/// Âîçâðàùàåò ïîëíîå èìÿ ôàéëà fname
-function ExpandFileName(fname: string): string;
-
-// -----------------------------------------------------
-//>> Ìàòåìàòè÷åñêèå ïîäïðîãðàììû # Math subroutines
-// -----------------------------------------------------
-///-function Sign(x: ÷èñëî): ÷èñëî;
-/// Âîçâðàùàåò çíàê ÷èñëà x
-function Sign(x: shortint): integer;
-///--
-function Sign(x: smallint): integer;
-///--
-function Sign(x: integer): integer;
-///--
-function Sign(x: BigInteger): integer;
-///--
-function Sign(x: longword): integer;
-///--
-function Sign(x: int64): integer;
-///--
-function Sign(x: uint64): integer;
-///--
-function Sign(x: real): integer;
-///-function Abs(x: ÷èñëî): ÷èñëî;
-/// Âîçâðàùàåò ìîäóëü ÷èñëà x
-function Abs(x: integer): integer;
-///--
-function Abs(x: shortint): shortint;
-///--
-function Abs(x: smallint): smallint;
-///--
-function Abs(x: BigInteger): BigInteger;
-///--
-function Abs(x: longword): longword;
-///--
-function Abs(x: int64): int64;
-///--
-function Abs(x: uint64): uint64;
-///--
-function Abs(x: real): real;
-///--
-function Abs(x: single): single;
-/// Âîçâðàùàåò ñèíóñ ÷èñëà x
-function Sin(x: real): real;
-/// Âîçâðàùàåò ãèïåðáîëè÷åñêèé ñèíóñ ÷èñëà x
-function Sinh(x: real): real;
-/// Âîçâðàùàåò êîñèíóñ ÷èñëà x
-/// !! Returns the cosine of number x
-function Cos(x: real): real;
-/// Âîçâðàùàåò ãèïåðáîëè÷åñêèé êîñèíóñ ÷èñëà x
-function Cosh(x: real): real;
-/// Âîçâðàùàåò òàíãåíñ ÷èñëà x
-function Tan(x: real): real;
-/// Âîçâðàùàåò ãèïåðáîëè÷åñêèé òàíãåíñ ÷èñëà x
-function Tanh(x: real): real;
-/// Âîçâðàùàåò àðêñèíóñ ÷èñëà x
-function ArcSin(x: real): real;
-/// Âîçâðàùàåò àðêêîñèíóñ ÷èñëà x
-function ArcCos(x: real): real;
-/// Âîçâðàùàåò àðêòàíãåíñ ÷èñëà x
-function ArcTan(x: real): real;
-/// Âîçâðàùàåò ýêñïîíåíòó ÷èñëà x
-function Exp(x: real): real;
-/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì ÷èñëà x
-function Ln(x: real): real;
-/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì ÷èñëà x
-function Log(x: real): real;
-/// Âîçâðàùàåò ëîãàðèôì ÷èñëà x ïî îñíîâàíèþ 2
-function Log2(x: real): real;
-/// Âîçâðàùàåò äåñÿòè÷íûé ëîãàðèôì ÷èñëà x
-function Log10(x: real): real;
-/// Âîçâðàùàåò ëîãàðèôì ÷èñëà x ïî îñíîâàíèþ base
-function LogN(base, x: real): real;
-/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà x
-function Sqrt(x: real): real;
-///-function Sqr(x: ÷èñëî): ÷èñëî;
-/// Âîçâðàùàåò êâàäðàò ÷èñëà x
-function Sqr(x: integer): int64;
-///--
-function Sqr(x: shortint): integer;
-///--
-function Sqr(x: smallint): integer;
-///--
-function Sqr(x: BigInteger): BigInteger;
-///--
-function Sqr(x: longword): uint64;
-///--
-function Sqr(x: int64): int64;
-///--
-function Sqr(x: uint64): uint64;
-///--
-function Sqr(x: real): real;
-/// Âîçâðàùàåò x â ñòåïåíè y
-function Power(x, y: real): real;
-/// Âîçâðàùàåò x â öåëîé ñòåïåíè n
-function Power(x: real; n: integer): real;
-/// Âîçâðàùàåò x â ñòåïåíè y
-function Power(x: BigInteger; y: integer): BigInteger;
-/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî öåëîãî. Åñëè âåùåñòâåííîå íàõîäèòñÿ ïîñåðåäèíå ìåæäó äâóìÿ öåëûìè,
-///òî îêðóãëåíèå îñóùåñòâëÿåòñÿ ê áëèæàéøåìó ÷åòíîìó (áàíêîâñêîå îêðóãëåíèå): Round(2.5)=2, Round(3.5)=4
-function Round(x: real): integer;
-/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî âåùåñòâåííîãî ñ digits çíàêàìè ïîñëå äåñÿòè÷íîé òî÷êè
-function Round(x: real; digits: integer): real;
-/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî äëèííîãî öåëîãî
-function RoundBigInteger(x: real): BigInteger;
-/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà x
-function Trunc(x: real): integer;
-/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà x êàê äëèííîå öåëîå
-function TruncBigInteger(x: real): BigInteger;
-/// Âîçâðàùàåò öåëóþ ÷àñòü ÷èñëà x
-function Int(x: real): real;
-/// Âîçâðàùàåò äðîáíóþ ÷àñòü ÷èñëà x
-function Frac(x: real): real;
-/// Âîçâðàùàåò íàèáîëüøåå öåëîå <= x
-function Floor(x: real): integer;
-/// Âîçâðàùàåò íàèìåíüøåå öåëîå >= x
-function Ceil(x: real): integer;
-/// Ïåðåâîäèò ðàäèàíû â ãðàäóñû
-function RadToDeg(x: real): real;
-/// Ïåðåâîäèò ãðàäóñû â ðàäèàíû
-function DegToRad(x: real): real;
-
-/// Èíèöèàëèçèðóåò äàò÷èê ïñåâäîñëó÷àéíûõ ÷èñåë
-procedure Randomize;
-/// Èíèöèàëèçèðóåò äàò÷èê ïñåâäîñëó÷àéíûõ ÷èñåë, èñïîëüçóÿ çíà÷åíèå seed. Ïðè îäíîì è òîì æå seed ãåíåðèðóþòñÿ îäèíàêîâûå ïñåâäîñëó÷àéíûå ïîñëåäîâàòåëüíîñòè
-procedure Randomize(seed: integer);
-/// Âîçâðàùàåò ñëó÷àéíîå öåëîå â äèàïàçîíå îò 0 äî maxValue-1
-function Random(maxValue: integer): integer;
-/// Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [0,maxValue)
-function Random(maxValue: real): real;
-/// Âîçâðàùàåò ñëó÷àéíîå öåëîå â äèàïàçîíå îò a äî b
-function Random(a, b: integer): integer;
-/// Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [a,b)
-function Random(a, b: real): real;
-/// Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [0..1)
-function Random: real;
-/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò 0 äî maxValue-1
-function Random2(maxValue: integer): (integer, integer);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0,maxValue)
-function Random2(maxValue: real): (real, real);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò a äî b
-function Random2(a, b: integer): (integer, integer);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [a,b)
-function Random2(a, b: real): (real, real);
-/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0..1)
-function Random2: (real, real);
-/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò 0 äî maxValue-1
-function Random3(maxValue: integer): (integer, integer, integer);
-/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0,maxValue)
-function Random3(maxValue: real): (real, real, real);
-/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò a äî b
-function Random3(a, b: integer): (integer, integer, integer);
-/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [a,b)
-function Random3(a, b: real): (real, real, real);
-/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0..1)
-function Random3: (real, real, real);
-
-///-function Max(a: ÷èñëî, b: ÷èñëî): ÷èñëî;
-/// Âîçâðàùàåò ìàêñèìàëüíîå èç ÷èñåë a,b
-function Max(a, b: byte): byte;
-///--
-function Max(a, b: shortint): shortint;
-///--
-function Max(a, b: smallint): smallint;
-///--
-function Max(a, b: word): word;
-///--
-function Max(a, b: integer): integer;
-///--
-function Max(a, b: BigInteger): BigInteger;
-///--
-function Max(a, b: longword): longword;
-///--
-function Max(a, b: int64): int64;
-///--
-function Max(a, b: uint64): uint64;
-///--
-function Max(a, b: real): real;
-///-function Min(a: ÷èñëî, b: ÷èñëî): ÷èñëî;
-/// Âîçâðàùàåò ìèíèìàëüíîå èç ÷èñåë a,b
-function Min(a, b: byte): byte;
-///--
-function Min(a, b: shortint): shortint;
-///--
-function Min(a, b: word): word;
-///--
-function Min(a, b: smallint): smallint;
-///--
-function Min(a, b: integer): integer;
-///--
-function Min(a, b: BigInteger): BigInteger;
-///--
-function Min(a, b: longword): longword;
-///--
-function Min(a, b: int64): int64;
-///--
-function Min(a, b: uint64): uint64;
-///--
-function Min(a, b: real): real;
-///-function Odd(i: öåëîå): boolean;
-/// Âîçâðàùàåò True, åñëè i íå÷åòíî, è False â ïðîòèâíîì ñëó÷àå
-function Odd(i: byte): boolean;
-///--
-function Odd(i: shortint): boolean;
-///--
-function Odd(i: word): boolean;
-///--
-function Odd(i: smallint): boolean;
-///--
-function Odd(i: integer): boolean;
-///--
-function Odd(i: BigInteger): boolean;
-///--
-function Odd(i: longword): boolean;
-///--
-function Odd(i: int64): boolean;
-///--
-function Odd(i: uint64): boolean;
-
-// -----------------------------------------------------
-//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ êîìïëåêñíûìè ÷èñëàìè # Functions for Complex numbers
-// -----------------------------------------------------
-/// Êîíñòðóèðóåò êîìïëåêñíîå ÷èñëî ñ âåùåñòâåííîé ÷àñòüþ re è ìíèìîé ÷àñòüþ im
-function Cplx(re, im: real): Complex;
-/// Êîíñòðóèðóåò êîìïëåêñíîå ÷èñëî ïî ïîëÿðíûì êîîðäèíàòàì
-function CplxFromPolar(magnitude, phase: real): Complex;
-/// Âîçâðàùàåò êâàäðàòíûé êîðåíü èç êîìïëåêñíîãî ÷èñëà
-function Sqrt(c: Complex): Complex;
-/// Âîçâðàùàåò ìîäóëü êîìïëåêñíîãî ÷èñëà
-function Abs(c: Complex): Complex;
-/// Âîçâðàùàåò êîìïëåêñíî ñîïðÿæåííîå ÷èñëî
-function Conjugate(c: Complex): Complex;
-/// Âîçâðàùàåò êîñèíóñ êîìïëåêñíîãî ÷èñëà
-function Cos(c: Complex): Complex;
-/// Âîçâðàùàåò ýêñïîíåíòó êîìïëåêñíîãî ÷èñëà
-function Exp(c: Complex): Complex;
-/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì êîìïëåêñíîãî ÷èñëà
-function Ln(c: Complex): Complex;
-/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì êîìïëåêñíîãî ÷èñëà
-function Log(c: Complex): Complex;
-/// Âîçâðàùàåò äåñÿòè÷íûé ëîãàðèôì êîìïëåêñíîãî ÷èñëà
-function Log10(c: Complex): Complex;
-/// Âîçâðàùàåò ñòåïåíü êîìïëåêñíîãî ÷èñëà
-function Power(c, power: Complex): Complex;
-/// Âîçâðàùàåò ñèíóñ êîìïëåêñíîãî ÷èñëà
-function Sin(c: Complex): Complex;
-
-// -----------------------------------------------------
-//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñî ñòàíäàðòíûìè ìíîæåñòâàìè # Subroutines for set of T
-// -----------------------------------------------------
-///- procedure Include(var s: set of T; element: T);
-///Äîáàâëÿåò ýëåìåíò element âî ìíîæåñòâî s
-procedure Include(var s: TypedSet; el: object);
-///- procedure Exclude(var s: set of T; element: T);
-///Óäàëÿåò ýëåìåíò element èç ìíîæåñòâà s
-procedure Exclude(var s: TypedSet; el: object);
-
-// -----------------------------------------------------
-//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ ñèìâîëàìè # Subroutines for char
-// -----------------------------------------------------
-/// Óâåëè÷èâàåò êîä ñèìâîëà c íà 1
-procedure Inc(var c: char);
-/// Óâåëè÷èâàåò êîä ñèìâîëà c íà n
-procedure Inc(var c: char; n: integer);
-/// Óìåíüøàåò êîä ñèìâîëà c íà 1
-procedure Dec(var c: char);
-/// Óìåíüøàåò êîä ñèìâîëà c íà n
-procedure Dec(var c: char; n: integer);
-/// Âîçâðàùàåò ïðåäøåñòâóþùèé x ñèìâîë
-function Pred(x: char): char;
-/// Âîçâðàùàåò ñëåäóþùèé çà x ñèìâîë
-function Succ(x: char): char;
-/// Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Windows
-function ChrAnsi(a: byte): char;
-/// Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Windows
-function OrdAnsi(a: char): byte;
-/// Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Unicode
-function Chr(a: word): char;
-/// Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Unicode
-function Ord(a: char): word;
-/// Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Unicode
-function ChrUnicode(a: word): char;
-/// Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Unicode
-function OrdUnicode(a: char): word;
-/// Ïðåîáðàçóåò ñèìâîë â âåðõíèé ðåãèñòð
-function UpperCase(ch: char): char;
-/// Ïðåîáðàçóåò ñèìâîë â íèæíèé ðåãèñòð
-function LowerCase(ch: char): char;
-/// Ïðåîáðàçóåò ñèìâîë â âåðõíèé ðåãèñòð
-function UpCase(ch: char): char;
-/// Ïðåîáðàçóåò ñèìâîë â íèæíèé ðåãèñòð
-function LowCase(ch: char): char;
-
-// -----------------------------------------------------
-//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñî ñòðîêàìè # Subroutines for string
-// -----------------------------------------------------
-///-procedure Str(i: öåëîå; var s: string);
-/// Ïðåîáðàçóåò öåëîå çíà÷åíèå i ê ñòðîêîâîìó ïðåäñòàâëåíèþ è çàïèñûâàåò ðåçóëüòàò â s
-procedure Str(i: integer; var s: string);
-///--
-procedure Str(i: longword; var s: string);
-///--
-procedure Str(i: int64; var s: string);
-///--
-procedure Str(i: uint64; var s: string);
-/// Ïðåîáðàçóåò âåùåñòâåííîå çíà÷åíèå r ê ñòðîêîâîìó ïðåäñòàâëåíèþ è çàïèñûâàåò ðåçóëüòàò â s
-procedure Str(r: real; var s: string);
-/// Ïðåîáðàçóåò âåùåñòâåííîå çíà÷åíèå r ê ñòðîêîâîìó ïðåäñòàâëåíèþ è çàïèñûâàåò ðåçóëüòàò â s
-procedure Str(r: single; var s: string);
-///--
-procedure Str(s1: string; var s: string);
-
-/// Âîçâðàùàåò ïîçèöèþ ïîäñòðîêè subs â ñòðîêå s. Åñëè íå íàéäåíà, âîçâðàùàåò 0
-function Pos(subs, s: string; from: integer := 1): integer;
-/// Âîçâðàùàåò ïîçèöèþ ïîäñòðîêè subs â ñòðîêå s íà÷èíàÿ ñ ïîçèöèè from. Åñëè íå íàéäåíà, âîçâðàùàåò 0
-function PosEx(subs, s: string; from: integer := 1): integer;
-/// Âîçâðàùàåò ïîçèöèþ ïîñëåäíåãî âõîæäåíèÿ ïîäñòðîêè subs â ñòðîêå s. Åñëè íå íàéäåíà, âîçâðàùàåò 0
-function LastPos(subs, s: string): integer;
-/// Âîçâðàùàåò ïîçèöèþ ïîñëåäíåãî âõîæäåíèÿ ïîäñòðîêè subs â ñòðîêå s íà÷èíàÿ ñ ïîçèöèè from. Åñëè íå íàéäåíà, âîçâðàùàåò 0
-function LastPos(subs, s: string; from: integer): integer;
-
-/// Âîçâðàùàåò äëèíó ñòðîêè
-function Length(s: string): integer;
-/// Óñòàíàâëèâàåò äëèíó ñòðîêè s ðàâíîé n
-procedure SetLength(var s: string; n: integer);
-///--
-procedure SetLengthForShortString(var s: string; n, sz: integer);
-/// Âñòàâëÿåò ïîäñòðîêó source â ñòðîêó s ñ ïîçèöèè index
-procedure Insert(source: string; var s: string; index: integer);
-///--
-procedure InsertInShortString(source: string; var s: string; index, n: integer);
-/// Óäàëÿåò èç ñòðîêè s count ñèìâîëîâ ñ ïîçèöèè index
-procedure Delete(var s: string; index, count: integer);
-/// Âîçâðàùàåò ïîäñòðîêó ñòðîêè s äëèíû count ñ ïîçèöèè index
-function Copy(s: string; index, count: integer): string;
-///-function Concat(s1,s2,...): string;
-/// Âîçâðàùàåò ñòðîêó, ÿâëÿþùóþñÿ ðåçóëüòàòîì ñëèÿíèÿ ñòðîê s1,s2,...
-function Concat(params strs: array of string): string;
-/// Âîçâðàùàåò ñòðîêó, ÿâëÿþùóþñÿ ðåçóëüòàòîì ñëèÿíèÿ ñòðîê s1 è s2
-function Concat(s1, s2: string): string;
-/// Âîçâðàùàåò ñòðîêó â íèæíåì ðåãèñòðå
-function LowerCase(s: string): string;
-/// Âîçâðàùàåò ñòðîêó â âåðõíåì ðåãèñòðå
-function UpperCase(s: string): string;
-/// Âîçâðàùàåò ñòðîêó, ñîñòîÿùóþ èç count ñèìâîëîâ ch
-function StringOfChar(ch: char; count: integer): string;
-/// Âîçâðàùàåò èíâåðòèðîâàííóþ ñòðîêó
-function ReverseString(s: string): string;
-/// Âîçâðàùàåò èíâåðòèðîâàííóþ ñòðîêó â äèàïàçîíå äëèíû length íà÷èíàÿ ñ èíäåêñà index
-function ReverseString(s: string; index,length: integer): string;
-/// Ñðàâíèâàåò ñòðîêè. Âîçâðàùàåò çíà÷åíèå < 0 åñëè s1 0 åñëè s1>s2 è = 0 åñëè s1=s2
-function CompareStr(s1, s2: string): integer;
-/// Âîçâðàùàåò ïåðâûå count ñèìâîëîâ ñòðîêè s
-function LeftStr(s: string; count: integer): string;
-/// Âîçâðàùàåò ïîñëåäíèå count ñèìâîëîâ ñòðîêè s
-function RightStr(s: string; count: integer): string;
-
-/// Âîçâðàùàåò ñòðîêó ñ óäàëåííûìè íà÷àëüíûìè è êîíå÷íûìè ïðîáåëàìè
-function Trim(s: string): string;
-/// Âîçâðàùàåò ñòðîêó ñ óäàëåííûìè íà÷àëüíûìè ïðîáåëàìè
-function TrimLeft(s: string): string;
-/// Âîçâðàùàåò ñòðîêó ñ óäàëåííûìè êîíå÷íûìè ïðîáåëàìè
-function TrimRight(s: string): string;
-
-/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ
-function StrToInt(s: string): integer;
-/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ
-function StrToInt64(s: string): int64;
-/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ
-function StrToFloat(s: string): real;
-/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ
-function StrToReal(s: string): real;
-/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.
-///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False
-function TryStrToInt(s: string; var value: integer): boolean;
-/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.
-///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False
-function TryStrToInt64(s: string; var value: int64): boolean;
-/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.
-///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False
-function TryStrToFloat(s: string; var value: real): boolean;
-/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.
-///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False
-function TryStrToFloat(s: string; var value: single): boolean;
-/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.
-///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False
-function TryStrToReal(s: string; var value: real): boolean;
-/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.
-///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False
-function TryStrToSingle(s: string; var value: single): boolean;
-/// Ñ÷èòûâàåò öåëîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì
-function ReadIntegerFromString(s: string; var from: integer): integer;
-/// Ñ÷èòûâàåò âåùåñòâåííîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì
-function ReadRealFromString(s: string; var from: integer): real;
-/// Ñ÷èòûâàåò èç ñòðîêè ïîñëåäîâàòåëüíîñòü ñèìâîëîâ äî ïðîáåëüíîãî ñèìâîëà íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì
-function ReadWordFromString(s: string; var from: integer): string;
-/// Âîçâðàùàåò True åñëè äîñòèãíóò êîíåö ñòðîêè èëè â ñòðîêå îñòàëèñü òîëüêî ïðîáåëüíûå ñèìâîëû è False â ïðîòèâíîì ñëó÷àå
-function StringIsEmpty(s: string; var from: integer): boolean;
-/// Ñ÷èòûâàåò öåëîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì.
-///Âîçâðàùàåò True åñëè ñ÷èòûâàíèå óäà÷íî è False â ïðîòèâíîì ñëó÷àå
-function TryReadIntegerFromString(s: string; var from: integer; var res: integer): boolean;
-/// Ñ÷èòûâàåò âåùåñòâåííîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì.
-///Âîçâðàùàåò True åñëè ñ÷èòûâàíèå óäà÷íî è False â ïðîòèâíîì ñëó÷àå
-function TryReadRealFromString(s: string; var from: integer; var res: real): boolean;
-
-///-procedure Val(s: string; var value: ÷èñëî; var err: integer);
-/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â ïåðåìåííóþ value.
-///Åñëè ïðåîáðàçîâàíèå óñïåøíî, òî err=0, èíà÷å err>0
-procedure Val(s: string; var value: integer; var err: integer);
-///--
-procedure Val(s: string; var value: shortint; var err: integer);
-///--
-procedure Val(s: string; var value: smallint; var err: integer);
-///--
-procedure Val(s: string; var value: int64; var err: integer);
-///--
-procedure Val(s: string; var value: byte; var err: integer);
-///--
-procedure Val(s: string; var value: word; var err: integer);
-///--
-procedure Val(s: string; var value: longword; var err: integer);
-///--
-procedure Val(s: string; var value: uint64; var err: integer);
-///--
-procedure Val(s: string; var value: real; var err: integer);
-///--
-procedure Val(s: string; var value: single; var err: integer);
-
-/// Ïðåîáðàçóåò öåëîå ÷èñëî ê ñòðîêîâîìó ïðåäñòàâëåíèþ
-function IntToStr(a: integer): string;
-/// Ïðåîáðàçóåò öåëîå ÷èñëî ê ñòðîêîâîìó ïðåäñòàâëåíèþ
-function IntToStr(a: int64): string;
-/// Ïðåîáðàçóåò âåùåñòâåííîå ÷èñëî ê ñòðîêîâîìó ïðåäñòàâëåíèþ
-function FloatToStr(a: real): string;
-
-/// Âîçâðàùàåò îòôîðìàòèðîâàííóþ ñòðîêó, ïîñòðîåííóþ ïî ôîðìàòíîé ñòðîêå è ñïèñêó ôîðìàòèðóåìûõ ïàðàìåòðîâ
-function Format(formatstring: string; params pars: array of object): string;
-
-// -----------------------------------------------------
-//>> Îáùèå ïîäïðîãðàììû # Common subroutines
-// -----------------------------------------------------
-/// Óâåëè÷èâàåò çíà÷åíèå ïåðåìåííîé i íà 1
-procedure Inc(var i: integer);
-/// Óâåëè÷èâàåò çíà÷åíèå ïåðåìåííîé i íà n
-procedure Inc(var i: integer; n: integer);
-/// Óìåíüøàåò çíà÷åíèå ïåðåìåííîé i íà 1
-procedure Dec(var i: integer);
-/// Óìåíüøàåò çíà÷åíèå ïåðåìåííîé i íà n
-procedure Dec(var i: integer; n: integer);
-///-procedure Inc(var e: ïåðå÷èñëèìûé òèï);
-/// Óâåëè÷èâàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà 1
-procedure Inc(var b: byte);
-///-procedure Inc(var e: ïåðå÷èñëèìûé òèï; n: integer);
-/// Óâåëè÷èâàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà n
-procedure Inc(var b: byte; n: integer);
-///-procedure Dec(var e: ïåðå÷èñëèìûé òèï);
-/// Óìåíüøàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà 1
-procedure Dec(var b: byte);
-///-procedure Dec(var e: ïåðå÷èñëèìûé òèï; n: integer);
-/// Óìåíüøàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà n
-procedure Dec(var b: byte; n: integer);
-///--
-procedure Inc(var f: boolean);
-///--
-procedure Dec(var f: boolean);
-///-function Ord(a: öåëîå): öåëîå;
-/// Âîçâðàùàåò ïîðÿäêîâûé íîìåð çíà÷åíèÿ a
-function Ord(a: integer): integer;
-///-function Ord(a: ïåðå÷èñëèìûé òèï): integer;
-/// Âîçâðàùàåò ïîðÿäêîâûé íîìåð çíà÷åíèÿ a
-function Ord(a: longword): longword;
-///--
-function Ord(a: int64): int64;
-///--
-function Ord(a: uint64): uint64;
-///--
-function Ord(a: boolean): integer;
-
-///-function Succ(x: öåëîå): öåëîå;
-/// Âîçâðàùàåò ñëåäóþùåå çà x çíà÷åíèå
-function Succ(x: integer): integer;
-///-function Succ(x: ïåðå÷èñëèìûé òèï): ïåðå÷èñëèìûé òèï;
-/// Âîçâðàùàåò ñëåäóþùåå çà x çíà÷åíèå
-function Succ(x: byte): byte;
-///--
-function Succ(x: shortint): shortint;
-///--
-function Succ(x: smallint): smallint;
-///--
-function Succ(x: word): word;
-///--
-function Succ(x: longword): longword;
-///--
-function Succ(x: int64): int64;
-///--
-function Succ(x: uint64): uint64;
-///--
-function Succ(x: boolean): boolean;
-
-///-function Pred(x: öåëîå): öåëîå;
-/// Âîçâðàùàåò ïðåäøåñòâóþùåå x çíà÷åíèå
-function Pred(x: integer): integer;
-///-function Pred(x: ïåðå÷èñëèìûé òèï): ïåðå÷èñëèìûé òèï;
-/// Âîçâðàùàåò ïðåäøåñòâóþùåå x çíà÷åíèå
-function Pred(x: byte): byte;
-///--
-function Pred(x: shortint): shortint;
-///--
-function Pred(x: smallint): smallint;
-///--
-function Pred(x: word): word;
-///--
-function Pred(x: longword): longword;
-///--
-function Pred(x: int64): int64;
-///--
-function Pred(x: uint64): uint64;
-///--
-function Pred(x: boolean): boolean;
-
-/// Ìåíÿåò ìåñòàìè çíà÷åíèÿ äâóõ ïåðåìåííûõ
-procedure Swap(var a, b: T);
-/// Âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ñòðîêè
-function Eoln: boolean;
-/// Âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ïîòîêà ââîäà
-function Eof: boolean;
-
-// -----------------------------------------------------
-//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ äèíàìè÷åñêèìè ìàññèâàìè # Subroutines for array of T
-// -----------------------------------------------------
-///- function Low(a: array of T): integer;
-/// Âîçâðàùàåò 0
-function Low(i: System.Array): integer;
-///- function High(a: array of T): integer;
-/// Âîçâðàùàåò âåðõíþþ ãðàíèöó äèíàìè÷åñêîãî ìàññèâà
-function High(i: System.Array): integer;
-///- function Length(a: array of T): integer;
-/// Âîçâðàùàåò äëèíó äèíàìè÷åñêîãî ìàññèâà
-function Length(a: System.Array): integer;
-///- function Length(a: array of T; dim: integer): integer;
-/// Âîçâðàùàåò äëèíó äèíàìè÷åñêîãî ìàññèâà ïî ðàçìåðíîñòè dim
-function Length(a: System.Array; dim: integer): integer;
-///- procedure SetLength(var a: array of T);
-/// Óñòàíàâëèâàåò äëèíó îäíîìåðíîãî äèíàìè÷åñêîãî ìàññèâà. Ñòàðîå ñîäåðæèìîå ñîõðàíÿåòñÿ
-//procedure SetLength(var a: System.Array);
-///- procedure SetLength(var a: array of T; n1,n2,...: integer);
-/// Óñòàíàâëèâàåò ðàçìåðû n-ìåðíîãî äèíàìè÷åñêîãî ìàññèâà. Ñòàðîå ñîäåðæèìîå ñîõðàíÿåòñÿ
-//procedure SetLength(var a: System.Array);
-///- function Copy(a: array of T): array of T;
-/// Ñîçäà¸ò êîïèþ äèíàìè÷åñêîãî ìàññèâà
-function Copy(a: System.Array): System.Array;
-/// Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî âîçðàñòàíèþ
-procedure Sort(a: array of T);
-/// Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ cmp
-procedure Sort(a: array of T; cmp: (T,T)->integer);
-/// Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ less
-procedure Sort(a: array of T; less: (T,T)->boolean);
-/// Ñîðòèðóåò ñïèñîê ïî âîçðàñòàíèþ
-procedure Sort(l: List);
-/// Ñîðòèðóåò ñïèñîê ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ cmp
-procedure Sort(l: List; cmp: (T,T)->integer);
-/// Ñîðòèðóåò ñïèñîê ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ less
-procedure Sort(l: List; less: (T,T)->boolean);
-/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ â äèíàìè÷åñêîì ìàññèâå íà ïðîòèâîïîëîæíûé
-procedure Reverse(a: array of T);
-/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ íà ïðîòèâîïîëîæíûé â äèàïàçîíå äèíàìè÷åñêîãî ìàññèâà äëèíû count, íà÷èíàÿ ñ èíäåêñà index
-procedure Reverse(a: array of T; index, count: integer);
-/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ â ñïèñêå íà ïðîòèâîïîëîæíûé
-procedure Reverse(a: List);
-/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ íà ïðîòèâîïîëîæíûé â äèàïàçîíå ñïèñêà äëèíû count, íà÷èíàÿ ñ èíäåêñà index
-procedure Reverse(a: List; index, count: integer);
-/// Ïåðåìåøèâàåò äèíàìè÷åñêèé ìàññèâ ñëó÷àéíûì îáðàçîì
-procedure Shuffle(a: array of T);
-/// Ïåðåìåøèâàåò ñïèñîê ñëó÷àéíûì îáðàçîì
-procedure Shuffle(l: List);
-
-// -----------------------------------------------------
-//>> Ïîäïðîãðàììû äëÿ ãåíåðàöèè ïîñëåäîâàòåëüíîñòåé # Subroutines for sequence generation
-// -----------------------------------------------------
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ îò a äî b
-function Range(a, b: integer): sequence of integer;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñèìâîëîâ îò c1 äî c2
-function Range(c1, c2: char): sequence of char;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ â òî÷êàõ ðàçáèåíèÿ îòðåçêà [a,b] íà n ðàâíûõ ÷àñòåé (Èñïîëüçóéòå Partition)
-function Range(a, b: real; n: integer): sequence of real;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ â òî÷êàõ ðàçáèåíèÿ îòðåçêà [a,b] íà n ðàâíûõ ÷àñòåé
-function Partition(a, b: real; n: integer): sequence of real;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ îò a äî b ñ øàãîì step
-function Range(a, b, step: integer): sequence of integer;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü óêàçàííûõ ýëåìåíòîâ
-function Seq(params a: array of T): sequence of T;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñëó÷àéíûõ öåëûõ ýëåìåíòîâ
-function SeqRandom(n: integer := 10; a: integer := 0; b: integer := 100): sequence of integer;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñëó÷àéíûõ öåëûõ ýëåìåíòîâ
-function SeqRandomInteger(n: integer := 10; a: integer := 0; b: integer := 100): sequence of integer;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñëó÷àéíûõ âåùåñòâåííûõ ýëåìåíòîâ
-function SeqRandomReal(n: integer := 10; a: real := 0; b: real := 10): sequence of real;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè f(i)
-function SeqGen(count: integer; f: integer->T): sequence of T;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè f(i), íà÷èíàÿ ñ i=from
-function SeqGen(count: integer; f: integer->T; from: integer): sequence of T;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, íà÷èíàþùóþñÿ ñ first, ñ ôóíêöèåé next ïåðåõîäà îò ïðåäûäóùåãî ê ñëåäóþùåìó
-function SeqGen(count: integer; first: T; next: T->T): sequence of T;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, íà÷èíàþùóþñÿ ñ first è second,
-///ñ ôóíêöèåé next ïåðåõîäà îò äâóõ ïðåäûäóùèõ ê ñëåäóþùåìó
-function SeqGen(count: integer; first, second: T; next: (T,T) ->T): sequence of T;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ ñ íà÷àëüíûì çíà÷åíèåì first,
-///ôóíêöèåé next ïåðåõîäà îò ïðåäûäóùåãî ê ñëåäóþùåìó è óñëîâèåì pred ïðîäîëæåíèÿ ïîñëåäîâàòåëüíîñòè
-function SeqWhile(first: T; next: T->T; pred: T->boolean): sequence of T;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ, íà÷èíàþùóþñÿ ñ first è second,
-///ñ ôóíêöèåé next ïåðåõîäà îò äâóõ ïðåäûäóùèõ ê ñëåäóþùåìó è óñëîâèåì pred ïðîäîëæåíèÿ ïîñëåäîâàòåëüíîñòè
-function SeqWhile(first, second: T; next: (T,T) ->T; pred: T->boolean): sequence of T;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ x
-function SeqFill(count: integer; x: T): sequence of T;
-
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû
-function ReadSeqInteger(n: integer): sequence of integer;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû
-function ReadSeqReal(n: integer): sequence of real;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû
-function ReadSeqString(n: integer): sequence of string;
-
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû
-function ReadSeqInteger(prompt: string; n: integer): sequence of integer;
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû
-function ReadSeqReal(prompt: string; n: integer): sequence of real;
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû
-function ReadSeqString(prompt: string; n: integer): sequence of string;
-
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå
-function ReadSeqIntegerWhile(cond: integer->boolean): sequence of integer;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå
-function ReadSeqRealWhile(cond: real->boolean): sequence of real;
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòðîê, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå
-function ReadSeqStringWhile(cond: string->boolean): sequence of string;
-
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå
-function ReadSeqIntegerWhile(prompt: string; cond: integer->boolean): sequence of integer;
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå
-function ReadSeqRealWhile(prompt: string; cond: real->boolean): sequence of real;
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòðîê, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå
-function ReadSeqStringWhile(prompt: string; cond: string->boolean): sequence of string;
-
-// -----------------------------------------------------
-//>> Ïîäïðîãðàììû äëÿ ñîçäàíèÿ äèíàìè÷åñêèõ ìàññèâîâ # Subroutines for array of T generation
-// -----------------------------------------------------
-/// Âîçâðàùàåò ìàññèâ, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè
-function Arr(params a: array of T): array of T;
-/// Âîçâðàùàåò ìàññèâ, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíñòè
-function Arr(a: sequence of T): array of T;
-/// Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè
-function ArrRandom(n: integer := 10; a: integer := 0; b: integer := 100): array of integer;
-/// Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè
-function ArrRandomInteger(n: integer := 10; a: integer := 0; b: integer := 100): array of integer;
-/// Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè âåùåñòâåííûìè çíà÷åíèÿìè
-function ArrRandomReal(n: integer := 10; a: real := 0; b: real := 10): array of real;
-/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè gen(i)
-function ArrGen(count: integer; gen: integer->T): array of T;
-/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè gen(i), íà÷èíàÿ ñ i=from
-function ArrGen(count: integer; gen: integer->T; from: integer): array of T;
-/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, íà÷èíàþùèõñÿ ñ first, ñ ôóíêöèåé next ïåðåõîäà îò ïðåäûäóùåãî ê ñëåäóþùåìó
-function ArrGen(count: integer; first: T; next: T->T): array of T;
-/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, íà÷èíàþùèõñÿ ñ first è second, ñ ôóíêöèåé next ïåðåõîäà îò äâóõ ïðåäûäóùèõ ê ñëåäóþùåìó
-function ArrGen(count: integer; first, second: T; next: (T,T) ->T): array of T;
-/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ x
-function ArrFill(count: integer; x: T): array of T;
-
-/// Âîçâðàùàåò ìàññèâ èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû
-function ReadArrInteger(n: integer): array of integer;
-/// Âîçâðàùàåò ìàññèâ èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû
-function ReadArrReal(n: integer): array of real;
-/// Âîçâðàùàåò ìàññèâ èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû
-function ReadArrString(n: integer): array of string;
-
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ìàññèâ èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû
-function ReadArrInteger(prompt: string; n: integer): array of integer;
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ìàññèâ èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû
-function ReadArrReal(prompt: string; n: integer): array of real;
-/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ìàññèâ èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû
-function ReadArrString(prompt: string; n: integer): array of string;
-
-// -----------------------------------------------------
-//>> Ïîäïðîãðàììû äëÿ ñîçäàíèÿ äâóìåðíûõ äèíàìè÷åñêèõ ìàññèâîâ # Subroutines for matrixes
-// -----------------------------------------------------
-/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè ïî ñòðîêàì
-function Matr(m,n: integer; params data: array of T): array [,] of T;
-/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè
-function MatrRandom(m: integer := 5; n: integer := 5; a: integer := 0; b: integer := 100): array [,] of integer;
-/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè
-function MatrRandomInteger(m: integer := 5; n: integer := 5; a: integer := 0; b: integer := 100): array [,] of integer;
-/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ñëó÷àéíûìè âåùåñòâåííûìè çíà÷åíèÿìè
-function MatrRandomReal(m: integer := 5; n: integer := 5; a: real := 0; b: real := 10): array [,] of real;
-/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ýëåìåíòàìè x
-function MatrFill(m, n: integer; x: T): array [,] of T;
-/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ýëåìåíòàìè x
-function MatrGen(m, n: integer; gen: (integer,integer)->T): array [,] of T;
-/// Òðàíñïîíèðóåò äâóìåðíûé ìàññèâ
-function Transpose(a: array [,] of T): array [,] of T;
-/// Âîçâðàùàåò ìàòðèöó m íà n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû
-function ReadMatrInteger(m, n: integer): array [,] of integer;
-/// Âîçâðàùàåò ìàòðèöó m íà n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû
-function ReadMatrReal(m, n: integer): array [,] of real;
-
-
-// -----------------------------------------------------
-//>> Ïîäïðîãðàììû äëÿ ñîçäàíèÿ êîðòåæåé # Subroutines for tuple generation
-// -----------------------------------------------------
-///- function Rec(x1: T1, x2: T2,...): (T1,T2,...);
-/// Âîçâðàùàåò êîðòåæ èç ýëåìåíòîâ ðàçíûõ òèïîâ
-function Rec(x1: T1; x2: T2): System.Tuple;
-///--
-function Rec(x1: T1; x2: T2; x3: T3): (T1, T2, T3);
-///--
-function Rec(x1: T1; x2: T2; x3: T3; x4: T4): (T1, T2, T3, T4);
-///--
-function Rec(x1: T1; x2: T2; x3: T3; x4: T4; x5: T5): (T1, T2, T3, T4, T5);
-///--
-function Rec(x1: T1; x2: T2; x3: T3; x4: T4; x5: T5; x6: T6): (T1, T2, T3, T4, T5, T6);
-///--
-function Rec(x1: T1; x2: T2; x3: T3; x4: T4; x5: T5; x6: T6; x7: T7): (T1, T2, T3, T4, T5, T6, T7);
-
-// -----------------------------------------------------
-//>> Êîðîòêèå ôóíêöèè Lst, LLst, HSet, SSet, Dict, KV # Short functions Lst, HSet, SSet, Dict, KV
-// -----------------------------------------------------
-/// Âîçâðàùàåò ñïèñîê, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè
-function Lst(params a: array of T): List;
-/// Âîçâðàùàåò ñïèñîê, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè
-function Lst(a: sequence of T): List;
-/// Âîçâðàùàåò äâóñâÿçíûé ñïèñîê, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè
-function LLst(params a: array of T): LinkedList;
-/// Âîçâðàùàåò äâóñâÿçíûé ñïèñîê, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè
-function LLst(a: sequence of T): LinkedList;
-/// Âîçâðàùàåò ìíîæåñòâî íà áàçå õåø òàáëèöû, çàïîëíåííîå óêàçàííûìè çíà÷åíèÿìè
-function HSet(params a: array of T): HashSet;
-/// Âîçâðàùàåò ìíîæåñòâî íà áàçå õåø òàáëèöû, çàïîëíåííîå çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè
-function HSet(a: sequence of T): HashSet;
-/// Âîçâðàùàåò ìíîæåñòâî íà áàçå áèíàðíîãî äåðåâà ïîèñêà, çàïîëíåííîå çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè
-function SSet(params a: array of T): SortedSet;
-/// Âîçâðàùàåò ìíîæåñòâî íà áàçå áèíàðíîãî äåðåâà ïîèñêà, çàïîëíåííîå çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè
-function SSet(a: sequence of T): SortedSet;
-/// Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå)
-function Dict(params pairs: array of KeyValuePair): Dictionary;
-/// Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå)
-function Dict(params pairs: array of (TKey, TVal)): Dictionary;
-/// Âîçâðàùàåò ïàðó ýëåìåíòîâ (êëþ÷, çíà÷åíèå)
-function KV(key: TKey; value: TVal): KeyValuePair;
-
-
-// -----------------------------------------------------
-//>> Ãåíåðàöèÿ áåñêîíå÷íûõ ïîñëåäîâàòåëüíîñòåé # Infinite sequences
-// -----------------------------------------------------
-// Äîïîëíåíèÿ ôåâðàëü 2016: Iterate, Step, Repeat, Cycle
-
-// Âîçâðàùàåò áåñêîíå÷íóþ ðåêóððåíòíóþ ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ, çàäàâàåìóþ íà÷àëüíûì ýëåìåíòîì è ôóíêöèåé next
-///--
-function Iterate(Self: T; next: T->T): sequence of T; extensionmethod;
-begin
- Result := Iterate(Self, next);
-end;
-
-// Âîçâðàùàåò áåñêîíå÷íóþ ðåêóððåíòíóþ ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ, çàäàâàåìóþ íà÷àëüíûì ýëåìåíòîì, ñëåäóþùèì çà íèì ýëåìåíòîì è ôóíêöèåé next
-///--
-function Iterate(Self, second: T; next: (T,T) ->T): sequence of T; extensionmethod;
-begin
- Result := Iterate(Self, second, next);
-end;
-
-/// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ ñ øàãîì 1
-function Step(Self: integer): sequence of integer; extensionmethod;
-begin
- while True do
- begin
- yield Self;
- Self += 1;
- end;
-end;
-
-/// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ ñ øàãîì step
-function Step(Self: integer; step: integer): sequence of integer; extensionmethod;
-begin
- while True do
- begin
- yield Self;
- Self += step;
- end;
-end;
-
-/// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ îò òåêóùåãî çíà÷åíèÿ ñ øàãîì step
-function Step(Self: real; step: real): sequence of real; extensionmethod;
-begin
- while True do
- begin
- yield Self;
- Self += step;
- end;
-end;
-
-// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ, ñîâïàäàþùèõ ñ äàííûì
-///--
-function Repeat(Self: T): sequence of T; extensionmethod;
-begin
- while True do
- yield Self;
-end;
-
-/// Ïîâòîðÿåò ïîñëåäîâàòåëüíîñòü áåñêîíå÷íîå ÷èñëî ðàç
-function Cycle(Self: sequence of T): sequence of T; extensionmethod;
-begin
- while True do
- begin
- foreach var x in Self do
- yield x;
- end;
-end;
-
-// -----------------------------------------------------
-//>> Ôèêòèâíàÿ ñåêöèÿ XXX - íå óäàëÿòü! # XXX
-// -----------------------------------------------------
-type
- AdjGroupClass = class
- private
- cur: T;
- enm: IEnumerator;
- fin: boolean;
- public
- constructor Create(a: sequence of T);
- begin
- enm := a.GetEnumerator();
- fin := enm.MoveNext;
- if fin then
- cur := enm.Current;
- end;
-
- function TakeGroup: sequence of T;
- begin
- yield cur;
- fin := enm.movenext;
- while fin do
- begin
- if enm.current = cur then
- yield enm.current
- else
- begin
- cur := enm.Current;
- break;
- end;
- fin := enm.movenext;
- end;
- end;
- end;
-
-//------------------------------------------------------------------------------
-//>> Ìåòîä ðàñøèðåíèÿ Print äëÿ ýëåìåíòàðíûõ òèïîâ # Print for elementary types
-//------------------------------------------------------------------------------
-function Print(Self: integer): integer; extensionmethod;
-begin
- PABCSystem.Print(Self);
- Result := Self;
-end;
-
-function Print(Self: real): real; extensionmethod;
-begin
- PABCSystem.Print(Self);
- Result := Self;
-end;
-
-function Print(Self: char): char; extensionmethod;
-begin
- PABCSystem.Print(Self);
- Result := Self;
-end;
-
-function Print(Self: boolean): boolean; extensionmethod;
-begin
- PABCSystem.Print(Self);
- Result := Self;
-end;
-
-function Print(Self: BigInteger): BigInteger; extensionmethod;
-begin
- PABCSystem.Print(Self);
- Result := Self;
-end;
-
-function Println(Self: integer): integer; extensionmethod;
-begin
- PABCSystem.Println(Self);
- Result := Self;
-end;
-
-function Println(Self: real): real; extensionmethod;
-begin
- PABCSystem.Println(Self);
- Result := Self;
-end;
-
-function Println(Self: char): char; extensionmethod;
-begin
- PABCSystem.Println(Self);
- Result := Self;
-end;
-
-function Println(Self: boolean): boolean; extensionmethod;
-begin
- PABCSystem.Println(Self);
- Result := Self;
-end;
-
-function Println(Self: BigInteger): BigInteger; extensionmethod;
-begin
- PABCSystem.Println(Self);
- Result := Self;
-end;
-
-
-
-//------------------------------------------------------------------------------
-//>> Ìåòîäû ðàñøèðåíèÿ ïîñëåäîâàòåëüíîñòåé # Extension methods for sequence of T
-//------------------------------------------------------------------------------
-/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ
-function Print(Self: sequence of T; delim: string): sequence of T; extensionmethod;
-begin
- var g := Self.GetEnumerator();
- if g.MoveNext() then
- Write(g.Current);
- while g.MoveNext() do
- if delim <> '' then
- Write(delim, g.Current)
- else Write(g.Current);
- Result := Self;
-end;
-
-/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ ïðîáåë â êà÷åñòâå ðàçäåëèòåëÿ
-function Print(Self: sequence of T): sequence of T; extensionmethod;
-begin
- if typeof(T) = typeof(char) then
- Result := Self.Print('')
- else
- Result := Self.Print(PrintDelimDefault);
-end;
-
-/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ, è ïåðåõîäèò íà íîâóþ ñòðîêó
-function Println(Self: sequence of T; delim: string): sequence of T; extensionmethod;
-begin
- Self.Print(delim);
- Writeln;
- Result := Self;
-end;
-
-/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ ïðîáåë êà÷åñòâå ðàçäåëèòåëÿ, è ïåðåõîäèò íà íîâóþ ñòðîêó
-function Println(Self: sequence of T): sequence of T; extensionmethod;
-begin
- if typeof(T) = typeof(char) then
- Result := Self.Println('')
- else
- Result := Self.Println(PrintDelimDefault);
-end;
-
-/// Âûâîäèò ïîñëåäîâàòåëüíîñòü ñòðîê â ôàéë
-function WriteLines(Self: sequence of string; fname: string): sequence of string; extensionmethod;
-begin
- WriteLines(fname, Self);
- Result := Self
-end;
-
-/// Âûâîäèò ïîñëåäîâàòåëüíîñòü, êàæäûé ýëåìåíò âûâîäèòñÿ íà íîâîé ñòðîêå
-function PrintLines(Self: sequence of T): sequence of T; extensionmethod;
-begin
- Self.Println(NewLine);
- Result := Self
-end;
-
-/// Âûâîäèò ïîñëåäîâàòåëüíîñòü, êàæäûé ýëåìåíò îòîáðàæàåòñÿ ñ ïîìîùüþ ôóíêöèè map è âûâîäèòñÿ íà íîâîé ñòðîêå
-function PrintLines(Self: sequence of T; map: T->T1): sequence of T; extensionmethod;
-begin
- Self.Select(map).Println(NewLine);
- Result := Self
-end;
-
-/// Ïðåîáðàçóåò ýëåìåíòû ïîñëåäîâàòåëüíîñòè â ñòðîêîâîå ïðåäñòàâëåíèå, ïîñëå ÷åãî îáúåäèíÿåò èõ â ñòðîêó, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ
-function JoinIntoString(Self: sequence of T; delim: string): string; extensionmethod;
-begin
- var g := Self.GetEnumerator();
- var sb := new System.Text.StringBuilder('');
- if g.MoveNext() then
- sb.Append(g.Current.ToString());
- while g.MoveNext() do
- sb.Append(delim + g.Current.ToString());
- Result := sb.ToString;
-end;
-
-/// Ïðåîáðàçóåò ýëåìåíòû ïîñëåäîâàòåëüíîñòè â ñòðîêîâîå ïðåäñòàâëåíèå, ïîñëå ÷åãî îáúåäèíÿåò èõ â ñòðîêó, èñïîëüçóÿ ïðîáåë â êà÷åñòâå ðàçäåëèòåëÿ
-function JoinIntoString(Self: sequence of T): string; extensionmethod;
-begin
- if typeof(T) = typeof(char) then
- Result := Self.JoinIntoString('')
- else Result := Self.JoinIntoString(' ');
-end;
-
-/// Ïðèìåíÿåò äåéñòâèå ê êàæäîìó ýëåìåíòó ïîñëåäîâàòåëüíîñòè
-procedure ForEach(Self: sequence of T; action: T -> ()); extensionmethod;
-begin
- foreach x: T in Self do
- action(x);
-end;
-
-/// Ïðèìåíÿåò äåéñòâèå ê êàæäîìó ýëåìåíòó ïîñëåäîâàòåëüíîñòè, çàâèñÿùåå îò íîìåðà ýëåìåíòà
-procedure ForEach(Self: sequence of T; action: (T,integer) -> ()); extensionmethod;
-begin
- var i := 0;
- foreach x: T in Self do
- begin
- action(x, i);
- i += 1;
- end;
-end;
-
-/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî âîçðàñòàíèþ ïîñëåäîâàòåëüíîñòü
-function Sorted(Self: sequence of T): sequence of T; extensionmethod;
-begin
- Result := Self.OrderBy(x -> x);
-end;
-
-/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî óáûâàíèþ ïîñëåäîâàòåëüíîñòü
-function SortedDescending(Self: sequence of T): sequence of T; extensionmethod;
-begin
- Result := Self.OrderByDescending(x -> x);
-end;
-
-/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî âîçðàñòàíèþ ïîñëåäîâàòåëüíîñòü
-function Order(Self: sequence of T): sequence of T; extensionmethod;
-begin
- Result := Self.OrderBy(x -> x);
-end;
-
-/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî óáûâàíèþ ïîñëåäîâàòåëüíîñòü
-function OrderDescending(Self: sequence of T): sequence of T; extensionmethod;
-begin
- Result := Self.OrderByDescending(x -> x);
-end;
-
-/// Âîçâðàùàåò ìíîæåñòâî HashSet ïî äàííîé ïîñëåäîâàòåëüíîñòè
-function ToHashSet(Self: sequence of T): HashSet; extensionmethod;
-begin
- Result := new HashSet(Self);
-end;
-
-/// Âîçâðàùàåò ìíîæåñòâî SortedSet ïî äàííîé ïîñëåäîâàòåëüíîñòè
-function ToSortedSet(Self: sequence of T): SortedSet; extensionmethod;
-begin
- Result := new SortedSet(Self);
-end;
-
-/// Âîçâðàùàåò LinkedList ïî äàííîé ïîñëåäîâàòåëüíîñòè
-function ToLinkedList(Self: sequence of T): LinkedList; extensionmethod;
-begin
- Result := new LinkedList(Self);
-end;
-
-// Äîïîëíåíèÿ ôåâðàëü 2016: MinBy, MaxBy, TakeLast, Slice, Cartesian, SplitAt,
-// Partition, ZipTuple, UnZipTuple, Interleave, Numerate, Tabulate, Pairwise, Batch
-
-/// Âîçâðàùàåò ïåðâûé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìèíèìàëüíûì çíà÷åíèåì êëþ÷à
-function MinBy(Self: sequence of T; selector: T->TKey): T; extensionmethod;
-begin
- if selector = nil then
- raise new ArgumentNullException('selector');
- if not Self.Any() then
- raise new InvalidOperationException('Empty sequence');
-
- var comp := Comparer.Default;
- Result := Self.Aggregate((min, x)-> comp.Compare(selector(x), selector(min)) < 0 ? x : min);
-end;
-
-/// Âîçâðàùàåò ïåðâûé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìàêñèìàëüíûì çíà÷åíèåì êëþ÷à
-function MaxBy(Self: sequence of T; selector: T->TKey): T; extensionmethod;
-begin
- if selector = nil then
- raise new ArgumentNullException('selector');
- if not Self.Any() then
- raise new InvalidOperationException('Empty sequence');
-
- var comp := Comparer.Default;
- Result := Self.Aggregate((max, x)-> comp.Compare(selector(x), selector(max)) > 0 ? x : max);
-end;
-
-/// Âîçâðàùàåò ïîñëåäíèé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìèíèìàëüíûì çíà÷åíèåì êëþ÷à
-function LastMinBy(Self: sequence of T; selector: T->TKey): T; extensionmethod;
-begin
- if selector = nil then
- raise new ArgumentNullException('selector');
- if not Self.Any() then
- raise new InvalidOperationException('Empty sequence');
-
- var comp := Comparer.Default;
- Result := Self.Aggregate((min, x)-> comp.Compare(selector(x), selector(min)) <= 0 ? x : min);
-end;
-
-/// Âîçâðàùàåò ïîñëåäíèé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìàêñèìàëüíûì çíà÷åíèåì êëþ÷à
-function LastMaxBy(Self: sequence of T; selector: T->TKey): T; extensionmethod;
-begin
- if selector = nil then
- raise new ArgumentNullException('selector');
- if not Self.Any() then
- raise new InvalidOperationException('Empty sequence');
-
- var comp := Comparer.Default;
- Result := Self.Aggregate((max, x)-> comp.Compare(selector(x), selector(max)) >= 0 ? x : max);
-end;
-
-/// Âîçâðàùàåò ïîñëåäíèå count ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè
-function TakeLast(Self: sequence of T; count: integer): sequence of T; extensionmethod;
-begin
- Result := Self.Reverse.Take(count).Reverse;
-end;
-
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü áåç ïîñëåäíèõ count ýëåìåíòîâ
-function SkipLast(self: sequence of T; count: integer := 1): sequence of T; extensionmethod;
-begin
- Result := Self.Reverse.Skip(count).Reverse;
-end;
-
-/// Äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé
-function Cartesian(Self: sequence of T; b: sequence of T1): sequence of (T, T1); extensionmethod;
-begin
- if b = nil then
- raise new System.ArgumentNullException('b');
-
- foreach var x in Self do
- foreach var y in b do
- yield (x, y)
-end;
-
-/// Äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé
-function Cartesian(Self: sequence of T; b: sequence of T1; func: (T,T1)->T2): sequence of T2; extensionmethod;
-begin
- if b = nil then
- raise new System.ArgumentNullException('b');
-
- foreach var x in Self do
- foreach var y in b do
- yield func(x, y)
-end;
-
-/// Ðàçáèâàåò ïîñëåäîâàòåëüíîñòè íà äâå â ïîçèöèè ind
-function SplitAt(Self: sequence of T; ind: integer): (sequence of T, sequence of T); extensionmethod;
-begin
- Result := (Self.Take(ind), Self.Skip(ind));
-end;
-
-// ToDo: òî æå äëÿ TakeWhile
-
-// ToDo: SequenceCompare
-
-/// Ðàçäåëÿåò ïîñëåäîâàòåëüíîñòè íà äâå ïî çàäàííîìó óñëîâèþ
-function Partition(Self: sequence of T; cond: T->boolean): (sequence of T, sequence of T); extensionmethod;
-begin
- Result := (Self.Where(cond), Self.Where(x -> not cond(x)));
-end;
-
-/// Ðàçäåëÿåò ïîñëåäîâàòåëüíîñòè íà äâå ïî çàäàííîìó óñëîâèþ, â êîòîðîì ó÷àñòâóåò èíäåêñ
-function Partition(Self: sequence of T; cond: (T,integer)->boolean): (sequence of T, sequence of T); extensionmethod;
-begin
- Result := (Self.Where(cond), Self.Where((x, i)-> not cond(x, i)));
-end;
-
-/// Îáúåäèíÿåò äâå ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü äâóõýëåìåíòíûõ êîðòåæåé
-function ZipTuple(Self: sequence of T; a: sequence of T1): sequence of (T, T1); extensionmethod;
-begin
- if a = nil then
- raise new System.ArgumentNullException('a');
- Result := Self.Zip(a, (x, y)-> (x, y));
-end;
-
-/// Îáúåäèíÿåò òðè ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü òðåõýëåìåíòíûõ êîðòåæåé
-function ZipTuple(Self: sequence of T; a: sequence of T1; b: sequence of T2): sequence of (T, T1, T2); extensionmethod;
-begin
- if a = nil then
- raise new System.ArgumentNullException('a');
- if b = nil then
- raise new System.ArgumentNullException('b');
- Result := Self.Zip(a, (x, y)-> (x, y)).Zip(b, (p, z)-> (p[0], p[1], z));
-end;
-
-/// Îáúåäèíÿåò ÷åòûðå ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü ÷åòûðåõýëåìåíòíûõ êîðòåæåé
-function ZipTuple(Self: sequence of T; a: sequence of T1; b: sequence of T2; c: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod;
-begin
- if a = nil then
- raise new System.ArgumentNullException('a');
- if b = nil then
- raise new System.ArgumentNullException('b');
- if c = nil then
- raise new System.ArgumentNullException('c');
- Result := Self.Zip(a, (x, y)-> (x, y)).Zip(b, (p, z)-> (p[0], p[1], z)).Zip(c, (p, z)-> (p[0], p[1], p[2], z));
-end;
-
-/// Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü äâóõýëåìåíòíûõ êîðòåæåé íà äâå ïîñëåäîâàòåëüíîñòè
-function UnZipTuple(Self: sequence of (T, T1)): (sequence of T, sequence of T1); extensionmethod;
-begin
- Result := (Self.Select(x -> x[0]), Self.Select(x -> x[1]))
-end;
-
-/// Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü òðåõýëåìåíòíûõ êîðòåæåé íà òðè ïîñëåäîâàòåëüíîñòè
-function UnZipTuple(Self: sequence of (T, T1, T2)): (sequence of T, sequence of T1, sequence of T2); extensionmethod;
-begin
- Result := (Self.Select(x -> x[0]), Self.Select(x -> x[1]), Self.Select(x -> x[2]))
-end;
-
-/// Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü ÷åòûðåõýëåìåíòíûõ êîðòåæåé íà ÷åòûðå ïîñëåäîâàòåëüíîñòè
-function UnZipTuple(Self: sequence of (T, T1, T2, T3)): (sequence of T, sequence of T1, sequence of T2, sequence of T3); extensionmethod;
-begin
- Result := (Self.Select(x -> x[0]), Self.Select(x -> x[1]), Self.Select(x -> x[2]), Self.Select(x -> x[3]))
-end;
-
-// ToDo - ñäåëàòü UnZipTuple ñ ôóíêöèåé-ïðîåêöèåé
-
-/// ×åðåäóåò ýëåìåíòû äâóõ ïîñëåäîâàòåëüíîñòåé
-function Interleave(Self: sequence of T; a: sequence of T): sequence of T; extensionmethod;
-begin
- if a = nil then
- raise new System.ArgumentNullException('a');
- Result := Self.ZipTuple(a).SelectMany(x -> Seq(x[0], x[1]))
-end;
-
-/// ×åðåäóåò ýëåìåíòû òðåõ ïîñëåäîâàòåëüíîñòåé
-function Interleave(Self: sequence of T; a, b: sequence of T): sequence of T; extensionmethod;
-begin
- if a = nil then
- raise new System.ArgumentNullException('a');
- if b = nil then
- raise new System.ArgumentNullException('b');
- Result := Self.ZipTuple(a, b).SelectMany(x -> Seq(x[0], x[1], x[2]))
-end;
-
-/// ×åðåäóåò ýëåìåíòû ÷åòûðåõ ïîñëåäîâàòåëüíîñòåé
-function Interleave(Self: sequence of T; a, b, c: sequence of T): sequence of T; extensionmethod;
-begin
- if a = nil then
- raise new System.ArgumentNullException('a');
- if b = nil then
- raise new System.ArgumentNullException('b');
- if c = nil then
- raise new System.ArgumentNullException('c');
- Result := Self.ZipTuple(a, b, c).SelectMany(x -> Seq(x[0], x[1], x[2], x[3]))
-end;
-
-/// Íóìåðóåò ïîñëåäîâàòåëüíîñòü ñ åäèíèöû
-function Numerate(Self: sequence of T): sequence of (integer, T); extensionmethod;
-begin
- Result := 1.Step.ZipTuple(Self);
-end;
-
-/// Íóìåðóåò ïîñëåäîâàòåëüíîñòü ñ íîìåðà from
-function Numerate(Self: sequence of T; from: integer): sequence of (integer, T); extensionmethod;
-begin
- Result := from.Step.ZipTuple(Self);
-end;
-
-/// Òàáóëèðóåò ôóíêöèþ ïîñëåäîâàòåëüíîñòüþ
-function Tabulate(Self: sequence of T; F: T->T1): sequence of (T, T1); extensionmethod;
-begin
- Result := Self.Select(x -> (x, f(x)));
-end;
-
-/// Ïðåâðàùàåò ïîñëåäîâàòåëüíîñòü â ïîñëåäîâàòåëüíîñòü ïàð ñîñåäíèõ ýëåìåíòîâ
-function Pairwise(Self: sequence of T): sequence of (T, T); extensionmethod;
-begin
- var previous: T;
- var it := Self.GetEnumerator();
- if (it.MoveNext()) then
- previous := it.Current;
-
- while (it.MoveNext()) do
- begin
- yield (previous, it.Current);
- previous := it.Current;
- end
-end;
-
-/// Ïðåâðàùàåò ïîñëåäîâàòåëüíîñòü â ïîñëåäîâàòåëüíîñòü ïàð ñîñåäíèõ ýëåìåíòîâ, ïðèìåíÿåò func ê êàæäîé ïàðå ïîëó÷åííûõ ýëåìåíòîâ è ïîëó÷àåò íîâóþ ïîñëåäîâàòåëüíîñòü
-function Pairwise(Self: sequence of T; func: (T,T)->Res): sequence of Res; extensionmethod;
-begin
- var previous: T;
- var it := Self.GetEnumerator();
- if (it.MoveNext()) then
- previous := it.Current;
-
- while (it.MoveNext()) do
- begin
- yield func(previous, it.Current);
- previous := it.Current;
- end
- // Result := Self.ZipTuple(Self.Skip(1)).Select(x->func(x[0],x[1]));
-end;
-
-/// Ðàçáèâàåò ïîñëåäîâàòåëüíîñòü íà ñåðèè äëèíû size
-function Batch(Self: sequence of T; size: integer): sequence of sequence of T; extensionmethod;
-begin
- Result := SeqWhile(Self, v -> v.Skip(size), v -> v.Count > 0).Select(v -> v.Take(size))
-end;
-
-/// Ðàçáèâàåò ïîñëåäîâàòåëüíîñòü íà ñåðèè äëèíû size è ïðèìåíÿåò ïðîåêöèþ ê êàæäîé ñåðèè
-function Batch(Self: sequence of T; size: integer; proj: Func, Res>): sequence of Res; extensionmethod;
-begin
- Result := SeqWhile(Self, v -> v.Skip(size), v -> v.Count > 0).Select(v -> v.Take(size)).Select(ss -> proj(ss));
-end;
-
-///--
-function SliceSeqImpl(Self: sequence of T; from, step, count: integer): sequence of T;
-begin
- if step <= 0 then
- raise new ArgumentException(GetTranslation(PARAMETER_STEP_MUST_BE_GREATER_0));
-
- if from < 0 then
- raise new ArgumentException(GetTranslation(PARAMETER_FROM_OUT_OF_RANGE));
-
- Result := Self.Skip(from).Where((x, i)-> i mod step = 0)
-end;
-
-/// Âîçâðàùàåò ñðåç ïîñëåäîâàòåëüíîñòè îò íîìåðà from ñ øàãîì step > 0
-function Slice(Self: sequence of T; from, step: integer): sequence of T; extensionmethod;
-begin
- if step <= 0 then
- raise new ArgumentException(GetTranslation(PARAMETER_STEP_MUST_BE_GREATER_0));
-
- if from < 0 then
- raise new ArgumentException(GetTranslation(PARAMETER_FROM_OUT_OF_RANGE));
-
- Result := Self.Skip(from).Where((x, i)-> i mod step = 0)
-end;
-
-/// Âîçâðàùàåò ñðåç ïîñëåäîâàòåëüíîñòè îò íîìåðà from ñ øàãîì step > 0 äëèíû íå áîëåå count
-function Slice(Self: sequence of T; from, step, count: integer): sequence of T; extensionmethod;
-begin
- if step <= 0 then
- raise new ArgumentException(GetTranslation(PARAMETER_STEP_MUST_BE_GREATER_0));
-
- if from < 0 then
- raise new ArgumentException(GetTranslation(PARAMETER_FROM_OUT_OF_RANGE));
-
- Result := Self.Skip(from).Where((x, i)-> i mod step = 0).Take(count)
-end;
-
-// Äîïîëíåíèÿ èþëü 2016: Incremental
-///--
-function IncrementalSeq(Self: sequence of integer): sequence of integer;
-begin
- var iter := Self.GetEnumerator();
- if iter.MoveNext() then
- begin
- var prevItem := iter.Current;
- while iter.MoveNext() do
- begin
- var nextItem := iter.Current;
- yield nextItem - prevItem;
- prevItem := nextItem;
- end
- end
-end;
-
-///--
-function IncrementalSeq(Self: sequence of real): sequence of real;
-begin
- var iter := Self.GetEnumerator();
- if iter.MoveNext() then
- begin
- var prevItem := iter.Current;
- while iter.MoveNext() do
- begin
- var nextItem := iter.Current;
- yield nextItem - prevItem;
- prevItem := nextItem;
- end
- end
-end;
-
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè
-function Incremental(Self: sequence of integer): sequence of integer; extensionmethod;
-begin
- Result := IncrementalSeq(Self);
-end;
-
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè
-function Incremental(Self: array of integer): sequence of integer; extensionmethod;
-begin
- Result := IncrementalSeq(Self);
-end;
-
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè
-function Incremental(Self: List): sequence of integer; extensionmethod;
-begin
- Result := IncrementalSeq(Self);
-end;
-
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè
-function Incremental(Self: LinkedList): sequence of integer; extensionmethod;
-begin
- Result := IncrementalSeq(Self);
-end;
-
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè
-function Incremental(Self: sequence of real): sequence of real; extensionmethod;
-begin
- Result := IncrementalSeq(Self);
-end;
-
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè
-function Incremental(Self: array of real): sequence of real; extensionmethod;
-begin
- Result := IncrementalSeq(Self);
-end;
-
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè
-function Incremental(Self: List): sequence of real; extensionmethod;
-begin
- Result := IncrementalSeq(Self);
-end;
-
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè
-function Incremental(Self: LinkedList): sequence of real; extensionmethod;
-begin
- Result := IncrementalSeq(Self);
-end;
-
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè.  êà÷åñòâå ôóíêöèè ðàçíîñòè èñïîëüçóåòñÿ func
-function Incremental(Self: sequence of T; func: (T,T)->T1): sequence of T1; extensionmethod;
-begin
- var iter := Self.GetEnumerator();
- if iter.MoveNext() then
- begin
- var prevItem := iter.Current;
- while iter.MoveNext() do
- begin
- var nextItem := iter.Current;
- yield func(prevItem, nextItem);
- prevItem := nextItem;
- end
- end
-end;
-
-/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè.  êà÷åñòâå ôóíêöèè ðàçíîñòè èñïîëüçóåòñÿ func
-function Incremental(Self: sequence of T; func: (T,T,integer)->T1): sequence of T1; extensionmethod;
-begin
- var iter := Self.GetEnumerator();
- if iter.MoveNext() then
- begin
- var ind := 0;
- var prevItem := iter.Current;
- while iter.MoveNext() do
- begin
- var nextItem := iter.Current;
- ind += 1;
- yield func(prevItem, nextItem, ind);
- prevItem := nextItem;
- end
- end
-end;
-
-/// Ãðóïïèðóåò îäèíàêîâûå ïîäðÿä èäóùèå ýëåìåíòû, ïîëó÷àÿ ïîñëåäîâàòåëüíîñòü ìàññèâîâ
-function AdjacentGroup(Self: sequence of T): sequence of array of T; extensionmethod;
-begin
- var c := new AdjGroupClass(Self);
- while c.fin do
- yield c.TakeGroup().ToArray;
-end;
-
-// ToDo Ñäåëàòü AdjacentGroup ñ ôóíêöèåé ñðàâíåíèÿ
-
-// -----------------------------------------------------
-//>> Ìåòîäû ðàñøèðåíèÿ ñïèñêîâ # Extension methods for List T
-// -----------------------------------------------------
-
-/// Ïåðåìåøèâàåò ýëåìåíòû ñïèñêà ñëó÷àéíûì îáðàçîì
-function Shuffle(Self: List): List; extensionmethod;
-begin
- var n := Self.Count;
- for var i := 0 to n - 1 do
- begin
- var r := PABCSystem.Random(n);
- var v := Self[i];
- Self[i] := Self[r];
- Self[r] := v;
- end;
- Result := Self;
-end;
-
-/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1
-function AdjacentFind(Self: IList; start: integer := 0): integer; extensionmethod;
-begin
- Result := -1;
- for var i := start to Self.Count - 2 do
- if Self[i] = Self[i + 1] then
- begin
- Result := i;
- exit;
- end;
-end;
-
-/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ, èñïîëüçóÿ ôóíêöèþ ñðàâíåíèÿ eq, è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1
-function AdjacentFind(Self: IList; eq: (T,T)->boolean; start: integer := 0): integer; extensionmethod;
-begin
- Result := -1;
- for var i := start to Self.Count - 2 do
- if eq(Self[i], Self[i + 1]) then
- begin
- Result := i;
- exit;
- end;
-end;
-
-/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìèíèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index
-function IndexMin(Self: IList; index: integer := 0): integer; extensionmethod;where T: IComparable;
-begin
- var min := Self[index];
- Result := index;
- for var i := index + 1 to Self.Count - 1 do
- if Self[i].CompareTo(min) < 0 then
- begin
- Result := i;
- min := Self[i];
- end;
-end;
-
-/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìàêñèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index
-function IndexMax(self: IList; index: integer := 0): integer; extensionmethod;where T: System.IComparable;
-begin
- var max := Self[index];
- Result := index;
- for var i := index + 1 to Self.Count - 1 do
- if Self[i].CompareTo(max) > 0 then
- begin
- Result := i;
- max := Self[i];
- end;
-end;
-
-/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà
-function LastIndexMin(Self: IList): integer; extensionmethod;where T: System.IComparable;
-begin
- var min := Self[Self.Count - 1];
- Result := Self.Count - 1;
- for var i := Self.Count - 2 downto 0 do
- if Self[i].CompareTo(min) < 0 then
- begin
- Result := i;
- min := Self[i];
- end;
-end;
-
-/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index-1]
-function LastIndexMin(Self: IList; index: integer): integer; extensionmethod;where T: System.IComparable;
-begin
- var min := Self[index];
- Result := index;
- for var i := index - 1 downto 0 do
- if Self[i].CompareTo(min) < 0 then
- begin
- Result := i;
- min := Self[i];
- end;
-end;
-
-/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìàêñèìàëüíîãî ýëåìåíòà
-function LastIndexMax(Self: IList): integer; extensionmethod;where T: System.IComparable;
-begin
- var max := Self[Self.Count - 1];
- Result := Self.Count - 1;
- for var i := Self.Count - 2 downto 0 do
- if Self[i].CompareTo(max) > 0 then
- begin
- Result := i;
- max := Self[i];
- end;
-end;
-
-/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index-1]
-function LastIndexMax(Self: IList; index: integer): integer; extensionmethod;where T: System.IComparable;
-begin
- var max := Self[index];
- Result := index;
- for var i := index - 1 downto 0 do
- if Self[i].CompareTo(max) > 0 then
- begin
- Result := i;
- max := Self[i];
- end;
-end;
-
-/// Çàìåíÿåò â ìàññèâå èëè ñïèñêå âñå âõîæäåíèÿ îäíîãî çíà÷åíèÿ íà äðóãîå
-procedure Replace(Self: IList; oldValue, newValue: T); extensionmethod;
-begin
- for var i := 0 to Self.Count - 1 do
- if Self[i] = oldValue then
- Self[i] := newValue;
-end;
-
-/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà èëè ñïèñêà ïî çàäàííîìó ïðàâèëó
-procedure Transform(Self: IList; f: T->T); extensionmethod;
-begin
- for var i := 0 to Self.Count - 1 do
- Self[i] := f(Self[i]);
-end;
-
-/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà èëè ñïèñêà ïî çàäàííîìó ïðàâèëó
-procedure Transform(Self: IList; f: (T,integer)->T); extensionmethod;
-begin
- for var i := 0 to Self.Count - 1 do
- Self[i] := f(Self[i],i);
-end;
-
-/// Çàïîëíÿåò ýëåìåíòû ìàññèâà èëè ñïèñêà çíà÷åíèÿìè, âû÷èñëÿåìûìè ïî íåêîòîðîìó ïðàâèëó
-procedure Fill(Self: IList; f: integer->T); extensionmethod;
-begin
- for var i := 0 to Self.Count - 1 do
- Self[i] := f(i);
-end;
-
-///--
-function CreateSliceFromListInternal(Self: List; from, step, count: integer): List;
-begin
- Result := new List(count);
-
- var f := from;
- loop count do
- begin
- Result.Add(Self[f]);
- f += step;
- end;
-end;
-
-///--
-procedure CorrectCountForSlice(Len, from, step: integer; var count: integer);
-begin
- if step = 0 then
- raise new ArgumentException(GetTranslation(PARAMETER_STEP_MUST_BE_NOT_EQUAL_0));
-
- if count < 0 then
- raise new ArgumentException(GetTranslation(PARAMETER_COUNT_MUST_BE_GREATER_0));
-
- if (from < 0) or (from > Len - 1) then
- raise new ArgumentException(GetTranslation(PARAMETER_FROM_OUT_OF_RANGE));
-
- var cnt := step > 0 ? Len - from : from + 1;
- var cntstep := (cnt - 1) div abs(step) + 1;
- if count > cntstep then
- count := cntstep;
-end;
-
-///--
-function SliceListImpl(Self: List; from, step, count: integer): List;
-begin
- CorrectCountForSlice(Self.Count, from, step, count);
- Result := CreateSliceFromListInternal(Self, from, step, count);
-end;
-
-/// Âîçâðàùàåò ñðåç ñïèñêà îò èíäåêñà from ñ øàãîì step
-function Slice(Self: List; from, step: integer): List |