Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,34 +0,0 @@
|
|||
-------------------------------------------------------------
|
||||
-- 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;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
longYear?: function [year][
|
||||
date: to :date .format: "dd/MM/yyyy" ~"01/01/|year|"
|
||||
|
||||
or? date\Day = "Thursday"
|
||||
or? thursday? date
|
||||
and? leap? year
|
||||
date\Day = "Wednesday"
|
||||
wednesday? date
|
||||
]
|
||||
|
||||
print "Years with 53 weeks between 2000 and 2100:"
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
MODULE Dates;
|
||||
|
||||
CONST SUNDAY* = 0;
|
||||
MONDAY* = 1;
|
||||
TUESDAY* = 2;
|
||||
WEDNESDAY* = 3;
|
||||
THURSDAY* = 4;
|
||||
FRIDAY* = 5;
|
||||
SATURDAY* = 6;
|
||||
|
||||
(* returns the day of the week of 31st December of year *)
|
||||
PROCEDURE dayOfYearEnd* ( year : INTEGER ) : INTEGER ;
|
||||
BEGIN
|
||||
RETURN ( year + ( year DIV 4 ) - ( year DIV 100 ) + ( year DIV 400 ) ) MOD 7
|
||||
END dayOfYearEnd ;
|
||||
|
||||
(* returns TRUE if year is a long year (i.e., has 53 weeks), FaLSE otherwise *)
|
||||
PROCEDURE isLongYear* ( year : INTEGER ) : BOOLEAN ;
|
||||
BEGIN
|
||||
(* year is a long year if 31st December is a Thursday
|
||||
* or the first of January is a Thursday (and so the previous
|
||||
* year had 31st December on a Wednesday)
|
||||
*)
|
||||
RETURN ( dayOfYearEnd( year ) = THURSDAY )
|
||||
OR ( dayOfYearEnd( year - 1 ) = WEDNESDAY )
|
||||
END isLongYear ;
|
||||
|
||||
END Dates.
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
MODULE LongYear;
|
||||
IMPORT Dates, Out;
|
||||
|
||||
VAR year : INTEGER ;
|
||||
BEGIN
|
||||
FOR year := 2000 TO 2099 DO
|
||||
IF Dates.isLongYear( year ) THEN
|
||||
Out.Int( year, 5 )
|
||||
END
|
||||
END;
|
||||
Out.Ln
|
||||
END LongYear.
|
||||
|
|
@ -1,20 +1,26 @@
|
|||
(phixonline)-->
|
||||
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">week_number</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">y</span><span style="color: #0000FF;">,</span><span style="color: #000000;">m</span><span style="color: #0000FF;">,</span><span style="color: #000000;">d</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">doy</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">day_of_year</span><span style="color: #0000FF;">(</span><span style="color: #000000;">y</span><span style="color: #0000FF;">,</span><span style="color: #000000;">m</span><span style="color: #0000FF;">,</span><span style="color: #000000;">d</span><span style="color: #0000FF;">),</span>
|
||||
<span style="color: #000000;">dow</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">day_of_week</span><span style="color: #0000FF;">(</span><span style="color: #000000;">y</span><span style="color: #0000FF;">,</span><span style="color: #000000;">m</span><span style="color: #0000FF;">,</span><span style="color: #000000;">d</span><span style="color: #0000FF;">),</span>
|
||||
<span style="color: #000000;">week</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">floor</span><span style="color: #0000FF;">((</span><span style="color: #000000;">doy</span><span style="color: #0000FF;">-</span><span style="color: #000000;">dow</span><span style="color: #0000FF;">+</span><span style="color: #000000;">10</span><span style="color: #0000FF;">)/</span><span style="color: #000000;">7</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #000000;">week</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
with javascript_semantics
|
||||
function week_number(integer y,m,d)
|
||||
integer doy = day_of_year(y,m,d),
|
||||
dow = day_of_week(y,m,d),
|
||||
week = floor((doy-dow+10)/7)
|
||||
return week
|
||||
end function
|
||||
--/* -- or: (same results)
|
||||
constant Thursday = 4
|
||||
function long_year(integer y)
|
||||
return day_of_week(y,1,1)=Thursday
|
||||
or day_of_week(y,12,31)=Thursday
|
||||
end function
|
||||
--*/
|
||||
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">c</span><span style="color: #0000FF;">=</span><span style="color: #000000;">20</span> <span style="color: #008080;">to</span> <span style="color: #000000;">22</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">long_years</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{}</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">century</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">c</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">)*</span><span style="color: #000000;">100</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">year</span><span style="color: #0000FF;">=</span><span style="color: #000000;">century</span> <span style="color: #008080;">to</span> <span style="color: #000000;">century</span><span style="color: #0000FF;">+</span><span style="color: #000000;">99</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">week_number</span><span style="color: #0000FF;">(</span><span style="color: #000000;">year</span><span style="color: #0000FF;">,</span><span style="color: #000000;">12</span><span style="color: #0000FF;">,</span><span style="color: #000000;">28</span><span style="color: #0000FF;">)=</span><span style="color: #000000;">53</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #000000;">long_years</span> <span style="color: #0000FF;">&=</span> <span style="color: #000000;">year</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Long years in the %d%s century:%v\n"</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">c</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">ord</span><span style="color: #0000FF;">(</span><span style="color: #000000;">c</span><span style="color: #0000FF;">),</span><span style="color: #000000;">long_years</span><span style="color: #0000FF;">})</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<!--
|
||||
for c=20 to 22 do
|
||||
sequence long_years = {}
|
||||
integer century = (c-1)*100
|
||||
for year=century to century+99 do
|
||||
if week_number(year,12,28)=53 then
|
||||
-- if long_year(year) then
|
||||
long_years &= year
|
||||
end if
|
||||
end for
|
||||
printf(1,"Long years in the %d%s century:%v\n", {c,ord(c),long_years})
|
||||
end for
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
Function Is-Long-Year {
|
||||
param([Int]$year)
|
||||
53 -eq (Get-Date -Year $year -Month 12 -Day 28 -UFormat %V)
|
||||
}
|
||||
|
||||
For ($y=1995; $y -le 2045; $y++) {
|
||||
If (Is-Long-Year $y) {
|
||||
Write-Host $y
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue