unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
card=^elem;
elem=record
num:1..13;
kind:1..4;
gnum:1..104;
state:boolean;
next:card;
end;
type
base=array[1..10]of card;
type
  TForm1 = class(TForm)
    r1: TRadioButton;
    r2: TRadioButton;
    r3: TRadioButton;
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  a:base;
implementation

{$R *.dfm}

procedure level1(var a:base);
var  i,j,k:integer;
begin
i:=1;
k:=0;
while (i<104) do
 begin
  k:=k+1;
  for j:=1 to 13 do
  begin
    a[k]^.num:=j;
    a[k]^.gnum:=i;
    a[k]^.kind:=1;
    a[k]^.state:=false;
    a[k]^.next:=nil;
    i:=i+1;
  end;
  end;
end;
procedure level2(var a:base);
var  i,j,k,m:integer;
begin
i:=1;
k:=0;
while (i<104) do
  for m:=1 to 2 do
  begin
   k:=k+1;
   for j:=1 to 13 do
   begin
    a[k]^.num:=j;
    a[k]^.gnum:=i;
    a[k]^.kind:=m;
    a[k]^.state:=false;
    a[k]^.next:=nil;
    i:=i+1;
   end;
  end;
end;
procedure level3(var a:base);
var  i,j,k,m:integer;
begin
i:=1;
k:=0;
while (i<104) do
  for m:=1 to 4 do
    begin
    k:=k+1;
    for j:=1 to 13 do
    begin
     a[k]^.num:=j;
     a[k]^.gnum:=i;
     a[k]^.kind:=m;
     a[k]^.state:=false;
     a[k]^.next:=nil;
     i:=i+1;
    end;
   end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if r1.Checked=true then
level1(a)
else
if r2.Checked=true then
level2(a)
else
if r3.Checked=true then
level3(a);
end;

end.