Курс Raku / Додаток 🆕 / Порядок виконання та функції / Порядок виконання та логіка / Вправи / Високосні роки

Розв’язання: Високосні роки

Ось одне з можливих розв’язань задачі.

Код

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' }";
    }

    Проте вправа, звісно ж, про те, щоб написати це правило самотужки.

Навігація курсом

Високосні роки   |   Вид трикутника