# Funny Programming in Delphi - Hares and Pheasants

Introduction

An hunting event has been organized by local gamekeepers community. At the end of the event all hunters were interested in results, i.e. how many hares and pheasants were shot. Because gamekeepers were extremely tired, they weren't able to distinguish between hare and pheasant. A local teacher got an idea: "We count all shot animals and total figure of their legs. Based on these facts, we should be able to determine particular totals of hares and pheasants.".

Used variables

• KS - real count of heads
• NOHY - total count of legs
• KUSY - calculated count of heads (changes by every loop pass, at the end it will have the same value as variable KS)
• ZAJ - count of hares (changes by every loop pass, at the end it will have value of real count of hares)
• BAZ - count of pheasants (changes by every loop pass, at the end it will have value of real count of pheasants)
``````
procedure TForm2.Button1Click(Sender: TObject);
var Nohy, Ks, Kusy, Baz, Zaj, Test:Integer;
begin
begin
Nohy:=seNohy.Value;
Ks:=seKs.Value;
if NOHY <= 4*KS                   //No animal can have more than 4 legs
then
if NOHY >= 2*KS             //No animal can have less than 2 legs
then
begin
TEST := NOHY div (2);   //test of divisibility by 2
TEST := TEST*2;
if NOHY = TEST
then            //All the nonsense values are out of question,
begin        //we can calculate
ZAJ := 0;       //Initial settings - no hare,
BAZ := NOHY div (2);  //all pheasants
KUSY := ZAJ + BAZ;   //We'll try how many heads it would be

//While loop
while KUSY > KS do   //Until there are more test heads than real ones
begin
ZAJ := ZAJ + 1;   //One hare is added
BAZ := BAZ - 2;   //Two pheasants are removed
KUSY := ZAJ + BAZ;  //Heads recalculated
end;
ShowMessage('Hares '+IntToStr(ZAJ)+ ', Pheasants ' +IntToStr(BAZ));
end
else             //Odd count of legs
ShowMessage('Animals with odd count of legs are not accepted:-)');
end
else
ShowMessage ('Each animal must have at least two legs! ')
else
ShowMessage ('No animal can have more than four legs! ');
end;
end;
``````

Notes

Our new series of articles focused on practical using of algorithms should show how to use some mathematical and statistical methods for solving real life tasks and issues.