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 • Български • Русский • Українська