Scan стандартный метод расширения

This commit is contained in:
Mikhalkovich Stanislav 2024-03-14 22:02:59 +03:00
parent e5573da41a
commit a7598b50cd
12 changed files with 115 additions and 4 deletions

View file

@ -15,7 +15,7 @@ internal static class RevisionClass
public const string Major = "3";
public const string Minor = "9";
public const string Build = "0";
public const string Revision = "3432";
public const string Revision = "3434";
public const string MainVersion = Major + "." + Minor;
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;

View file

@ -1,4 +1,4 @@
%COREVERSION%=0
%REVISION%=3432
%REVISION%=3434
%MINOR%=9
%MAJOR%=3

Binary file not shown.

View file

@ -145,14 +145,22 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ñðåç ìàññèâà îò èíäåêñà from ñ øàãîì step äëèíû íå áîëåå count</td></tr>
<tr><td><code><b>procedure</b> Sort&lt;T&gt;(Self: <b>array</b> <b>of</b> T);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ìàññèâ ïî âîçðàñòàíèþ</td></tr>
<tr><td><code><b>procedure</b> Sort(Self: <b>array</b> <b>of</b> string);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ìàññèâ ïî âîçðàñòàíèþ</td></tr>
<tr><td><code><b>procedure</b> Sort&lt;T&gt;(Self: <b>array</b> <b>of</b> T; cmp: (T,T) -&gt;integer);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ìàññèâ ïî âîçðàñòàíèþ, èñïîëüçóÿ cmp â êà÷åñòâå ôóíêöèè ñðàâíåíèÿ ýëåìåíòîâ</td></tr>
<tr><td><code><b>procedure</b> Sort&lt;T,T1&gt;(Self: <b>array</b> <b>of</b> T; keySelector: T -&gt; T1);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ìàññèâ ïî âîçðàñòàíèþ ïî êëþ÷ó</td></tr>
<tr><td><code><b>procedure</b> Sort&lt;T&gt;(Self: <b>array</b> <b>of</b> T; keySelector: T -&gt; string);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ìàññèâ ïî âîçðàñòàíèþ ïî êëþ÷ó</td></tr>
<tr><td><code><b>procedure</b> SortDescending&lt;T&gt;(Self: <b>array</b> <b>of</b> T);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ìàññèâ ïî óáûâàíèþ</td></tr>
<tr><td><code><b>procedure</b> SortDescending(Self: <b>array</b> <b>of</b> string);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ìàññèâ ïî óáûâàíèþ</td></tr>
<tr><td><code><b>procedure</b> SortDescending&lt;T,T1&gt;(Self: <b>array</b> <b>of</b> T; keySelector: T -&gt; T1);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ìàññèâ ïî óáûâàíèþ ïî êëþ÷ó</td></tr>
<tr><td><code><b>procedure</b> SortDescending&lt;T&gt;(Self: <b>array</b> <b>of</b> T; keySelector: T -&gt; string);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ìàññèâ ïî óáûâàíèþ ïî êëþ÷ó</td></tr>
<tr><td><code><b>procedure</b> Transform&lt;T&gt;(Self: <b>array</b> <b>of</b> T; f: T-&gt;T);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðåîáðàçóåò ýëåìåíòû ìàññèâà ïî çàäàííîìó ïðàâèëó</td></tr>
<tr><td><code><b>procedure</b> Transform&lt;T&gt;(Self: <b>array</b> <b>of</b> T; f: (T,integer)-&gt;T);</code>

View file

