Skoky koně -šachy

program SkokyKone;
type
TPozice = record
x : char;
y : byte;
end;
var
PPozice,KPozice : TPozice;
i : char;
j : byte;

function PripustnyTahKone(Poc,Kon: TPozice): boolean;
var b : boolean;
begin
b:= ((Poc.x=Pred(Pred(Kon.x))) and (Poc.y=Succ(Kon.y))) or
((Poc.x=Pred(Kon.x)) and (Poc.y=Succ(Succ(Kon.y)))) or
((Poc.x=Succ(Kon.x)) and (Poc.y=Succ(Succ(Kon.y)))) or
((Poc.x=Succ(Succ(Kon.x))) and (Poc.y=Succ(Kon.y))) or
((Poc.x=Succ(Succ(Kon.x))) and (Poc.y=Pred(Kon.y))) or
((Poc.x=Succ(Kon.x)) and (Poc.y=Pred(Pred(Kon.y)))) or
((Poc.x=Pred(Kon.x)) and (Poc.y=Pred(Pred(Kon.y)))) or
((Poc.x=Pred(Pred(Kon.x))) and (Poc.y=Pred(Kon.y)));
PripustnyTahKone:= b;
end;

begin
write('Tento program urci mozne tahy kone');
writeln(' na prazdne sachovnici.');
repeat
write('Zadej pozici kone (napr. G7): ');
readln(PPozice.x,PPozice.y);
if not(PPozice.x in ['A'..'H']) then
writeln('Horizontalni pozice MUSI byt v rozsahu A-H !');
if not(PPozice.y in [1..8]) then
writeln('Vertikalni pozice MUSI byt v rozsahu 1-8 !');
until (PPozice.x in ['A'..'H','a'..'h']) and
(PPozice.y in [1..8]);
PPozice.x:= UpCase(PPozice.x);
write('Pripustne tahy kone na pozici ',PPozice.x,PPozice.y);
writeln(' (prazdna sachovnice):');
for i:= 'A' to 'H' do
for j:= 1 to 8 do begin
KPozice.x:= i; KPozice.y:= j;
if PripustnyTahKone(PPozice,KPozice) then
writeln(PPozice.x,PPozice.y,' --> ',i,j);
end;
end.

 

Maturita.cz - referát (verze pro snadný tisk)
http://www.maturita.cz/referaty/referat.asp?id=1292