Как отсортировать по нескольким условиям


#1

вывести на экран все высокосные года с 1587 по 2017
условия каждого 4, 100, 400 года

смог придумать только такое
for year in 1587…2017 {
if year % 4 == 0 {

    print(year)

}
}


#2
let years: [Int] = Array(1587...2017)
let leapYears = years.filter { ($0 % 4 == 0 && $0 % 100 != 0) || $0 % 400 == 0 }

через for

var results: [Int] = [Int]()
for year in years {
    if (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 {
        results.append(year)
    }
}

#3

сделал по вашему. у меня выпадают года с “00” - 1700, 1800,1900,2000
они ведь тоже высокосные?
если я правильно понял, то должны остаться только 1600 и 2000


#4

Другими словами, год является високосным в двух случаях: либо он кратен 4, но при этом не кратен 100, либо кратен 400. Год не является високосным, если он не кратен 4, либо он кратен 100, но при этом не кратен 400.

Википедия