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.
PŘIDEJTE SVŮJ REFERÁT