Cursus Raku / Elementa / Conditiones comprobationes / Exercitationes / Annus bisextilis

Solutio: Annus bisextilis

Disclaimer

Solutio infra proposita intendit te exercere utendo conditionibus. In vita reali, potes discere methodos classis Date in-builtae. Hoc discemus in secunda parte cursus.

Solutio

Algorithmus detectionis si annus est bissextilis:

  1. si annus non est divisibilis per 4 => annus communis
  2. si annus non est divisibilis per 100 => annus bissextilis
  3. si annus non est divisibilis per 400 => annus communis
  4. aliter => annus bissextilis

Nota quod potes uti typis in-builta ad operandum cum data et tempore, itaque ad hanc quaestionem redibimus in secunda parte cursus.

Codex 1

Prima solutio reproduciit gradus supra litteratim:

my $year = prompt 'Annus: ';

if $year % 4 {
    say 'Annus communis';
}
elsif $year % 100 {
    say 'Annus bissextilis';
}
elsif $year % 400 {
    say 'Annus communis';
}
else {
    say 'Annus bissextilis';
}

🦋 Inveni programmam in archivo leap-year.raku.

Codex 2

In secunda solutione, logica compacta est in unam expressionem. Parentheses non semper necessariae sunt sed hic additae sunt pro claritate.

my $year = prompt 'Annus: ';

say (($year %% 400) || (($year %% 4) && ($year % 100))) ?? 'Annus bissextilis' !! 'Annus communis';

🦋 Inveni programmam in archivo leap-year-formula.raku.

Output

Experire utrumque programma cum casibus criticis, exempli gratia, 1900, 2000, 2020, 2021.

$ raku exercises/conditional-checks/leap-year.raku
Annus: 1900
Annus communis

$ raku exercises/conditional-checks/leap-year.raku
Annus: 2000
Annus bissextilis
$ raku exercises/conditional-checks/leap-year-formula.raku
Annus: 2020
Annus bissextilis

$ raku exercises/conditional-checks/leap-year-formula.raku
Annus: 2021
Annus communis

%% vs %

Nota quod in contextibus Booleanis, operatores %% et % sunt complementarii. Potes uti hoc facto ad eligendum unum ex operatoribus ad vitandum explicitum comparationem cum zero.

say ?(100 % 3);    # Verum
say 100 % 3 != 0;  # Verum

say ?(100 %% 3);   # Falsum
say 100 %% 3 != 0; # Falsum

Cursus navigatio

Codicis sectiones / Locales variabiles   |   Ansae

Haec pagina automatice translata est per ChatGPT 4o. Originalis Anglicus textus

Translationes huius paginae: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська