unit U_MacGregor;
{Copyright   2002, Gary Darby,  www.DelphiForFun.org
 This program may be used or modified for any non-commercial purpose
 so long as this original notice remains in place.
 All other rights are reserved
 }

{A simple puzzle }
{Mr. MacGregor always planted his cabbage patch in a square configuration. This 
summer he decided to plant extra for his rabbit friends and ended up planting an extra 
47 cabbages. How big was his patch last year and this year?
 
This puzzle can be solved without a computer if we examine the equation
 
                    Thisyear2 - Lastyear2 = 47}
{Hint:   A little knowledge of factoring  [like.  x2-y2=(x-y)*(x+y)] and prime numbers
(like 47 is prime) will be helpful in solving the equation.{ 

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, jpeg, ExtCtrls;

type
TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    StatusBar1: TStatusBar;
    Image1: TImage;
procedure SolveitBtnClick(Sender: TObject);
end;

var Form1: TForm1;

implementation
{$R *.DFM}

{************** SolveitBtnClick ****************}
procedure TForm1.SolveitBtnClick(Sender: TObject);
var last,this:integer;
begin
memo2.clear;
for last:=1 to 200 do
for this:=last+1 to 201 do
if this*this-last*last=47 then
with memo2, lines do
begin
add(format('MacGregor''s cabbage patch was %d x %d cabbages last year '
+'(%.0n altogether) and %d x %d (%.0n cabbages) this year, 47 more.',
         [last,last,0.0+last*last,this,this,0.0+this*this]));
     add(' ');
     add('Here is the Delphi source code that solves the puzzle');
     add(' ');
     add('for last:=1 to 200 do ');
     add('for this:=last+1 to 200 do');
     add('if this*this-last*last=47 then');
     add('begin ');
     add('  {display answer here}');
     add('  break;');
     add('end;');
end;
end;

end.