Курс Раку / Основи / Умовні перевірки / Вправи / Високосний рік
Рішення: Високосний рік
Відмова від відповідальності
Рішення, показане нижче, має на меті навчити вас використовувати умовні перевірки. У реальному житті ви можете вивчити методи вбудованого класу Date
. Ми вивчимо це у другій частині курсу.
Рішення
Алгоритм визначення, чи є рік високосним:
- якщо рік не ділиться на 4 => звичайний рік
- якщо рік не ділиться на 100 => високосний рік
- якщо рік не ділиться на 400 => звичайний рік
- інакше => високосний рік
Зверніть увагу, що ви можете використовувати вбудовані типи для роботи з датою та часом, тому ми повернемося до цього завдання у другій частині курсу.
Код 1
Перше рішення буквально відтворює наведені вище кроки:
my $year = prompt 'Year: ';
if $year % 4 {
say 'Common year';
}
elsif $year % 100 {
say 'Leap year';
}
elsif $year % 400 {
say 'Common year';
}
else {
say 'Leap year';
}
🦋 Знайдіть програму у файлі leap-year.raku.
Код 2
У другому рішенні логіка зібрана в один вираз. Дужки не завжди потрібні, але додані тут для ясності.
my $year = prompt 'Year: ';
say (($year %% 400) || (($year %% 4) && ($year % 100))) ?? 'Leap year' !! 'Common year';
🦋 Знайдіть програму у файлі leap-year-formula.raku.
Вихідні дані
Спробуйте обидві програми з найважливішими випадками, наприклад, 1900, 2000, 2020, 2021.
$ raku exercises/conditional-checks/leap-year.raku
Year: 1900
Common year
$ raku exercises/conditional-checks/leap-year.raku
Year: 2000
Leap year
$ raku exercises/conditional-checks/leap-year-formula.raku
Year: 2020
Leap year
$ raku exercises/conditional-checks/leap-year-formula.raku
Year: 2021
Common year
%%
vs %
Зверніть увагу, що в логічних контекстах оператори %%
і %
є взаємодоповнюючими. Ви можете використовувати цей факт, щоб вибрати один із операторів, щоб уникнути явного порівняння з нулем.
say ?(100 % 3); # True
say 100 % 3 != 0; # True
say ?(100 %% 3); # False
say 100 %% 3 != 0; # False
Навігація по курсу
← Блоки коду / Локальні змінні | Цикли →
Ця сторінка автоматично перекладена за допомогою ChatGPT 4o. Оригінальний текст англійською мовою.
Переклади цієї сторінки: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська