Добавил пару примеров
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]
|
||||
function Partition(a: array of integer; l,r: integer): integer;
|
||||
begin
|
||||
|
|
@ -10,10 +8,10 @@ begin
|
|||
while True do
|
||||
begin
|
||||
repeat
|
||||
Inc(i);
|
||||
i += 1;
|
||||
until a[i]>=x;
|
||||
repeat
|
||||
Dec(j);
|
||||
j -= 1;
|
||||
until a[j]<=x;
|
||||
if i<j then
|
||||
Swap(a[i],a[j])
|
||||
|
|
@ -36,10 +34,8 @@ end;
|
|||
|
||||
const n = 20;
|
||||
|
||||
var a: array of integer;
|
||||
|
||||
begin
|
||||
CreateRandom(a,n);
|
||||
var a := ArrRandom(n);
|
||||
writeln('До сортировки: ');
|
||||
Writeln(a);
|
||||
QuickSort(a,0,a.Length-1);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
// Сортировка выбором
|
||||
uses ArrayLib;
|
||||
|
||||
// Сортировка выбором
|
||||
procedure SelectionSort(a: array of real);
|
||||
begin
|
||||
for var i:=0 to a.Length-2 do
|
||||
|
|
@ -25,13 +23,11 @@ begin
|
|||
Result[i] := Random(100);
|
||||
end;
|
||||
|
||||
var a: array of real;
|
||||
|
||||
begin
|
||||
a := CreateRandomArr(20);
|
||||
var a := ArrRandomReal(20);
|
||||
writeln('Содержимое массива: ');
|
||||
Writeln(a);
|
||||
a.Println;
|
||||
SelectionSort(a);
|
||||
writeln('После сортировки выбором: ');
|
||||
Writeln(a);
|
||||
a.Println;
|
||||
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