Ajattele lukua välillä 1-10

Olet luultavasti kerran kohdannut ystäväsi, joka väitti pystyvänsä lukemaan ajatuksiasi, tekemällä seuraavan tempun: Ajattele lukua välillä 1-10; kerro se 9:llä; laske tuloksen numerot yhteen (esim. 23 -> 2 + 3 = 5); ja vähennä summasta 5. Tässä vaiheessa saatat olla saavuttanut arvon 4. Mistä tiedän sen? Käyttämällä samaa kaverisi temppua. Näytän sinulle käyttäen Clojurea. Kirjoitetaan ensin funktio, joka laskee yhteen luvun numerot:

(defn sum-digits (apply + (map #(Integer. (str %)) (str val))))

Arvo muutetaan merkkijonoksi, map-funktio muuttaa jokaisen numeron merkin listaksi kokonaislukuja ja funktio apply laskee listan kokonaislukuja yhteen ja palauttaa summan funktion sum-digits kutsujalle. Käytämme tätä funktiota tempun laskutoimitusten kokoamiseen:

(defn puzzle (- (sum-digits (* x 9)) 5))

Funktio puzzle suorittaa laskutoimitukset ystäväsi pyytämässä järjestyksessä. Ensin se kertoo ajattelemamme luvun luvulla 9, sitten se laskee tuloksen numerot yhteen ja lopuksi vähentää loppusumman luvulla 5. Seuraavaksi kirjoitetaan toinen funktio tempun paljastamiseksi:

(defn unveil (map #(puzzle %) (range 1 11)))

Funktio range tuottaa lukujonon, joka alkaa 1:stä 10:een ja jossa 11 ei ole mukana (1 2 3 4 5 6 7 8 9 10). Funktio map soveltaa funktiota puzzle jokaiseen luettelon numeroon ja tuottaa toisen luettelon, jossa on tulokset. Suorita nyt funktio unveil nähdäksesi tuloksen:

(unveil)(4 4 4 4 4 4 4 4 4 4)

Oh, katso! Alueella 1-10 tulos on aina 4. Toisin sanoen kuvio. Kuviot ovat hyvin läsnä kertolaskuissa, ja kun ne kaikki poistetaan, saadaan alkulukuja, kuten Mark Haddon huomauttaa kirjassaan “The Curious Incident of the Dog in the Night-Time”. Daniel Tammet havainnollistaa joitakin kuvioita kirjassaan “Thinking in Numbers: How Maths Illuminates Our Lives”. Kun kerromme minkä tahansa parillisen luvun 5:llä, saamme aina nollaan päättyviä lukuja (esim. 12 x 5 = 60), ja kun teemme sen parittomilla luvuilla, saamme aina 5:een päättyviä lukuja. 9:n tapauksessa, aina kun kerromme 9:n jollakin luvulla, joka on väliltä 1 ja 10, ja laskemme yhteen sen luvut, saamme aina 9.

Jaksossa 5:n vähentäminen 9:stä vain kiinnittää huomion kertolaskun kuviosta ja jopa parantaa temppua. Esimerkiksi: Kuvittele, että jokaisella aakkosten kirjaimella on vastaava luku (A – 1, B – 2, C – 3, …). Ota nyt tulos (4) ja hae sitä vastaava kirjain; ajattele maata, joka alkaa tällä kirjaimella; ota tämän maan neljäs kirjain ja ajattele eläintä, joka alkaa tällä kirjaimella. On erittäin todennäköistä, että lopullinen vastauksesi on “Tanska” ja “apina”. Ennen kuin luulet, että luen ajatuksiasi, selitän, mitä juuri tapahtui.

Ensiksi, ei ole montaa maata, joka alkaa D:llä, aakkosten neljännellä kirjaimella. Tanskan, Djiboutin, Dominican ja Dominikaanisen tasavallan joukosta muistat helposti Tanskan. Tanskan neljäs kirjain on “M”, eikä yksikään M-kirjaimella alkava eläin ole tunnetumpi kuin apina, joka tulee heti mieleen.

Minulla on hauskaa ohjelmoida Clojurea, ei vain siksi, että Clojurea on hauska oppia ja opettaa, vaan myös siksi, että ohjelmoinnissa ei aina ole kyse vakavista asioista. Se, että voi ohjelmoida vain tarpeeksi koodia saadakseen asioita tapahtumaan, stimuloi ajattelua, ongelmanratkaisua ja luovuutta yli rakenteiden, mallien, konventioiden ja tyylien. Koodaamisen pitäisi olla rentouttavaa eikä stressaavaa. Nauti siitä!

Vastaa

Sähköpostiosoitettasi ei julkaista.