``````
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.

``````