Wir schreiben das Jahr 2525, und du hast gerade eine Reise angetreten, um alle Planeten des Sonnensystems zu besuchen (Merkur, Venus, Erde, Mars, Jupiter, Saturn, Uranus und Neptun). Der erste Halt ist Merkur, wo der Zoll verlangt, dass du ein Formular ausfüllst (Bürokratie ist offenbar nicht erdspezifisch). Als du dem Zollbeamten das Formular überreichst, prüft er es genau und runzelt die Stirn. „Erwartest du wirklich, dass ich glaube, du bist erst 50 Jahre alt? Du musst eher 200 Jahre alt sein!"
Amüsiert wartest du darauf, dass der Zollbeamte loslacht, aber er meint es offenbar todernst. Dir wird klar, dass du dein Alter in Erdenjahren angegeben hast, der Beamte es aber in Merkurjahren erwartet hat! Da Merkurs Umlaufzeit um die Sonne deutlich kürzer ist als die der Erde, bist du in Merkurjahren tatsächlich viel älter. Nach ein paar schnellen Berechnungen kannst du dein Alter in Merkurjahren angeben. Der Zollbeamte lächelt zufrieden und winkt dich durch. Du nimmst dir vor, dein planetenspezifisches Alter vor künftigen Zollkontrollen vorab zu berechnen, um solche Verwechslungen zu vermeiden.
Wenn du dich fragst, warum Pluto es nicht in die Auswahl geschafft hat, schau dir dieses YouTube-Video an.
Berechne aus einem Alter in Sekunden, wie alt jemand auf einem Planeten in unserem Sonnensystem wäre.
Ein Erdjahr entspricht 365,25 Erdentagen oder 31.557.600 Sekunden. Wenn dir jemand sagt, jemand sei 1.000.000.000 Sekunden alt, dann wäre diese Person 31,69 Erdjahre alt.
Bei den anderen Planeten musst du ihre Umlaufzeit in Erdjahren berücksichtigen:
| Planet | Umlaufzeit in Erdjahren |
|---|---|
| Merkur | 0,2408467 |
| Venus | 0,61519726 |
| Erde | 1,0 |
| Mars | 1,8808158 |
| Jupiter | 11,862615 |
| Saturn | 29,447498 |
| Uranus | 84,016846 |
| Neptun | 164,79132 |
Die tatsächliche Länge eines vollständigen Umlaufs der Erde um die Sonne liegt näher bei 365,256 Tagen (1 siderisches Jahr). Der gregorianische Kalender hat im Durchschnitt 365,2425 Tage. Auch wenn das nicht ganz genau ist, wird in dieser Übung der Wert 365,25 verwendet. Unter Year auf Wikipedia findest du weitere Möglichkeiten, ein Jahr zu messen.
Einige Rust-Themen, über die du beim Lösen dieser Übung etwas nachlesen möchtest:
Traits, sowohl das From-Trait als auch eigene Traits implementieren
Standardimplementierungen von Methoden für Traits
Makros: Der Einsatz eines Makros könnte Boilerplate-Code reduzieren und die Lesbarkeit
dieser Übung verbessern. Zum Beispiel kann
ein Makro einen Trait für mehrere Typen auf einmal implementieren,
wobei es völlig in Ordnung ist, years_during im Trait Planet selbst zu implementieren. Ein Makro könnte
sowohl die Structs als auch ihre Implementierungen definieren. Informationen für den Einstieg in Makros
findest du hier:
Melde dich bei Exercism an, um Rust mit 99 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.