Курс по 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' }";
    }

    Упражнението, разбира се, е за това сами да напишете правилото.

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

Високосни години   |   Вид триъгълник