Kurso de Raku / Esencoj / Kondiĉaj kontroloj / Ekzercoj / Superjaro
Solvo: Superjaro
Disklajmo
La solvo montrita sube celas trejni vin uzante kondiĉajn kontrolojn. En la reala vivo, vi povas lerni la metodojn de la enkonstruita klaso Date. Ni lernos ĝin en la dua parto de la kurso.
Solvo
La algoritmo por detekti ĉu jaro estas superjaro:
- se jaro ne estas dividebla per 4 => komuna jaro
- se jaro ne estas dividebla per 100 => superjaro
- se jaro ne estas dividebla per 400 => komuna jaro
- alie => superjaro
Notu, ke vi povas uzi la enkonstruitajn tipojn por labori kun dato kaj tempo, do ni revenos al ĉi tiu tasko en la dua parto de la kurso.
Kodo 1
La unua solvo reproduktas la supre menciitajn paŝojn laŭlitere:
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';
}
🦋 Trovu la programon en la dosiero leap-year.raku.
Kodo 2
En la dua solvo, la logiko estas pakita en unu esprimon. Parentezoj ne estas ĉiam necesaj sed aldonitaj ĉi tie por klareco.
my $year = prompt 'Year: ';
say (($year %% 400) || (($year %% 4) && ($year % 100))) ?? 'Leap year' !! 'Common year';
🦋 Trovu la programon en la dosiero leap-year-formula.raku.
Eligo
Provu ambaŭ programojn kun la plej kritikaj kazoj, ekzemple, 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 %
Notu, ke en Booleaj kuntekstoj, la operatoroj %% kaj % estas komplementaj. Vi povas uzi ĉi tiun fakton por elekti unu el la operatoroj por eviti eksplicitan komparon kun nulo.
say ?(100 % 3); # Vera
say 100 % 3 != 0; # Vera
say ?(100 %% 3); # Falsa
say 100 %% 3 != 0; # Falsa
Kurso navigado
← Kodoblokoj / Lokaj variabloj | Ripetoj →
Ĉi tiu paĝo estas aŭtomate tradukita per ChatGPT 4o. Originala angla teksto
Tradukoj de ĉi tiu paĝo: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська