Űrkorszak

Űrkorszak

Könnyű

Bevezetés

Az év 2525, és épp most indultál útnak, hogy felkeresd a Naprendszer összes bolygóját (Merkúr, Vénusz, Föld, Mars, Jupiter, Szaturnusz, Uránusz és Neptunusz). Az első állomás a Merkúr, ahol a vámszabályok szerint ki kell töltened egy űrlapot (a bürokrácia láthatóan nem csak a Földre jellemző). Ahogy átnyújtod az űrlapot a vámhivatalnoknak, az alaposan szemügyre veszi, és összevonja a szemöldökét. „Tényleg azt hiszed, hogy elhiszem, hogy mindössze 50 éves vagy? Inkább 200 felé lehetsz!”

Mulattatva várod, hogy a vámhivatalnok végre nevetni kezdjen, de halálosan komolynak tűnik. Rájössz, hogy földi években adtad meg a korodat, pedig a hivatalnok merkúrévekben várta! Mivel a Merkúr Nap körüli keringési ideje jóval rövidebb, mint a Földé, a Merkúr-években valójában sokkal idősebb vagy. Néhány gyors számítás után sikerül megadnod a korodat merkúrévekben. A vámhivatalnok elmosolyodik, elégedett, és int, hogy menj tovább. Gondolatban megjegyzed magadnak, hogy a jövőbeni vámvizsgálatok előtt számold ki a bolygónkénti életkorodat, hogy elkerüld az ilyen félreértéseket.

Note

Ha azon tűnődsz, miért maradt ki Pluto, nézd meg ezt a YouTube-videót.

Utasítások

Adott egy életkor másodpercben. Számold ki, hány éves lenne valaki a Naprendszerünk egyik bolygóján.

Egy földi év 365,25 földi nappal, azaz 31 557 600 másodperccel egyenlő. Ha valakiről azt mondanák, hogy 1 000 000 000 másodperces, akkor 31,69 földi éves lenne.

A többi bolygónál számításba kell venned a keringési idejüket földi években:

Bolygó Keringési idő földi évben
Merkúr 0.2408467
Vénusz 0.61519726
Föld 1.0
Mars 1.8808158
Jupiter 11.862615
Szaturnusz 29.447498
Uránusz 84.016846
Neptunusz 164.79132
Note

A Föld Nap körüli egy teljes keringésének tényleges hossza közelebb van a 365,256 naphoz (1 sziderikus év). A Gergely-naptárban átlagosan 365,2425 nap van. Bár nem teljesen pontos, ebben a feladatban a 365,25-ös értéket használjuk. Ha többféleképpen is szeretnéd mérni az évet, nézd meg az Év szócikket a Wikipédián.

Megvalósítás

Cairoban, ahol nincs natív támogatás a lebegőpontos számokra, a törtértékeket egész számokkal ábrázoljuk.

Ez a megközelítés elengedhetetlen a blokklánc-fejlesztésben a számítások pontosságának megőrzéséhez.

Ebben a feladatban fixpontos aritmetikát használunk azzal, hogy a keringési időket mikroszekundumokká alakítjuk.

Például a Merkúr 0.2408467 földi évnyi keringési ideje 240,846,700 mikroszekundum lesz, ha megszorozzuk 1,000,000-rel.

A tizedes pontosság figyelembevétele érdekében a tesztesetek azt feltételezik, hogy a kapott életkor két tizedesjegyet tartalmaz, egész számokként ábrázolva.

Ez azt jelenti, hogy egy 31.69 éves életkor 3169-ként van tárolva a kódban.

Ennek érdekében 100-zal szorozunk, mielőtt elvégezzük az osztást.

Íme egy példa:

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

Ezzel a módszerrel biztosítod, hogy a törtértékek pontosan egész számokként legyenek ábrázolva, miközben megőrzöd a szükséges két tizedesjegy pontosságot, ami elengedhetetlen a tesztek sikeres teljesítéséhez.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Cairo Exercism

Készen állsz elkezdeni a(z) Űrkorszak feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Cairo nyelvet 25 fogalom68 feladat segítségével, valódi emberi mentorálással, mindez ingyen.