lauantai 10. lokakuuta 2020

Tuomiopäivän algoritmi

Viime kuukaudet ovat paikoin tuntuneet lopun ajoilta. Ilokseni voin kertoa, että tuomiopäiväkin on tiedossa: se on lauantai.

En kuitenkaan tarkoita mitään maallisen tai korkeamman oikeusasteen päätöspäivää, vaan John Conwayn näppärää algoritmia viikonpäivien laskemiseen. Sen avulla pystyy pienellä harjoittelulla sanomaan ihan tuosta vain, mikä päivä 30.11. sattuu olemaankaan (maanantai).

Jostain syystä en ollut opetellut temppua aiemmin, ja eiköhän tältä kielialueelta löydy vielä joku muukin toistaiseksi valistumaton. Eiköhän siis selvitetä, mistä on kyse.

Seitsenpäiväinen kellotaulu

Tempun ydin on kellotaululaskennassa eli jakojäännöksissä. Kellossahan 13 on sama kuin 1, joka on jakojäännös 12:lla jaettaessa. Tällä kertaa kellotaulussa onkin vain seitsemän numeroa. Maanantai on 1, tiistai 2, ja sunnuntai 7 eli 0. Sama toimii isommillakin luvuilla: 17 on sama kuin 3.

Mikä sitten on tuomiopäivä? Jotkin helposti muistettavat päivämäärät osuvat keskenään samalle viikonpäivälle. Helpoimmat ovat 4.4., 6.6., 8.8., 10.10. ja 12.12. (voit tarkistaa, että jokainen on sama viikonpäivä). Samaan kategoriaan kuuluvat myös helmikuun viimeinen päivä, tammikuun 3. (tavallinen vuosi) tai 4. (karkausvuosi) sekä kumminkin päin toimivat parit 9-5 ja 7-11.

Viimeisten muistisäännöksi Wikipedia antaa "I work 9 to 5 at 7-11". Suomessa ei ole 7-Eleven-myymälöitä, mutta muistisääntöä ei oikein voi suomentaa R-Kioskiksi.

Taulukon muodossa tuomiopäiviä ovat siis

  • 3.1. (tavallinen -), 4.1. (karkausvuosi)
  • 28.2. (tavallinen -), 29.2. (karkausvuosi)
  • Edellinen sääntö on kätevä tulkita muodossa 0.3.
  • 4.4.
  • 9.5.
  • 6.6.
  • 11.7.
  • 8.8.
  • 5.9.
  • 10.10.
  • 7.11.
  • 12.12.

Nyt siis temppu ei ole sen vaikeampi kuin hakea lähin tuomiopäivä, laskea erotus päivissä, ottaa jakojäännös ja päätellä siitä viikonpäivä.

Esimerkki: 30.11. on maanantai, koska

  1. Lähin tuomiopäivä: fiiliksestä riippuen 7.11. tai 12.12.
  2. Erotus ensimmäiseen on 23 päivää, jälkimmäiseen -12 päivää (marraskuun viimeinen on sama kuin "joulukuun nollas")
  3. Jakojäännös on kummassakin tapauksessa 2: kaksi enemmän kuin 21 tai -14.
  4. Tuomiopäivä on lauantai, siihen kaksi lisää: maanantai.

John Conway oli niin harjaantunut tempussa, että hän pystyi parissa sekunnissa laskemaan minkä tahansa viikonpäivän vuosisadan sisällä. Hän ilmeisesti pisti tietokoneensa kyselemään päiviä kirjautumisen yhteydessä: sisään ei päässyt, ellei selvinnyt tehtävistä tiukan aikarajan sisällä.

Menneet ja tulevat tuomiopäivät

Conwayn ei tarvinnut osata ulkoa koko vuosisadan tuomiopäiviä, koska nekin on helppo päätellä. 365 on yksi enemmän kuin seitsemän monikerta, joten tuomiopäivä siirtyy joka vuosi yhdellä ja karkausvuonna toisellakin.

Siis:

  • 2019: torstai, koska 2020 on karkausvuosi
  • 2020: lauantai
  • 2021: sunnuntai, koska 2021 ei ole karkausvuosi

Riittää siis tietää yhden vuoden tuomiopäivä, ja loput voi selvittää laskemalla välissä olevien vuosien ja karkausvuosien lukumäärän.

Tähänkin voi opetella nokkelan algoritmin, mikäli siltä tuntuu (lähde):

  1. Joka vuosisadalla on oma kiintopisteensä. 2000-luvulla se on tiistai, 1900-luvulla keskiviikko.
  2. Otetaan vuoden kaksi viimeistä numeroa. (Esimerkiksi 2017 menee muotoon 17.)
  3. Jos luku on pariton, lisätään 11. (17+11 = 28.)
  4. Jaetaan kahdella. (28/2 = 14.)
  5. Jos tämä luku on pariton, lisätään taas 11. (14 on parillinen.)
  6. Vähennetään tämä määrä päiviä vuosisadan kiintopisteestä. (14 on seitsemän monikerta, joten vuoden 2017 tuomiopäivä on tiistai miinus 0 eli tiistai.)

Jotta nämä temput sujuvat, täytyy siis harjoitella pikkaisen seitsemän monikertojen kanssa pelaamista. Se ei ole mikään mahdoton tehtävä, ja sitten osaakin melkoisen party trickin! (Tai no, ehkä vaikutuksen tekee jossain muussa tilanteessa.)

Itse olen havainnut algoritmin hyödylliseksi leipähyllyllä, kun pitäisi selvittää leivän jäljellä oleva elinaika (tai siis elottomuus-aika). Liekö se noloa, etten aina tiedä, monesko päivä on...

Kuka Conway oli?

John Conway (1937–2020) oli maailman tunnetuimpia matematiikan popularisoijia. Hänen kantava ajatuksensa oli, että matikalla tulee leikkiä. Elämänsä aikana hän kehitti monenlaisia pelejä ja härveleitä: vaikkapa ristinollaa muistuttavan Versot-pelin ja legendaarisen Game of Lifen. Samaan aikaan hän teki pitkän ja laajan akateemisen uran algebran ja lukuteorian tutkijana.

Conway kuoli 11.4.2020 (eli vuoden 15. tuomiopäivänä) koronaviruksen aiheuttamaan tautiin. Aperiodical-matikkablogissa on hyvä kokoelma muisteluita hyvistä – ja vähemmän hyvistä – kohtaamisista Conwayn kanssa.

Ei kommentteja:

Lähetä kommentti

Kommentit ovat moderoituja — yritän hyväksyä kommenttisi mahdollisimman pian. Voit kirjoittaa kommenttiin LaTeX-koodia tai yksinkertaista HTML-merkintää: lue lisää Kommentointi-sivulta.