@ -25,6 +25,7 @@
<param name="Keyword" value="PrintLines">
<param name="Keyword" value="Println">
<param name="Keyword" value="Product">
<param name="Keyword" value="Scan">
<param name="Keyword" value="SkipLast">
<param name="Keyword" value="Slice">
<param name="Keyword" value="Sorted">
@ -109,8 +110,12 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðåâðàùàåò ïîñëåäîâàòåëüíîñòü â ïîñëåäîâàòåëüíîñòü n-îê ñîñåäíèõ ýëåìåíòîâ</td></tr>
<tr><td><code><b>function</b> Order&lt;T&gt;(Self: <b>sequence </b> <b>of</b> T): <b>sequence </b> <b>of</b> T;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò îòñîðòèðîâàííóþ ïî âîçðàñòàíèþ ïîñëåäîâàòåëüíîñòü</td></tr>
<tr><td><code><b>function</b> Order(Self: <b>sequence </b> <b>of</b> string): <b>sequence </b> <b>of</b> string;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает отсортированную по возрастанию последовательность</td></tr>
<tr><td><code><b>function</b> OrderDescending&lt;T&gt;(Self: <b>sequence </b> <b>of</b> T): <b>sequence </b> <b>of</b> T;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò îòñîðòèðîâàííóþ ïî óáûâàíèþ ïîñëåäîâàòåëüíîñòü</td></tr>
<tr><td><code><b>function</b> OrderDescending(Self: <b>sequence </b> <b>of</b> string): <b>sequence </b> <b>of</b> string;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает отсортированную по убыванию последовательность</td></tr>
<tr><td><code><b>function</b> Pairwise&lt;T&gt;(Self: <b>sequence </b> <b>of</b> T): <b>sequence </b> <b>of</b> (T, T);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðåâðàùàåò ïîñëåäîâàòåëüíîñòü â ïîñëåäîâàòåëüíîñòü ïàð ñîñåäíèõ ýëåìåíòîâ</td></tr>
<tr><td><code><b>function</b> Pairwise&lt;T, Res&gt;(Self: <b>sequence </b> <b>of</b> T; func: (T,T)-&gt;Res): <b>sequence </b> <b>of</b> Res;</code>
@ -149,6 +154,10 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ïðîèçâåäåíèå ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè, ñïðîåêòèðîâàííûõ íà ÷èñëîâîå çíà÷åíèå</td></tr>
<tr><td><code><b>function</b> Product(Self: <b>sequence </b> <b>of</b> BigInteger): BigInteger;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ïðîèçâåäåíèå ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè</td></tr>
<tr><td><code><b>function</b> Scan&lt;T&gt;(Self: <b>sequence </b> <b>of</b> T; func: (T,T) -&gt; T): <b>sequence </b> <b>of</b> T;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает последовательность, в которой первый элемент равен первому элементу исходной последовательности, а каждый следующий -результат применения функции func к предыдущему элементу новой последовательности и текущему элементу исходной</td></tr>
<tr><td><code><b>function</b> Scan&lt;T,T1&gt;(Self: <b>sequence </b> <b>of</b> T; first: T1; func: (T1,T) -&gt; T1): <b>sequence </b> <b>of</b> T1;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает последовательность, в которой первый элемент равен first, а каждый следующий -результат применения функции func к предыдущему элементу новой последовательности и текущему элементу исходной</td></tr>
<tr><td><code><b>function</b> SkipLast&lt;T&gt;(self: <b>sequence </b> <b>of</b> T; count: integer := 1): <b>sequence </b> <b>of</b> T;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü áåç ïîñëåäíèõ count ýëåìåíòîâ</td></tr>
<tr><td><code><b>function</b> Slice&lt;T&gt;(Self: <b>sequence </b> <b>of</b> T; from, step: integer): <b>sequence </b> <b>of</b> T;</code>

View file

