summaryrefslogtreecommitdiff
path: root/unit1.pas
blob: 86792d7cfd7074d5cd9bbe634a76945b588ac64d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  Unit2;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    ListBox1: TListBox;
    ListBox2: TListBox;
    Memo1: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
    loesungen: tLoesungArray;
    Rs,Cs:     tMyExtendedArray;
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormResize(Sender: TObject);
begin
  Memo1.Height:=Form1.ClientHeight-Memo1.Top;
  Memo2.Height:=Form1.ClientHeight-Memo2.Top;
  Memo3.Height:=Form1.ClientHeight-Memo3.Top;
  ListBox1.Height:=Form1.ClientHeight-ListBox1.Top;
  ListBox2.Height:=Form1.ClientHeight-ListBox2.Top;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  if (Listbox1.Itemindex>=0) and
     (Listbox1.Itemindex<length(loesungen.inhalt)) then
    loesungen.inhalt[Listbox1.Itemindex].anzeigen(Listbox2.Items);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  hps,tps,thps: tMyExtendedArray;
begin
  Rs.free;
  Rs:=liesExtendedArray(Memo2.Lines);
  Cs.free;
  Cs:=liesExtendedArray(Memo1.Lines);
  tps:=liesExtendedArray(Memo3.Lines,'tp');
  hps:=liesExtendedArray(Memo3.Lines,'hp');
  thps:=liesExtendedArray(Memo3.Lines,'thp');
  ListBox1.Items.Clear;
  ListBox2.Items.Clear;

  loesungen:=bruteForcen(tps,hps,thps,Cs,Rs,20,@FormClick);
  loesungen.indexVeroeffentlichen(Listbox1.Items);

  hps.free;
  tps.free;
  thps.free;
end;

const
  c1: longint = 0;
  c2: longint = 0;

procedure TForm1.FormClick(Sender: TObject);
begin
  if assigned(sender) and
     (sender is tLoesung) then begin
    inc(c1);
    if c1>=1000000 then begin
      c1:=0;
      Form1.Caption:=inttostr(c2)+' '+(sender as tLoesung).dumpWeite;
      Application.ProcessMessages;
    end;
  end
  else begin
    inc(c2);
    if c2 mod 100 = 0 then begin
      Form1.Color:=random($1000000);
      Form1.Caption:=inttostr(c2)+' '+rightstr(Form1.Caption,length(Form1.Caption)-pos(' ',Form1.Caption));
      Application.ProcessMessages;
    end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Rs:=nil;
  Cs:=nil;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Rs.free;
  Cs.free;
end;

end.