Курс языка программирования 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

Комментарии

  1. Правило читается прямо как логическое выражение: високосный год — это тот, что делится на 400, или тот, что делится на 4, но не на 100. %% — проверка делимости.

  2. 1900 делится на 100, но не на 400, поэтому он обычный; 2000 делится на 400, поэтому он високосный.

  3. Тип 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' }";
    }

    Впрочем, смысл упражнения в том, чтобы записать это правило самостоятельно.

Навигация по курсу

Високосные годы   |   Вид треугольника