@ -51,27 +51,43 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåøèâàåò ñïèñîê ñëó÷àéíûì îáðàçîì</td></tr>
<tr><td><code><b>procedure</b> Sort&lt;T&gt;(a: <b>array</b> <b>of</b> T);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî âîçðàñòàíèþ</td></tr>
<tr><td><code><b>procedure</b> Sort(a: <b>array</b> <b>of</b> string);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî âîçðàñòàíèþ</td></tr>
<tr><td><code><b>procedure</b> Sort&lt;T&gt;(a: <b>array</b> <b>of</b> T; cmp: (T,T)-&gt;integer);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ cmp</td></tr>
<tr><td><code><b>procedure</b> Sort&lt;T&gt;(a: <b>array</b> <b>of</b> T; less: (T,T)-&gt;boolean);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ less</td></tr>
<tr><td><code><b>procedure</b> Sort&lt;T,TKey&gt;(a: <b>array</b> <b>of</b> T; keySelector: T-&gt;TKey);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êëþ÷ó</td></tr>
<tr><td><code><b>procedure</b> Sort&lt;T&gt;(a: <b>array</b> <b>of</b> T; keySelector: T-&gt;string);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êëþ÷ó</td></tr>
<tr><td><code><b>procedure</b> Sort&lt;T&gt;(l: List&lt;T&gt;);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ñïèñîê ïî âîçðàñòàíèþ</td></tr>
<tr><td><code><b>procedure</b> Sort(<b>var</b> l: List&lt;string&gt;);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ñïèñîê ïî âîçðàñòàíèþ</td></tr>
<tr><td><code><b>procedure</b> Sort&lt;T&gt;(l: List&lt;T&gt;; cmp: (T,T)-&gt;integer);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ñïèñîê ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ cmp</td></tr>
<tr><td><code><b>procedure</b> Sort&lt;T&gt;(l: List&lt;T&gt;; less: (T,T)-&gt;boolean);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ñïèñîê ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ less</td></tr>
<tr><td><code><b>procedure</b> Sort&lt;T,T1&gt;(<b>var</b> l: List&lt;T&gt;; keySelector: T-&gt;T1);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ñïèñîê ïî âîçðàñòàíèþ ïî êëþ÷ó</td></tr>
<tr><td><code><b>procedure</b> Sort&lt;T&gt;(<b>var</b> l: List&lt;T&gt;; keySelector: T-&gt;string);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ñïèñîê ïî âîçðàñòàíèþ ïî êëþ÷ó</td></tr>
<tr><td><code><b>procedure</b> SortDescending&lt;T&gt;(a: <b>array</b> <b>of</b> T);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî óáûâàíèþ</td></tr>
<tr><td><code><b>procedure</b> SortDescending(a: <b>array</b> <b>of</b> string);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî óáûâàíèþ</td></tr>
<tr><td><code><b>procedure</b> SortDescending&lt;T,T1&gt;(<b>var</b> a: <b>array</b> <b>of</b> T; keySelector: T-&gt;T1);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî óáûâàíèþ ïî êëþ÷ó</td></tr>
<tr><td><code><b>procedure</b> SortDescending&lt;T&gt;(<b>var</b> a: <b>array</b> <b>of</b> T; keySelector: T-&gt;string);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî óáûâàíèþ ïî êëþ÷ó</td></tr>
<tr><td><code><b>procedure</b> SortDescending&lt;T&gt;(l: List&lt;T&gt;);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ñïèñîê ïî óáûâàíèþ</td></tr>
<tr><td><code><b>procedure</b> SortDescending(<b>var</b> l: List&lt;string&gt;);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ñïèñîê ïî óáûâàíèþ</td></tr>
<tr><td><code><b>procedure</b> SortDescending&lt;T,T1&gt;(<b>var</b> l: List&lt;T&gt;; keySelector: T-&gt;T1);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ñïèñîê ïî óáûâàíèþ ïî êëþ÷ó</td></tr>
<tr><td><code><b>procedure</b> SortDescending&lt;T&gt;(<b>var</b> l: List&lt;T&gt;; keySelector: T-&gt;string);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîðòèðóåò ñïèñîê ïî óáûâàíèþ ïî êëþ÷ó</td></tr>
</table>
</body></HTML>

View file

@ -1 +1 @@
3.9.0.3432
3.9.0.3434

View file

@ -1 +1 @@
!define VERSION '3.9.0.3432'
!define VERSION '3.9.0.3434'

View file

