29 lines
578 B
Text
29 lines
578 B
Text
(* Long year *)
|
|
block
|
|
var
|
|
s, e, y: integer;
|
|
|
|
(* Weekday of y-12-31, 0 = Sunday *)
|
|
unit wd: function (y: integer): integer;
|
|
begin
|
|
result := (y + y div 4 - y div 100 + y div 400) mod 7;
|
|
end wd;
|
|
|
|
(* true if and only if y is a long year *)
|
|
unit isly: function (y: integer): boolean;
|
|
begin
|
|
result := (wd(y) = 4) or (wd(y - 1) = 3)
|
|
end isly;
|
|
|
|
begin
|
|
writeln("**** List of ISO long years ****");
|
|
write("Start year: ");
|
|
readln(s);
|
|
write("End year: ");
|
|
readln(e);
|
|
for y := s to e
|
|
do
|
|
if isly(y) then write(y: 5) fi
|
|
od;
|
|
writeln;
|
|
end.
|