Raku-Kurs / Anhang 🆕 / Ablauf und Funktionen / Kontrollfluss und Logik / Exercises / Schaltjahre
Lösung: Schaltjahre
Hier ist eine mögliche Lösung der Aufgabe.
Code
for 2000, 1900, 2024, 2023 -> $year {
my $leap = $year %% 400 || ($year %% 4 && !($year %% 100));
say "$year: { $leap ?? 'leap' !! 'common' }";
}🦋 Du findest den Quellcode in der Datei leap-year.raku.
Ausgabe
2000: leap
1900: common
2024: leap
2023: commonKommentare
Die Regel liest sich unmittelbar als boolescher Ausdruck: Ein Schaltjahr ist eines, das durch 400 teilbar ist, oder eines, das durch 4, aber nicht durch 100 teilbar ist.
%%ist der Teilbarkeitstest.1900ist durch 100, aber nicht durch 400 teilbar, ist also ein Gemeinjahr;2000ist durch 400 teilbar, ist also ein Schaltjahr.Rakus Typ
Datekennt diese Regel bereits. Er stellt sie als.is-leap-yearbereit — eine Methode auf einem Datumsobjekt, Sie erzeugen also irgendein Datum im Jahr (hier den 1. Januar) und fragen es:for 2000, 1900, 2024, 2023 -> $year { my $leap = Date.new($year, 1, 1).is-leap-year; say "$year: { $leap ?? 'leap' !! 'common' }"; }
In der Übung geht es natürlich darum, die Regel selbst zu schreiben.
Kursnavigation
← Schaltjahre | Art des Dreiecks →