RosettaCodeData/Task/Long-year/Ada/long-year.adb
2026-04-30 12:34:36 -04:00

34 lines
1 KiB
Ada

-------------------------------------------------------------
-- Calculate long years
-- Reference: https://en.wikipedia.org/wiki/ISO_week_date#Weeks_per_year
-------------------------------------------------------------
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Calendar; use Ada.Calendar;
with Ada.Calendar.Formatting; use Ada.Calendar.Formatting;
procedure Main is
First_Day : Time;
Last_Day : Time;
package AC renames Ada.Calendar;
type Counter is mod 10;
Count : Counter := 0;
begin
for Yr in Year_Number loop
First_Day := AC.Time_Of (Year => Yr, Month => 1, Day => 1);
Last_Day := AC.Time_Of (Year => Yr, Month => 12, Day => 31);
-- If Jan 1 is Thursday or Dec 31 is Thursday then
-- the year is a long year
if Day_Of_Week (First_Day) = Thursday
or else Day_Of_Week (Last_Day) = Thursday
then
if Count = 0 then
New_Line;
end if;
Put (Yr'Image);
Count := Count + 1;
end if;
end loop;
end Main;