Data update

This commit is contained in:
Ingy döt Net 2024-10-16 18:07:41 -07:00
parent 81fd053722
commit 52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions

View file

@ -10,7 +10,7 @@ begin
, year
, " is "
, if isLeapYear( year ) then "" else "not "
, " a leap year"
, "a leap year"
)
end for_year
end.

View file

@ -0,0 +1,12 @@
MODULE Dates;
(* returns TRUE if year is a leap year, FALSE otherwise.
assumes year is in the Gregorian Calendar
*)
PROCEDURE isLeapYear* ( year : INTEGER ) : BOOLEAN ;
BEGIN
RETURN ( year MOD 400 = 0 )
OR ( ( year MOD 4 = 0 ) & ( year MOD 100 # 0 ) )
END isLeapYear ;
END Dates.

View file

@ -0,0 +1,17 @@
MODULE LeapYear;
IMPORT Dates, Out;
PROCEDURE test ( year : INTEGER ) ;
BEGIN
Out.Int( year, 4 );
Out.String( " is " );
IF ~ Dates.isLeapYear( year ) THEN Out.String( "not " ) END;
Out.String( "a leap year" );
Out.Ln
END test ;
BEGIN
test( 1899 ); test( 1900 ); test( 1901 ); test( 1902 ); test( 1903 );
test( 1904 ); test( 1905 ); test( 1999 ); test( 2000 ); test( 2001 );
test( 2002 ); test( 2003 ); test( 2004 )
END LeapYear.

View file

@ -5,9 +5,9 @@ BEGIN
ELSE
IF year MOD 100 = 0 THEN
IF year MOD 400 = 0 THEN
RETURN TRUE
RETURN TRUE
ELSE
RETURN FALSE
RETURN FALSE
END
ELSE
RETURN TRUE

View file

@ -0,0 +1,6 @@
##
function IsLeapYear(year: word): boolean :=
if year mod 100 = 0 then year mod 400 = 0
else year mod 4 = 0;
IsLeapYear(2000).println;

View file

@ -0,0 +1,9 @@
leapyear?: function [
"returns true for a leap year."
date [date!]
][
year: date/year
if zero? year // 400 and year / 100 [return true]
if zero? year // 4 [return true]
false
]

View file

@ -1,16 +1,11 @@
!yamlscript/v0
defn main(year):
say: "$year is $when-not(leap-year(year) 'not ')a leap year."
# Either one works:
defn main(year=2024):
say: "$year is $when-not(
leap-year(year) 'not ')a
leap year."
defn leap-year(year):
((year % 4) == 0) && (((year % 100) > 0) || ((year % 100) == 0))
defn leap-year(year):
and:
zero?: (year % 4)
or:
pos?: (year % 100)
zero?: (year % 400)
(year % 4) == 0 &&:
(year % 100):pos? ||:
(year % 400).eq(0)