@ -10188,6 +10188,37 @@ begin
end;
end;
// SSM 14/3/2024 - Scan
/// Возвращает последовательность, в которой первый элемент равен первому элементу исходной последовательности, а каждый следующий -
///результат применения функции func к предыдущему элементу новой последовательности и текущему элементу исходной
function Scan<T>(Self: sequence of T; func: (T,T) -> T): sequence of T; extensionmethod;
begin
var e := Self.GetEnumerator;
e.MoveNext;
var s := e.Current;
yield s;
while e.MoveNext do
begin
s := func(s,e.Current);
yield s;
end;
end;
/// Возвращает последовательность, в которой первый элемент равен first, а каждый следующий -
///результат применения функции func к предыдущему элементу новой последовательности и текущему элементу исходной
function Scan<T,T1>(Self: sequence of T; first: T1; func: (T1,T) -> T1): sequence of T1; extensionmethod;
begin
var e := Self.GetEnumerator;
var s := first;
yield s;
while e.MoveNext do
begin
s := func(s,e.Current);
yield s;
end;
end;
/// Возвращает сумму элементов последовательности, спроектированных на числовое значение - пока не работает для Lst(1,2,3)
{function Sum<T>(Self: sequence of T; f: T->BigInteger): BigInteger; extensionmethod;
begin

View file

@ -10188,6 +10188,37 @@ begin
end;
end;
// SSM 14/3/2024 - Scan
/// Возвращает последовательность, в которой первый элемент равен первому элементу исходной последовательности, а каждый следующий -
///результат применения функции func к предыдущему элементу новой последовательности и текущему элементу исходной
function Scan<T>(Self: sequence of T; func: (T,T) -> T): sequence of T; extensionmethod;
begin
var e := Self.GetEnumerator;
e.MoveNext;
var s := e.Current;
yield s;
while e.MoveNext do
begin
s := func(s,e.Current);
yield s;
end;
end;
/// Возвращает последовательность, в которой первый элемент равен first, а каждый следующий -
///результат применения функции func к предыдущему элементу новой последовательности и текущему элементу исходной
function Scan<T,T1>(Self: sequence of T; first: T1; func: (T1,T) -> T1): sequence of T1; extensionmethod;
begin
var e := Self.GetEnumerator;
var s := first;
yield s;
while e.MoveNext do
begin
s := func(s,e.Current);
yield s;
end;
end;
/// Возвращает сумму элементов последовательности, спроектированных на числовое значение - пока не работает для Lst(1,2,3)
{function Sum<T>(Self: sequence of T; f: T->BigInteger): BigInteger; extensionmethod;
begin

View file

@ -3101,6 +3101,22 @@
<member name="M:PartialSum(System.Collections.Generic.IEnumerable{System.Numerics.BigInteger})">
<summary>Возвращает последовательность частичных сумм элементов последовательности</summary>
</member>
<member name="M:&lt;yield_helper_error_checkerr&gt;Scan``1(System.Collections.Generic.IEnumerable{``0},System.Func{``0,``0,``0})">
<summary>Возвращает последовательность, в которой первый элемент равен первому элементу исходной последовательности, а каждый следующий -
результат применения функции func к предыдущему элементу новой последовательности и текущему элементу исходной</summary>
</member>
<member name="M:Scan``1(System.Collections.Generic.IEnumerable{``0},System.Func{``0,``0,``0})">
<summary>Возвращает последовательность, в которой первый элемент равен первому элементу исходной последовательности, а каждый следующий -
результат применения функции func к предыдущему элементу новой последовательности и текущему элементу исходной</summary>
</member>
<member name="M:&lt;yield_helper_error_checkerr&gt;Scan``2(System.Collections.Generic.IEnumerable{``0},``1,System.Func{``1,``0,``1})">
<summary>Возвращает последовательность, в которой первый элемент равен first, а каждый следующий -
результат применения функции func к предыдущему элементу новой последовательности и текущему элементу исходной</summary>
</member>
<member name="M:Scan``2(System.Collections.Generic.IEnumerable{``0},``1,System.Func{``1,``0,``1})">
<summary>Возвращает последовательность, в которой первый элемент равен first, а каждый следующий -
результат применения функции func к предыдущему элементу новой последовательности и текущему элементу исходной</summary>
</member>
<member name="M:Sum(System.Collections.Generic.IEnumerable{System.Numerics.BigInteger})">
<summary>Возвращает сумму элементов последовательности</summary>
</member>

Binary file not shown.