41 lines
1.2 KiB
Text
41 lines
1.2 KiB
Text
import "./date" for Date
|
|
import "./seq" for Lst
|
|
|
|
var dates = []
|
|
var years = []
|
|
for (y in 1900..2100) {
|
|
var hasFive = false
|
|
for (m in 1..12) {
|
|
var fri = 0
|
|
var sat = 0
|
|
var sun = 0
|
|
for (d in 1..Date.monthLength(y, m)) {
|
|
var d = Date.new(y, m, d)
|
|
var dow = d.dayOfWeek
|
|
if (dow == 5) {
|
|
fri = fri + 1
|
|
} else if (dow == 6) {
|
|
sat = sat + 1
|
|
} else if (dow == 7) {
|
|
sun = sun + 1
|
|
}
|
|
}
|
|
var fd = Date.new(y, m, 1)
|
|
if (fri == 5 && sat == 5 && sun == 5) {
|
|
dates.add(fd)
|
|
hasFive = true
|
|
}
|
|
}
|
|
if (!hasFive) years.add(y)
|
|
}
|
|
|
|
Date.default = "mmm|-|yyyy"
|
|
System.print("Between 1900 and 2100:-")
|
|
System.print(" There are %(dates.count) months that have five full weekends.")
|
|
System.print(" The first 5 are:")
|
|
for (i in 0..4) System.print(" %(dates[i])")
|
|
System.print(" and the last 5 are:")
|
|
for (i in -5..-1) System.print(" %(dates[i])")
|
|
System.print("\n There are %(years.count) years that do not have at least one five-weekend month, namely:")
|
|
var chunks = Lst.chunks(years, 10)
|
|
for (i in 0...chunks.count) System.print(" %(chunks[i])")
|