import java.time.DayOfWeek
import java.time.LocalDate
import java.time.format.DateTimeFormatter
object LastFridaysOfYearProgram {
// Return all last Fridays of each month in a given year
private fun lastFridaysOfYear(year: Int) = sequence {
for (month in 1..12) {
// Last day of the month
var date = LocalDate.of(year, month, 1)
.plusMonths(1)
.minusDays(1)
// Walk backward to Friday
while (date.dayOfWeek != DayOfWeek.FRIDAY) {
date = date.minusDays(1)
}
yield(date)
}
}
@JvmStatic
fun main(args: Array<String>) {
val year: Int =
if (args.isNotEmpty()) args[0].toInt()
else 2026
val fmt = DateTimeFormatter.ofPattern("MM/dd/yyyy")
for (date in lastFridaysOfYear(year)) {
println(date.format(fmt))
}
}
}
/*
run:
01/30/2026
02/27/2026
03/27/2026
04/24/2026
05/29/2026
06/26/2026
07/31/2026
08/28/2026
09/25/2026
10/30/2026
11/27/2026
12/25/2026
*/