Autorské riešenie
[stiahni py]

  • Počet riešiteľov: 7 / 11 = 64 %

  • Úspešnosť riešenia: 3,57 / 6 = 60 %

V tejto úlohe riešime prevody časových jednotiek. Čas vyjadrený v hodinách, minútach a sekundách chceme previesť na čas vyjadrený v dhodinách, dminútach a dsekundách. Aby sme to vedeli zrealizovať, potrebujeme vedieť, aký je medzi týmito jednotkami vzťah. Pomôžu nám informácie zo zadania:

  • náš deň trvá rovnako dlho ako deň v krajine Deka,

  • náš deň má 24 hodín, hodina má 60 minút a minúta má 60 sekúnd,

  • deň v krajine Deka má 10 dhodín, dhodina má 10 dminút a dminúta má 10 dsekúnd. 

Celkovo teda pracujeme so šiestimi rôznymi časovými jednotkami. Je tu však aj časová jednotka, ktorá je rovnaká u nás aj v krajine Deka. Je ňou deň.

Jedno z riešení, ktoré nám možno napadne ako prvé, spočíva v prevode jednotiek po častiach. Môžeme previesť sekundy na dsekundy, minúty na dminúty a hodiny na dhodiny. Problém nám ale spôsobí skutočnosť, koľko menších jednotiek tvorí jednu väčšiu. Kým v krajine Deka to je 10, u nás je to rôzne. Pri minútach a sekundách je to 60, a pri hodinách je to 24. Museli by sme teda ešte spracovať nie celé časti dhodín, dminút a dsekúnd či spolu v súčte nevytvoria nejaké celé jednotky. To by nám trochu skomplikovalo riešenie.

Skúsme to inak:

  1. preveďme náš čas na sekundy,

  2. vyjadrime čas v sekundách ako časť dňa,
    v krajine Deka to bude rovnaká časť dňa,keďže ich deň trvá rovnako dlho,

  3. preveďme túto časť dňa na čas v dsekundách,

  4. preveďme čas v dsekundách na zodpovedajúci počet dhodín, dminút a zostávajúcich dsekúnd.

Výsledný program môže vyzerať nasledovne:

#Python
def preved_na_dcas(pocet_hodin, pocet_minut, pocet_sekund):
    cas_v_sekundach = pocet_hodin * (60 * 60) + pocet_minut * 60 + pocet_sekund
    cast_dna = cas_v_sekundach / (60 * 60 * 24)

    cas_v_dsekundach = cast_dna * (10 * 10 * 10)

    pocet_dhodin = cas_v_dsekundach // (10 * 10)
    cas_v_dsekundach = cas_v_dsekundach % (10 * 10)
    pocet_dminut = cas_v_dsekundach // 10
    pocet_dsekund = cas_v_dsekundach % 10
    return pocet_dhodin, pocet_dminut, pocet_dsekund

Pri prevode zadaného času na sekundy využijeme skutočnosť, že hodina má 3600 sekúnd a minúta má 60 sekúnd.

Ak vieme, že celý deň má 60 * 60 * 24 = 86400 sekúnd, vieme akú časť dňa predstavuje zadaný čas.

Z poznatku, že deň má 10 * 10 * 10 = 1000 dsekúnd zistíme, koľko dsekúnd má vypočítaná časť dňa.

Zostáva už len zistiť, koľko to predstavuje celých dhodín a celých dminút. Zostávajúca časť predstavuje počet dsekúnd. Aj keď náš čas bol zadaný v celých sekundách, počet zodpovedajúcich dsekúnd už nemusí byť celé číslo.

V autorskom riešení pre zaujímavosť uvádzame aj opačný prevod. Prevod zápisu času v krajine Deka na zápis používaný u nás.

Vaše zaujímavé riešenia a najčastejšie chyby

Niektorí z vás sa snažili prevádzať sekundy na dsekundy,minúty na dminúty a hodiny na dhodiny. Úlohu je možné riešiť aj takto, len následne je potrebné správne vyhodnotiť necelé časti nových jednotiek. V tejto časti ste robili chyby.

Niektoré tímy správne vyjadrili čas v sekundách. Následne ho však chceli priamo previesť na dsekundy. Je to možné, len je potrebne použiť správny koeficient.