IsOrdered метод расширения

This commit is contained in:
Mikhalkovich Stanislav 2025-05-09 16:39:12 +03:00
parent 4c56298bfb
commit 255533f407
6 changed files with 199 additions and 7 deletions

View file

@ -15,7 +15,7 @@ internal static class RevisionClass
public const string Major = "3";
public const string Minor = "10";
public const string Build = "3";
public const string Revision = "3619";
public const string Revision = "3620";
public const string MainVersion = Major + "." + Minor;
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;

View file

@ -1,4 +1,4 @@
%MINOR%=10
%REVISION%=3619
%COREVERSION%=3
%REVISION%=3620
%MINOR%=10
%MAJOR%=3

View file

@ -1 +1 @@
3.10.3.3619
3.10.3.3620

View file

@ -1 +1 @@
!define VERSION '3.10.3.3619'
!define VERSION '3.10.3.3620'

View file

@ -11195,6 +11195,66 @@ begin
Result := Self.OrderByDescending(x -> x, System.StringComparer.Ordinal);
end;
/// Проверяет, отсортирована ли последовательность по возрастанию
function IsOrdered<T>(self: sequence of T): boolean; extensionmethod; where T: System.IComparable<T>;
begin
var prev: T;
var first := True;
foreach var current in self do
begin
if not first and (prev.CompareTo(current) > 0) then
exit(False);
prev := current;
first := False;
end;
Result := True;
end;
/// Проверяет, отсортирована ли последовательность по возрастанию в порядке, заданном компаратором comparer
function IsOrdered<T>(self: sequence of T; comparer: IComparer<T>): boolean; extensionmethod;
begin
var prev: T;
var first := True;
foreach var current in self do
begin
if not first and (comparer.Compare(prev, current) > 0) then
exit(False);
prev := current;
first := False;
end;
Result := True;
end;
/// Проверяет, отсортирована ли последовательность по убыванию
function IsOrderedDescending<T>(self: sequence of T): boolean; extensionmethod; where T: System.IComparable<T>;
begin
var prev: T;
var first := True;
foreach var current in self do
begin
if not first and (prev.CompareTo(current) < 0) then
exit(False);
prev := current;
first := False;
end;
Result := True;
end;
/// Проверяет, отсортирована ли последовательность по убыванию в порядке, заданном компаратором comparer
function IsOrderedDescending<T>(self: sequence of T; comparer: IComparer<T>): boolean; extensionmethod;
begin
var prev: T;
var first := True;
foreach var current in self do
begin
if not first and (comparer.Compare(prev, current) < 0) then // Обратный знак
exit(False);
prev := current;
first := False;
end;
Result := True;
end;
/// Возвращает множество HashSet по данной последовательности
function ToHashSet<T>(Self: sequence of T): HashSet<T>; extensionmethod;
begin
@ -13342,13 +13402,49 @@ begin
System.Array.Copy(a,Self,a.Length);
end;
/// Возвращает индекс последнего элемента массива
function High(Self: System.Array); extensionmethod := High(Self);
/// Возвращает индекс первого элемента массива
function Low(Self: System.Array); extensionmethod := Low(Self);
/// Проверяет, отсортирован ли массив по возрастанию
function IsOrdered<T>(self: array of T): boolean; extensionmethod; where T: System.IComparable<T>;
begin
for var i := 0 to self.High - 1 do
if self[i].CompareTo(self[i + 1]) > 0 then
exit(False);
Result := True;
end;
/// Проверяет, отсортирован ли массив в порядке, заданном компаратором comparer
function IsOrdered<T>(self: array of T; comparer: IComparer<T>): boolean; extensionmethod;
begin
for var i := 0 to self.High - 1 do
if comparer.Compare(self[i], self[i + 1]) > 0 then
exit(False);
Result := True;
end;
/// Проверяет, отсортирован ли массив по убыванию
function IsOrderedDescending<T>(self: array of T): boolean; extensionmethod; where T: System.IComparable<T>;
begin
for var i := 0 to self.High - 1 do
if self[i].CompareTo(self[i + 1]) < 0 then
exit(False);
Result := True;
end;
/// Проверяет, отсортирован ли массив по убыванию в порядке, заданном компаратором comparer
function IsOrderedDescending<T>(self: array of T; comparer: IComparer<T>): boolean; extensionmethod;
begin
for var i := 0 to self.High - 1 do
if comparer.Compare(self[i], self[i + 1]) < 0 then // Обратный знак
exit(False);
Result := True;
end;
/// Возвращает последовательность индексов одномерного массива
function Indices<T>(Self: array of T): sequence of integer; extensionmethod := Range(0, Self.Length - 1);

