Tracks
/
Cairo
Cairo
/
Übungen
/
Weltraumzeitalter
Weltraumzeitalter

Weltraumzeitalter

Einfach

Einführung

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.

Note

Wenn du dich fragst, warum Pluto es nicht in die Auswahl geschafft hat, schau dir dieses YouTube-Video an.

Anleitung

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
Note

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.

Implementierung

In Cairo, wo es keine native Unterstützung für Gleitkommazahlen gibt, stellen wir Bruchwerte mit Ganzzahlen dar.

Dieser Ansatz ist in der Blockchain-Entwicklung unerlässlich, um die Genauigkeit bei Berechnungen zu erhalten.

In dieser Übung verwenden wir Festkommaarithmetik, indem wir die Umlaufzeiten in Mikrosekunden umrechnen.

Zum Beispiel werden aus Merkurs Umlaufzeit von 0.2408467 Erdjahren 240,846,700 Mikrosekunden, wenn man sie mit 1,000,000 multipliziert.

Um der Dezimalgenauigkeit Rechnung zu tragen, gehen die Testfälle davon aus, dass das resultierende Alter zwei Nachkommastellen hat, die als Ganzzahlen dargestellt werden.

Das bedeutet, dass ein Alter von 31.69 Jahren im Code als 3169 gespeichert wird.

Um das zu erreichen, multiplizieren wir vor der Division mit 100.

Hier ist ein Beispiel:

let mercury_orbital_period = 240_846_700; // in microseconds
let age_microseconds = age_seconds * 1_000_000;
// multiplying with 100 to retain 2 decimal places
age_microseconds * 100 / mercury_orbital_period

Mit dieser Methode stellst du sicher, dass Bruchwerte korrekt als Ganzzahlen dargestellt werden und gleichzeitig die erforderliche Genauigkeit von zwei Nachkommastellen erhalten bleibt, was entscheidend ist, damit die Tests bestehen.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Cairo Exercism

Bereit, mit Weltraumzeitalter zu starten?

Melde dich bei Exercism an, um Cairo mit 25 Konzepte68 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.