Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
53
Task/Doomsday-rule/Cowgol/doomsday-rule.cowgol
Normal file
53
Task/Doomsday-rule/Cowgol/doomsday-rule.cowgol
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
include "cowgol.coh";
|
||||
|
||||
record Date is
|
||||
year: uint16;
|
||||
month: uint8;
|
||||
day: uint8;
|
||||
end record;
|
||||
|
||||
sub weekday(d: [Date]): (dayname: [uint8]) is
|
||||
var daynames: [uint8][] := {
|
||||
"Sunday", "Monday", "Tuesday", "Wednesday",
|
||||
"Thursday", "Friday", "Saturday"
|
||||
};
|
||||
|
||||
var leapdoom: uint8[] := {4,7,1,4,2,6,4,1,5,3,7,5};
|
||||
var normdoom: uint8[] := {3,7,7,4,2,6,4,1,5,3,7,5};
|
||||
|
||||
var c := d.year / 100;
|
||||
var r := d.year % 100;
|
||||
var s := r / 12;
|
||||
var t := r % 12;
|
||||
|
||||
var can := (5 * (c%4) + 2) % 7;
|
||||
var doom := (s + t + (t/4) + can) % 7;
|
||||
var anchor: int16;
|
||||
if d.year%4 == 0 and (d.year%100 != 0 or d.year%400 == 0) then
|
||||
anchor := leapdoom[d.month-1] as int16;
|
||||
else
|
||||
anchor := normdoom[d.month-1] as int16;
|
||||
end if;
|
||||
|
||||
var dayno := (doom as int16 + d.day as int16 - anchor + 7) % 7;
|
||||
dayname := daynames[dayno as @indexof daynames];
|
||||
end sub;
|
||||
|
||||
sub print_date(d: [Date]) is
|
||||
print_i8(d.month); print_char('/');
|
||||
print_i8(d.day); print_char('/');
|
||||
print_i16(d.year); print(": ");
|
||||
print(weekday(d));
|
||||
print_nl();
|
||||
end sub;
|
||||
|
||||
var dates: Date[] := {
|
||||
{1800,1,6}, {1875,3,29}, {1915,12,7}, {1970,12,23}, {2043,5,14},
|
||||
{2077,2,12}, {2101,4,2}
|
||||
};
|
||||
|
||||
var i: @indexof dates := 0;
|
||||
while i < @sizeof dates loop
|
||||
print_date(&dates[i]);
|
||||
i := i + 1;
|
||||
end loop;
|
||||
Loading…
Add table
Add a link
Reference in a new issue