Курс языка программирования Raku / Приложение 🆕 / Порядок выполнения и функции / Порядок выполнения и логика / Exercises / Високосные годы
Решение: Високосные годы
Вот один из возможных вариантов решения задачи.
Код
for 2000, 1900, 2024, 2023 -> $year {
my $leap = $year %% 400 || ($year %% 4 && !($year %% 100));
say "$year: { $leap ?? 'leap' !! 'common' }";
}🦋 Исходный код можно найти в файле leap-year.raku.
Вывод
2000: leap
1900: common
2024: leap
2023: commonКомментарии
Правило читается прямо как логическое выражение: високосный год — это тот, что делится на 400, или тот, что делится на 4, но не на 100.
%%— проверка делимости.1900делится на 100, но не на 400, поэтому он обычный;2000делится на 400, поэтому он високосный.Тип
Dateв Raku уже знает это правило. Он предоставляет его как.is-leap-year— метод объекта даты, так что вы создаёте любую дату в этом году (здесь 1 января) и спрашиваете у неё:for 2000, 1900, 2024, 2023 -> $year { my $leap = Date.new($year, 1, 1).is-leap-year; say "$year: { $leap ?? 'leap' !! 'common' }"; }
Впрочем, смысл упражнения в том, чтобы записать это правило самостоятельно.