Добавил пару примеров
This commit is contained in:
parent
c785cafe68
commit
0e9f711dae
70
InstallerSamples/Algorithms/FloodFillTuple.pas
Normal file
70
InstallerSamples/Algorithms/FloodFillTuple.pas
Normal file
|
|
@ -0,0 +1,70 @@
|
||||||
|
uses GraphABC;
|
||||||
|
|
||||||
|
procedure DrawCell(a: array [,] of integer; x,y: integer);
|
||||||
|
var sz := 30;
|
||||||
|
begin
|
||||||
|
case a[y,x] of
|
||||||
|
0: Brush.Color := Color.White;
|
||||||
|
1: Brush.Color := Color.Black;
|
||||||
|
2: Brush.Color := Color.Chocolate;
|
||||||
|
end;
|
||||||
|
Rectangle(x*sz,y*sz,x*sz+sz-1,y*sz+sz-1)
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure AddToQueue(a: array [,] of integer; x,y: integer; q: Queue<(integer,integer)>);
|
||||||
|
begin
|
||||||
|
if a[y,x] = 0 then
|
||||||
|
begin
|
||||||
|
q.Enqueue(new Point(x,y));
|
||||||
|
a[y,x] := 2;
|
||||||
|
Sleep(200);
|
||||||
|
DrawCell(a,x,y);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure FloodFill(a: array [,] of integer; x,y: integer);
|
||||||
|
begin
|
||||||
|
var q := new Queue<(integer,integer)>;
|
||||||
|
AddToQueue(a,x,y,q);
|
||||||
|
while not (q.Count=0) do
|
||||||
|
begin
|
||||||
|
(x,y) := q.Dequeue();
|
||||||
|
AddToQueue(a,x+1,y,q);
|
||||||
|
AddToQueue(a,x-1,y,q);
|
||||||
|
AddToQueue(a,x,y+1,q);
|
||||||
|
AddToQueue(a,x,y-1,q);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ReadFromFile(fname: string; var a: array [,] of integer);
|
||||||
|
begin
|
||||||
|
var f := OpenRead(fname);
|
||||||
|
var dimx,dimy: integer;
|
||||||
|
readln(f,dimy,dimx);
|
||||||
|
SetLength(a,dimy,dimx);
|
||||||
|
for var y := 0 to dimy-1 do
|
||||||
|
begin
|
||||||
|
for var x := 0 to dimx-1 do
|
||||||
|
begin
|
||||||
|
var c := f.ReadChar;
|
||||||
|
a[y,x]:= c='*' ? 1 : 0;
|
||||||
|
end;
|
||||||
|
readln(f)
|
||||||
|
end;
|
||||||
|
f.Close;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Draw(a: array [,] of integer);
|
||||||
|
begin
|
||||||
|
for var y := 0 to a.GetLength(1)-1 do
|
||||||
|
for var x := 0 to a.GetLength(0)-1 do
|
||||||
|
DrawCell(a,x,y);
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Window.Title := 'Èëëþñòðàöèÿ àëãîðèòìà FloodFill';
|
||||||
|
var a: array [,] of integer;
|
||||||
|
ReadFromFile('field.txt',a);
|
||||||
|
Draw(a);
|
||||||
|
FloodFill(a,4,4);
|
||||||
|
end.
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
// Быстрая сортировка Ч. Хоара
|
// Быстрая сортировка Ч. Хоара
|
||||||
uses ArrayLib;
|
|
||||||
|
|
||||||
/// Разделение a[l]..a[r] на части a[l]..a[q] <= a[q+1]..a[r]
|
/// Разделение a[l]..a[r] на части a[l]..a[q] <= a[q+1]..a[r]
|
||||||
function Partition(a: array of integer; l,r: integer): integer;
|
function Partition(a: array of integer; l,r: integer): integer;
|
||||||
begin
|
begin
|
||||||
|
|
@ -10,10 +8,10 @@ begin
|
||||||
while True do
|
while True do
|
||||||
begin
|
begin
|
||||||
repeat
|
repeat
|
||||||
Inc(i);
|
i += 1;
|
||||||
until a[i]>=x;
|
until a[i]>=x;
|
||||||
repeat
|
repeat
|
||||||
Dec(j);
|
j -= 1;
|
||||||
until a[j]<=x;
|
until a[j]<=x;
|
||||||
if i<j then
|
if i<j then
|
||||||
Swap(a[i],a[j])
|
Swap(a[i],a[j])
|
||||||
|
|
@ -36,10 +34,8 @@ end;
|
||||||
|
|
||||||
const n = 20;
|
const n = 20;
|
||||||
|
|
||||||
var a: array of integer;
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
CreateRandom(a,n);
|
var a := ArrRandom(n);
|
||||||
writeln('До сортировки: ');
|
writeln('До сортировки: ');
|
||||||
Writeln(a);
|
Writeln(a);
|
||||||
QuickSort(a,0,a.Length-1);
|
QuickSort(a,0,a.Length-1);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
// Сортировка выбором
|
// Сортировка выбором
|
||||||
uses ArrayLib;
|
|
||||||
|
|
||||||
procedure SelectionSort(a: array of real);
|
procedure SelectionSort(a: array of real);
|
||||||
begin
|
begin
|
||||||
for var i:=0 to a.Length-2 do
|
for var i:=0 to a.Length-2 do
|
||||||
|
|
@ -25,13 +23,11 @@ begin
|
||||||
Result[i] := Random(100);
|
Result[i] := Random(100);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var a: array of real;
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
a := CreateRandomArr(20);
|
var a := ArrRandomReal(20);
|
||||||
writeln('Содержимое массива: ');
|
writeln('Содержимое массива: ');
|
||||||
Writeln(a);
|
a.Println;
|
||||||
SelectionSort(a);
|
SelectionSort(a);
|
||||||
writeln('После сортировки выбором: ');
|
writeln('После сортировки выбором: ');
|
||||||
Writeln(a);
|
a.Println;
|
||||||
end.
|
end.
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
begin
|
||||||
|
var q := new Queue<(integer,integer)>;
|
||||||
|
q.Enqueue((1,2));
|
||||||
|
q.Enqueue((2,5));
|
||||||
|
q.Println;
|
||||||
|
Println(q);
|
||||||
|
|
||||||
|
var l := new List<integer->integer>;
|
||||||
|
l.Add(x->x);
|
||||||
|
l.Add(x->x*x);
|
||||||
|
l.ForEach(f->Print(f(5)));
|
||||||
|
Println;
|
||||||
|
|
||||||
|
var l1 := new List<(integer,integer)->integer>;
|
||||||
|
l1.Add((x,y)->x+y);
|
||||||
|
l1.Add((x,y)->x-y);
|
||||||
|
l1.Add((x,y)->x*y);
|
||||||
|
l1.ForEach(f->Print(f(2,3)));
|
||||||
|
end.
|
||||||
19
TestSuite/CompilationSamples/ShortTypesInTemplateParams.pas
Normal file
19
TestSuite/CompilationSamples/ShortTypesInTemplateParams.pas
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
begin
|
||||||
|
var q := new Queue<(integer,integer)>;
|
||||||
|
q.Enqueue((1,2));
|
||||||
|
q.Enqueue((2,5));
|
||||||
|
q.Println;
|
||||||
|
Println(q);
|
||||||
|
|
||||||
|
var l := new List<integer->integer>;
|
||||||
|
l.Add(x->x);
|
||||||
|
l.Add(x->x*x);
|
||||||
|
l.ForEach(f->Print(f(5)));
|
||||||
|
Println;
|
||||||
|
|
||||||
|
var l1 := new List<(integer,integer)->integer>;
|
||||||
|
l1.Add((x,y)->x+y);
|
||||||
|
l1.Add((x,y)->x-y);
|
||||||
|
l1.Add((x,y)->x*y);
|
||||||
|
l1.ForEach(f->Print(f(2,3)));
|
||||||
|
end.
|
||||||
Loading…
Reference in a new issue