Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
47
Task/Five-weekends/Picat/five-weekends.picat
Normal file
47
Task/Five-weekends/Picat/five-weekends.picat
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
go ?=>
|
||||
println("Months with five weekends:"),
|
||||
FiveWeekends = [ [Year,Month] : Year in 1900..2100, Month in [1,3,5,7,8,10,12], dow(Year,Month,1) == 5],
|
||||
WLen = FiveWeekends.len,
|
||||
println(take(FiveWeekends,5)),
|
||||
println("..."),
|
||||
println(drop(FiveWeekends,WLen-5)),
|
||||
println(len=WLen),
|
||||
nl,
|
||||
|
||||
println("Years w/o five weekends:"),
|
||||
FiveWeekendYears = [Year : [Year,_] in FiveWeekends].remove_dups,
|
||||
NoHitYears = [Year : Year in 1900..2100, not member(Year,FiveWeekendYears)],
|
||||
NHLen = NoHitYears.len,
|
||||
println(take(NoHitYears,5)),
|
||||
println("..."),
|
||||
println(drop(NoHitYears,NHLen-5)),
|
||||
println(len=NHLen),
|
||||
nl.
|
||||
go => true.
|
||||
|
||||
% Day of week, Sakamoto's method
|
||||
dow(Y, M, D) = R =>
|
||||
T = [0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4],
|
||||
if M < 3 then
|
||||
Y := Y - 1
|
||||
end,
|
||||
R = (Y + Y // 4 - Y // 100 + Y // 400 + T[M] + D) mod 7.
|
||||
|
||||
% Days in a month.
|
||||
max_days_in_month(Year,Month) = Days =>
|
||||
if member(Month, [1,3,5,7,8,10,12]) then
|
||||
Days = 31
|
||||
elseif member(Month,[4,6,9,11]) then
|
||||
Days = 30
|
||||
else
|
||||
if leap_year(Year) then
|
||||
Days = 29
|
||||
else
|
||||
Days = 28
|
||||
end
|
||||
end.
|
||||
|
||||
leap_year(Year) =>
|
||||
(Year mod 4 == 0, Year mod 100 != 0)
|
||||
;
|
||||
Year mod 400 == 0.
|
||||
Loading…
Add table
Add a link
Reference in a new issue