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;
cards=array[1..104]of card;
type
  TForm1 = class(TForm)
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  a:cards;
implementation

{$R *.dfm}

procedure level1(var a:cards);
var  i,j:integer;
begin
i:=1;
while (i<104) do
    begin
  for j:=1 to 13 do
  begin
    new(a[i]);
    a[i]^.num:=j;
    a[i]^.gnum:=i;
    a[i]^.kind:=1;
    a[i]^.state:=false;
    a[i]^.next:=nil;
    i:=i+1;
  end;
  end;
end;
procedure level2(var a:cards);
var  i,j,m:integer;
begin
i:=1;
while (i<104) do
  for m:=1 to 2 do
  begin
   for j:=1 to 13 do
  begin
    new(a[i]);
    a[i]^.num:=j;
    a[i]^.gnum:=i;
    a[i]^.kind:=m;
    a[i]^.state:=false;
    a[i]^.next:=nil;
    i:=i+1;
  end;
  end;
end;
procedure level3(var a:cards);
var  i,j,m:integer;
begin
i:=1;
while (i<104) do
  for m:=1 to 4 do
  begin
  for j:=1 to 13 do
  begin
    new(a[i]);
    a[i]^.num:=j;
    a[i]^.gnum:=i;
    a[i]^.kind:=m;
    a[i]^.state:=false;
    a[i]^.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.