GCD LCM в PABCSystem
This commit is contained in:
parent
5ee38daf37
commit
c63d812a5c
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "11";
|
||||
public const string Build = "0";
|
||||
public const string Revision = "3672";
|
||||
public const string Revision = "3673";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%COREVERSION%=0
|
||||
%REVISION%=3672
|
||||
%MINOR%=11
|
||||
%REVISION%=3673
|
||||
%COREVERSION%=0
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
|
|
@ -1,9 +1,7 @@
|
|||
// Стандартные функции UpperCase LowerCase
|
||||
var c: char;
|
||||
|
||||
// Стандартные функции UpperCase и LowerCase
|
||||
begin
|
||||
c := 'д';
|
||||
writelnFormat('Символ {0} в верхнем регистре: {1}',c,UpperCase(c));
|
||||
var c := 'д';
|
||||
Println($'Символ {c} в верхнем регистре: {UpperCase(c)}');
|
||||
c := 'F';
|
||||
writelnFormat('Символ {0} в нижнем регистре: {1}',c,LowerCase(c));
|
||||
Println($'Символ {c} в нижнем регистре: {LowerCase(c)}');
|
||||
end.
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
// Таблица символов и их кодов
|
||||
// Таблица символов и их кодов
|
||||
begin
|
||||
for var i:=32 to 255 do
|
||||
begin
|
||||
write(i:4,chr(i):2,' ');
|
||||
if i mod 8 = 7 then writeln;
|
||||
Write(i:4,chr(i):2,' ');
|
||||
if i mod 8 = 7 then Writeln;
|
||||
end;
|
||||
end.
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
// Строки. Операция + и оператор +=. Доступ по индексу
|
||||
|
||||
var s: string := 'Pascal';
|
||||
// Строки. Операция + и оператор +=. Доступ по индексу
|
||||
|
||||
begin
|
||||
writeln(s);
|
||||
var s := 'Pascal';
|
||||
Println(s);
|
||||
s := s + '.';
|
||||
writeln(s);
|
||||
Println(s);
|
||||
s += 'NET';
|
||||
writeln(s);
|
||||
writeln(s[1],' ',s[2],' ',s[3],' ',s[4],' ',s[5],' ',s[6]);
|
||||
Println(s);
|
||||
Println(s[1], s[2], s[3], s[4], s[5], s[6]);
|
||||
end.
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
// Строки. Процедура SetLength, функция Length и свойство Length
|
||||
|
||||
var s: string;
|
||||
// Строки. Процедура SetLength, функция Length и свойство Length
|
||||
|
||||
begin
|
||||
writeln('Length(s) = ',Length(s));
|
||||
SetLength(s,3);
|
||||
var s := '';
|
||||
Println('Length(s) =', s.Length);
|
||||
SetLength(s, 3);
|
||||
s[1] := 'N';
|
||||
s[2] := 'E';
|
||||
s[3] := 'T';
|
||||
writeln(s,' Length(s) = ',Length(s));
|
||||
for var i:= 1 to s.Length do
|
||||
write(s[i],' ');
|
||||
Println(s, ' Length(s) =', s.Length);
|
||||
for var i := 1 to s.Length do
|
||||
Print(s[i]);
|
||||
Println;
|
||||
end.
|
||||
|
|
@ -1,12 +1,10 @@
|
|||
// Строки. Строка может иметь произвольную длину
|
||||
var s: string;
|
||||
|
||||
// Строки. Строка может иметь произвольную длину
|
||||
begin
|
||||
s := 'abcdefghijklmnopqrstuvwxyz';
|
||||
s := s + Uppercase(s);
|
||||
s += s;
|
||||
s += s;
|
||||
var s := 'abcdefghijklmnopqrstuvwxyz';
|
||||
s := s + UpperCase(s);
|
||||
s += s;
|
||||
writeln('Длина строки = ',s.Length);
|
||||
writeln('Cтрока: ',s);
|
||||
s += s;
|
||||
s += s;
|
||||
Println('Длина строки =', s.Length);
|
||||
Println('Строка:', s);
|
||||
end.
|
||||
|
|
@ -1,12 +1,10 @@
|
|||
// Строки фиксированной длины. Длина не может быть больше 255
|
||||
var
|
||||
s: string[9];
|
||||
s1: shortstring; // shortstring = string[255]
|
||||
slong: string;
|
||||
|
||||
// Строки фиксированной длины (устарели). Длина не может быть больше 255
|
||||
|
||||
begin
|
||||
slong := 'PascalABC.NET';
|
||||
writeln('Cтрока произвольной длины: ',slong);
|
||||
var s: string[9];
|
||||
var s1: shortstring; // shortstring = string[255]
|
||||
var slong := 'PascalABC.NET';
|
||||
Println('Строка произвольной длины:', slong);
|
||||
s := slong;
|
||||
writeln('Cтрока фиксированной длины обрезается: ',s);
|
||||
Println('Строка фиксированной длины обрезается:', s);
|
||||
end.
|
||||
|
|
@ -1,18 +1,18 @@
|
|||
// Строки. Стандартные подпрограммы работы со строками
|
||||
// Строки. Стандартные подпрограммы работы со строками (Copy устарела - используйте срезы)
|
||||
var
|
||||
s: string := ' Pascal__NET ';
|
||||
s1: string := 'NET';
|
||||
|
||||
begin
|
||||
writeln('Исходная строка: ''',s,'''');
|
||||
Writeln('Исходная строка: ''',s,'''');
|
||||
s := Trim(s);
|
||||
writeln('После вызова функции Trim: ''',s,'''');
|
||||
Writeln('После вызова функции Trim: ''',s,'''');
|
||||
var p := Pos(s1,s);
|
||||
writelnFormat('Позиция подстроки ''{0}'' в строке ''{1}'' равна {2}',s1,s,p);
|
||||
WritelnFormat('Позиция подстроки ''{0}'' в строке ''{1}'' равна {2}',s1,s,p);
|
||||
Delete(s,7,2);
|
||||
writeln('После удаления символов __: ',s);
|
||||
Writeln('После удаления символов __: ',s);
|
||||
Insert('ABC.',s,7);
|
||||
writeln('После вставки подстроки ''ABC.'': ',s);
|
||||
writeln('Первая часть строки: ',Copy(s,1,9));
|
||||
writeln('Последняя часть строки: ',Copy(s,11,3));
|
||||
Writeln('После вставки подстроки ''ABC.'': ',s);
|
||||
Writeln('Первая часть строки: ',Copy(s,1,9));
|
||||
Writeln('Последняя часть строки: ',Copy(s,11,3));
|
||||
end.
|
||||
|
|
@ -1,18 +1,18 @@
|
|||
// Строки. Методы класса string
|
||||
// Строки. Методы класса string
|
||||
var
|
||||
s: string := ' Pascal__NET ';
|
||||
s1: string := 'NET';
|
||||
|
||||
begin
|
||||
writeln('Исходная строка: ''',s,'''');
|
||||
Writeln('Исходная строка: ''',s,'''');
|
||||
s := s.Trim;
|
||||
writeln('После вызова s.Trim: ''',s,'''');
|
||||
Writeln('После вызова s.Trim: ''',s,'''');
|
||||
var p := s.IndexOf(s1); // Индексация - с нуля
|
||||
writelnFormat('Позиция подстроки ''{0}'' в строке ''{1}'' равна {2}',s1,s,p);
|
||||
WritelnFormat('Позиция подстроки ''{0}'' в строке ''{1}'' равна {2}',s1,s,p);
|
||||
s := s.Remove(6,2);
|
||||
writeln('После удаления символов __: ',s);
|
||||
Writeln('После удаления символов __: ',s);
|
||||
s := s.Insert(6,'ABC.');
|
||||
writeln('После вставки подстроки ''ABC.'': ',s);
|
||||
writeln('Первая часть строки: ',s.Substring(0,9));
|
||||
writeln('Последняя часть строки: ',s.Substring(10,3));
|
||||
Writeln('После вставки подстроки ''ABC.'': ',s);
|
||||
Writeln('Первая часть строки: ',s.Substring(0,9));
|
||||
Writeln('Последняя часть строки: ',s.Substring(10,3));
|
||||
end.
|
||||
|
|
@ -1,16 +1,13 @@
|
|||
// Преобразование целое <-> строка
|
||||
var
|
||||
s: string;
|
||||
i: integer;
|
||||
// Преобразование целое <-> строка
|
||||
|
||||
begin
|
||||
// Преобразование целого в строку
|
||||
i := 234;
|
||||
s := IntToStr(i);
|
||||
writelnFormat('Целое: {0}. После преобразования к строке: ''{1}''',i,s);
|
||||
var i := 234;
|
||||
var s := IntToStr(i);
|
||||
WritelnFormat('Целое: {0}. После преобразования к строке: ''{1}''',i,s);
|
||||
|
||||
// Преобразование строки в целое (может произойти исключение)
|
||||
s := '567';
|
||||
i := StrToInt(s);
|
||||
writelnFormat('Строка: ''{0}''. После преобразования к целому: {1}',s,i);
|
||||
WritelnFormat('Строка: ''{0}''. После преобразования к целому: {1}',s,i);
|
||||
end.
|
||||
34
InstallerSamples/Algorithms/Recursion/Queens2.pas
Normal file
34
InstallerSamples/Algorithms/Recursion/Queens2.pas
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
// Все решения задачи о расстановке ферзей на шахматной доске
|
||||
const N = 8;
|
||||
|
||||
var board := new integer[N]; // board[row] = столбец ферзя в этой строке
|
||||
|
||||
procedure Place(row: integer);
|
||||
begin
|
||||
for var col := 0 to N-1 do
|
||||
begin
|
||||
// проверяем конфликты со всеми ранее поставленными ферзями
|
||||
var conflict := False;
|
||||
for var prevRow := 0 to row-1 do
|
||||
if (board[prevRow] = col) or // тот же столбец
|
||||
(Abs(board[prevRow] - col) = Abs(prevRow - row)) then // та же диагональ
|
||||
begin
|
||||
conflict := True;
|
||||
break;
|
||||
end;
|
||||
|
||||
if not conflict then
|
||||
begin
|
||||
board[row] := col; // ставим ферзя
|
||||
|
||||
if row = N-1 then
|
||||
board.Println // выводим решение
|
||||
else Place(row+1); // продолжаем рекурсию
|
||||
end
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
Println('Все решения задачи о 8 ферзях:');
|
||||
Place(0);
|
||||
end.
|
||||
|
|
@ -1 +1 @@
|
|||
3.11.0.3672
|
||||
3.11.0.3673
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.11.0.3672'
|
||||
!define VERSION '3.11.0.3673'
|
||||
|
|
|
|||
|
|
@ -1902,6 +1902,17 @@ function Lerp(a, b, t: real): real;
|
|||
/// Преобразует x из диапазона [a1,b1] в диапазон [a2,b2] с сохранением относительной позиции
|
||||
function Remap(x, a1, b1, a2, b2: real): real;
|
||||
|
||||
/// Возвращает наибольший общий делитель двух целых чисел
|
||||
function GCD(a, b: integer): integer;
|
||||
/// Возвращает наибольший общий делитель двух целых чисел
|
||||
function GCD(a, b: int64): int64;
|
||||
/// Возвращает наибольший общий делитель двух BigInteger
|
||||
function GCD(a, b: BigInteger): BigInteger;
|
||||
/// Возвращает наименьшее общее кратное двух целых чисел
|
||||
function LCM(a, b: int64): int64;
|
||||
/// Возвращает наименьшее общее кратное двух BigInteger
|
||||
function LCM(a, b: BigInteger): BigInteger;
|
||||
|
||||
/// Инициализирует датчик псевдослучайных чисел
|
||||
procedure Randomize;
|
||||
/// Инициализирует датчик псевдослучайных чисел, используя значение seed. При одном и том же seed генерируются одинаковые псевдослучайные последовательности
|
||||
|
|
@ -9525,6 +9536,48 @@ function Lerp(a, b, t: real): real := a + (b - a) * t;
|
|||
|
||||
function Remap(x, a1, b1, a2, b2: real): real := a2 + (x - a1) * (b2 - a2) / (b1 - a1);
|
||||
|
||||
/// Возвращает наибольший общий делитель двух целых чисел
|
||||
function GCD(a, b: integer): integer;
|
||||
begin
|
||||
var (x, y) := (Abs(a), Abs(b));
|
||||
while y <> 0 do
|
||||
(x, y) := (y, x mod y);
|
||||
Result := x;
|
||||
end;
|
||||
|
||||
/// Возвращает наибольший общий делитель двух больших целых чисел
|
||||
function GCD(a, b: int64): int64;
|
||||
begin
|
||||
var (x, y) := (Abs(a), Abs(b));
|
||||
while y <> 0 do
|
||||
(x, y) := (y, x mod y);
|
||||
Result := x;
|
||||
end;
|
||||
|
||||
/// Возвращает наибольший общий делитель двух BigInteger
|
||||
function GCD(a, b: BigInteger): BigInteger;
|
||||
begin
|
||||
var (x, y) := (Abs(a), Abs(b));
|
||||
while y <> 0 do
|
||||
(x, y) := (y, x mod y);
|
||||
Result := x;
|
||||
end;
|
||||
|
||||
/// Возвращает наименьшее общее кратное двух больших целых чисел
|
||||
function LCM(a, b: int64): int64;
|
||||
begin
|
||||
if (a = 0) or (b = 0) then
|
||||
Result := 0
|
||||
else Result := Abs(a div GCD(a, b)) * Abs(b);
|
||||
end;
|
||||
|
||||
/// Возвращает наименьшее общее кратное двух BigInteger
|
||||
function LCM(a, b: BigInteger): BigInteger;
|
||||
begin
|
||||
if (a = 0) or (b = 0) then
|
||||
Result := 0
|
||||
else Result := Abs(a div GCD(a, b)) * Abs(b);
|
||||
end;
|
||||
|
||||
procedure Randomize;
|
||||
begin
|
||||
|
|
@ -13878,7 +13931,7 @@ begin
|
|||
Result := True;
|
||||
end;
|
||||
|
||||
/// Возвращает все перестановки множества элементов, заданного массивом
|
||||
/// Возвращает все перестановки элементов массива
|
||||
function Permutations<T>(Self: array of T): sequence of array of T; extensionmethod;
|
||||
begin
|
||||
var a := Self;
|
||||
|
|
@ -13892,7 +13945,7 @@ begin
|
|||
until not NextPermutation(ind);
|
||||
end;
|
||||
|
||||
/// Возвращает все перестановки множества элементов, заданного последовательностью
|
||||
/// Возвращает все перестановки элементов последовательности
|
||||
function Permutations<T>(Self: sequence of T): sequence of array of T; extensionmethod;
|
||||
begin
|
||||
Result := Self.ToArray.Permutations
|
||||
|
|
|
|||
Loading…
Reference in a new issue