View file

@ -11195,6 +11195,66 @@ begin
Result := Self.OrderByDescending(x -> x, System.StringComparer.Ordinal);
end;
/// Проверяет, отсортирована ли последовательность по возрастанию
function IsOrdered<T>(self: sequence of T): boolean; extensionmethod; where T: System.IComparable<T>;
begin
var prev: T;
var first := True;
foreach var current in self do
begin
if not first and (prev.CompareTo(current) > 0) then
exit(False);
prev := current;
first := False;
end;
Result := True;
end;
/// Проверяет, отсортирована ли последовательность по возрастанию в порядке, заданном компаратором comparer
function IsOrdered<T>(self: sequence of T; comparer: IComparer<T>): boolean; extensionmethod;
begin
var prev: T;
var first := True;
foreach var current in self do
begin
if not first and (comparer.Compare(prev, current) > 0) then
exit(False);
prev := current;
first := False;
end;
Result := True;
end;
/// Проверяет, отсортирована ли последовательность по убыванию
function IsOrderedDescending<T>(self: sequence of T): boolean; extensionmethod; where T: System.IComparable<T>;
begin
var prev: T;
var first := True;
foreach var current in self do
begin
if not first and (prev.CompareTo(current) < 0) then
exit(False);
prev := current;
first := False;
end;
Result := True;
end;
/// Проверяет, отсортирована ли последовательность по убыванию в порядке, заданном компаратором comparer
function IsOrderedDescending<T>(self: sequence of T; comparer: IComparer<T>): boolean; extensionmethod;
begin
var prev: T;
var first := True;
foreach var current in self do
begin
if not first and (comparer.Compare(prev, current) < 0) then // Обратный знак
exit(False);
prev := current;
first := False;
end;
Result := True;
end;
/// Возвращает множество HashSet по данной последовательности
function ToHashSet<T>(Self: sequence of T): HashSet<T>; extensionmethod;
begin
@ -13342,13 +13402,49 @@ begin
System.Array.Copy(a,Self,a.Length);
end;
/// Возвращает индекс последнего элемента массива
function High(Self: System.Array); extensionmethod := High(Self);
/// Возвращает индекс первого элемента массива
function Low(Self: System.Array); extensionmethod := Low(Self);
/// Проверяет, отсортирован ли массив по возрастанию
function IsOrdered<T>(self: array of T): boolean; extensionmethod; where T: System.IComparable<T>;
begin
for var i := 0 to self.High - 1 do
if self[i].CompareTo(self[i + 1]) > 0 then
exit(False);
Result := True;
end;
/// Проверяет, отсортирован ли массив в порядке, заданном компаратором comparer
function IsOrdered<T>(self: array of T; comparer: IComparer<T>): boolean; extensionmethod;
begin
for var i := 0 to self.High - 1 do
if comparer.Compare(self[i], self[i + 1]) > 0 then
exit(False);
Result := True;
end;
/// Проверяет, отсортирован ли массив по убыванию
function IsOrderedDescending<T>(self: array of T): boolean; extensionmethod; where T: System.IComparable<T>;
begin
for var i := 0 to self.High - 1 do
if self[i].CompareTo(self[i + 1]) < 0 then
exit(False);
Result := True;
end;
/// Проверяет, отсортирован ли массив по убыванию в порядке, заданном компаратором comparer
function IsOrderedDescending<T>(self: array of T; comparer: IComparer<T>): boolean; extensionmethod;
begin
for var i := 0 to self.High - 1 do
if comparer.Compare(self[i], self[i + 1]) < 0 then // Обратный знак
exit(False);
Result := True;
end;
/// Возвращает последовательность индексов одномерного массива
function Indices<T>(Self: array of T): sequence of integer; extensionmethod := Range(0, Self.Length - 1);