{ programa, skirta 143 u‘davinio sprendimo testavimui }
  const MAX = 2000; { maksimali m reikžm‚ }

  var krit: array [1..6] of set of 1..21;
          { kritin‚s situacijos, apsprend‘ian‡ios laim‚jim… }
      ka, { koks skai‡ius bus viržuje disk… pasukus  kairŠ  }
      de, { koks skai‡ius bus viržuje disk… pasukus  dežinŠ }
      s, n, nn, liko,
      klaidos, { tikrinamos programos padarytos klaidos, pvz. }
               { priež ‚jim… disko viržuje buvo 1, po ‚jimo - 4 }
      pralosimai: integer; { teising—, ta‡iau pralaimin‡i— ‚jim— }
                           { skai‡ius }
begin
  { rasime kritines situacijas }
  krit[1] := [2];
  krit[2] := [3, 10, 17];
  krit[3] := [4, 5, 6, 13];
  krit[4] := [5, 7, 8, 12, 16];
  krit[5] := [9, 16];
  krit[6] := [1, 2, 4, 9, 11, 14, 18, 21];

  writeln;
  writeln ('++++++++++++++++++++++++++++++++++++++++++++++++++');
  writeln ('               Prasideda testavimas               ');
  writeln;
  klaidos := 0;
  pralosimai := 0;
  { prasideda testavimas }
  { m = MAX, s kinta nuo 0 iki MAX-1, n - nuo 1 iki 6 }
  { viso: 12000 test— }
  for s := 0 to MAX-1 do
    for n := 1 to 6 do
      begin
        nn := diskas (n, s, max);
        if n = 6 then ka := 1
                 else ka := n + 1;
        if n = 1 then de := 6
                 else de := n - 1;
        { jei ‚jimas nekorektižkas }
        if not ((nn = ka) or (nn = de))
        then begin
               klaidos := klaidos + 1;
               write ('KLAIDA:  m =  ', MAX, ' s = ', s, ' n = ', n);
               writeln (' -----> ', nn);
             end
        else begin { tikrinsime, ar ‚jimas tikrai laimintis }
               liko := MAX - s;
               if liko <= 21
               then if (liko in krit[n]) and (nn = de)
                    then begin
                           pralosimai := pralosimai + 1;
                           write ('PRALOŸIMAS: m =  ', MAX, ' s = ', s);
                           writeln (' n = ', n, ' -----> ', nn);
                         end
             end
     end;
  if (klaidos = 0) and (pralosimai = 0)
  then writeln ('Viskas gerai')
  else begin
         writeln;
         writeln ('KLAIDOS - nekorektižki ‚jimai');
         writeln ('KLAID§ SKAI€IUS:    ', klaidos);
         writeln ('PRALOŸIMAI - korektižki, ta‡iau pralaimintys ‚jimai');
         writeln ('PRALOŸIM§ SKAI€IUS: ', pralosimai)
       end;
  writeln ('                Testavimas baigtas              ');
  writeln ('-------------------------------------------------');
end.



