Nopat gif-animaationa

Lisäsin noppa-appiin tason x + y + x = n ja tein siitä gif-animaation. Nauti elokuvasta. Tarina nopista löytyy artikkelista https://mikonfysiikka.wordpress.com/2019/08/27/kolme-noppaa-ja-zip-komento/

Mainokset

GeoGebra apps table

There are many different versions of GeoGebra. I made a table that shows which apps work in different operating systems. Our Lead Developer Mike B. checked and corrected the table. Thanks Mike.

I will try to update this maybe monthly. Link to Google sheets table.

[edit 18.3. Zoltán added Rasperry Pi, thanks.]

[edit. 29.8.8. Updated the table]

Kolme noppaa ja Zip-komento

Millä todennäköisyydellä kolmea noppaa heitettäessä saadaan summaksi 10? Havainnollistetaan tilannetta kolmiulotteisesti käyttämällä GeoGebran listoihin liittyviä komentoja. Teen sovellukseni GeoGebra 5:llä ja komennot kirjoitan Syöttökenttään.

Luodaan ensin kaikki tulosvaihtoehdot pisteiksi kolmiulotteiseen koordinaatistoon käyttämällä kolmea sisäkkäistä Jono-komentoa. Jos tämän kirjoittaa käsin, niin kannattaa ensin kirjoittaa

Jono( <Lauseke>, <Muuttuja>, <Alkuarvo>, <Loppuarvo> )

ja sen jälkeen <Lauseke> korvata uudella Jono-komennolla tyyliin

Jono( Jono( <Lauseke>, <Muuttuja>, <Alkuarvo>, <Loppuarvo> ),<Muuttuja>, <Alkuarvo>, <Loppuarvo> )

ja sen jälkeen vielä kerran samalla tavalla

Jono( Jono( Jono( <Lauseke>, <Muuttuja>, <Alkuarvo>, <Loppuarvo> ), <Muuttuja>, <Alkuarvo>, <Loppuarvo> ), <Muuttuja>, <Alkuarvo>, <Loppuarvo> )

Lopuksi täytetään muut muuttujien kohdat ja annetaan lista nimeksi pisteet. Lopullinen komento on

pisteet = Jono(Jono(Jono((aa, bb, cc), aa, 1, 6), bb, 1, 6), cc, 1, 6)

Komento tuottaa kuusi listaa, jossa on kaikki 6·6·6 = 216 pistettä.

pisteet = {{{(1, 1, 1), (2, 1, 1), (3, 1, 1), (4, 1, 1), (5, 1, 1), (6, 1, 1)}, {(1, 2, 1), (2, 2, 1), (3, 2, 1), (4, 2, 1), (5, 2, 1), (6, 2, 1)}, {(1, 3, 1), (2, 3, 1), (3, 3, 1), (4, 3, 1), (5, 3, 1), (6, 3, 1)}, {(1, 4, 1), (2, 4, 1), (3, 4, 1), (4, 4, 1), (5, 4, 1), (6, 4, 1)}, {(1, 5, 1), (2, 5, 1), (3, 5, 1), (4, 5, 1), (5, 5, 1), (6, 5, 1)}, {(1, 6, 1), (2, 6, 1), (3, 6, 1), (4, 6, 1), (5, 6, 1), (6, 6, 1)}}, {{(1, 1, 2), (2, 1, 2), (3, 1, 2), (4, 1, 2), (5, 1, 2), (6, 1, 2)}, {(1, 2, 2), (2, 2, 2), (3, 2, 2), (4, 2, 2), (5, 2, 2), (6, 2, 2)}, {(1, 3, 2), (2, 3, 2), (3, 3, 2), (4, 3, 2), (5, 3, 2), (6, 3, 2)}, {(1, 4, 2), (2, 4, 2), (3, 4, 2), (4, 4, 2), (5, 4, 2), (6, 4, 2)}, {(1, 5, 2), (2, 5, 2), (3, 5, 2), (4, 5, 2), (5, 5, 2), (6, 5, 2)}, {(1, 6, 2), (2, 6, 2), (3, 6, 2), (4, 6, 2), (5, 6, 2), (6, 6, 2)}}, {{(1, 1, 3), (2, 1, 3), (3, 1, 3), (4, 1, 3), (5, 1, 3), (6, 1, 3)}, {(1, 2, 3), (2, 2, 3), (3, 2, 3), (4, 2, 3), (5, 2, 3), (6, 2, 3)}, {(1, 3, 3), (2, 3, 3), (3, 3, 3), (4, 3, 3), (5, 3, 3), (6, 3, 3)}, {(1, 4, 3), (2, 4, 3), (3, 4, 3), (4, 4, 3), (5, 4, 3), (6, 4, 3)}, {(1, 5, 3), (2, 5, 3), (3, 5, 3), (4, 5, 3), (5, 5, 3), (6, 5, 3)}, {(1, 6, 3), (2, 6, 3), (3, 6, 3), (4, 6, 3), (5, 6, 3), (6, 6, 3)}}, {{(1, 1, 4), (2, 1, 4), (3, 1, 4), (4, 1, 4), (5, 1, 4), (6, 1, 4)}, {(1, 2, 4), (2, 2, 4), (3, 2, 4), (4, 2, 4), (5, 2, 4), (6, 2, 4)}, {(1, 3, 4), (2, 3, 4), (3, 3, 4), (4, 3, 4), (5, 3, 4), (6, 3, 4)}, {(1, 4, 4), (2, 4, 4), (3, 4, 4), (4, 4, 4), (5, 4, 4), (6, 4, 4)}, {(1, 5, 4), (2, 5, 4), (3, 5, 4), (4, 5, 4), (5, 5, 4), (6, 5, 4)}, {(1, 6, 4), (2, 6, 4), (3, 6, 4), (4, 6, 4), (5, 6, 4), (6, 6, 4)}}, {{(1, 1, 5), (2, 1, 5), (3, 1, 5), (4, 1, 5), (5, 1, 5), (6, 1, 5)}, {(1, 2, 5), (2, 2, 5), (3, 2, 5), (4, 2, 5), (5, 2, 5), (6, 2, 5)}, {(1, 3, 5), (2, 3, 5), (3, 3, 5), (4, 3, 5), (5, 3, 5), (6, 3, 5)}, {(1, 4, 5), (2, 4, 5), (3, 4, 5), (4, 4, 5), (5, 4, 5), (6, 4, 5)}, {(1, 5, 5), (2, 5, 5), (3, 5, 5), (4, 5, 5), (5, 5, 5), (6, 5, 5)}, {(1, 6, 5), (2, 6, 5), (3, 6, 5), (4, 6, 5), (5, 6, 5), (6, 6, 5)}}, {{(1, 1, 6), (2, 1, 6), (3, 1, 6), (4, 1, 6), (5, 1, 6), (6, 1, 6)}, {(1, 2, 6), (2, 2, 6), (3, 2, 6), (4, 2, 6), (5, 2, 6), (6, 2, 6)}, {(1, 3, 6), (2, 3, 6), (3, 3, 6), (4, 3, 6), (5, 3, 6), (6, 3, 6)}, {(1, 4, 6), (2, 4, 6), (3, 4, 6), (4, 4, 6), (5, 4, 6), (6, 4, 6)}, {(1, 5, 6), (2, 5, 6), (3, 5, 6), (4, 5, 6), (5, 5, 6), (6, 5, 6)}, {(1, 6, 6), (2, 6, 6), (3, 6, 6), (4, 6, 6), (5, 6, 6), (6, 6, 6)}}} 

Paremman havainnollistuksen saa, kun katsoo listaa CAS-ikkunassa.

3D-piirtoalueella lista pisteet näyttää tältä.

Listan pisteet pituus on kuusi. Luodaan yksi lista, jossa pisteet ovat peräkkäin listana käyttämällä Tiivistä-komentoa. Se ikään kuin poistaa ylimääräiset sulkeet eli tässä tapauksessa turhat listat.

kaikki = Tiivistä(pisteet)
kaikki = {(1, 1, 1), (2, 1, 1), (3, 1, 1), (4, 1, 1), (5, 1, 1), (6, 1, 1), (1, 2, 1), (2, 2, 1), (3, 2, 1), (4, 2, 1), (5, 2, 1), (6, 2, 1), (1, 3, 1), (2, 3, 1), (3, 3, 1), (4, 3, 1), (5, 3, 1), (6, 3, 1), (1, 4, 1), (2, 4, 1), (3, 4, 1), (4, 4, 1), (5, 4, 1), (6, 4, 1), (1, 5, 1), (2, 5, 1), (3, 5, 1), (4, 5, 1), (5, 5, 1), (6, 5, 1), (1, 6, 1), (2, 6, 1), (3, 6, 1), (4, 6, 1), (5, 6, 1), (6, 6, 1), (1, 1, 2), (2, 1, 2), (3, 1, 2), (4, 1, 2), (5, 1, 2), (6, 1, 2), (1, 2, 2), (2, 2, 2), (3, 2, 2), (4, 2, 2), (5, 2, 2), (6, 2, 2), (1, 3, 2), (2, 3, 2), (3, 3, 2), (4, 3, 2), (5, 3, 2), (6, 3, 2), (1, 4, 2), (2, 4, 2), (3, 4, 2), (4, 4, 2), (5, 4, 2), (6, 4, 2), (1, 5, 2), (2, 5, 2), (3, 5, 2), (4, 5, 2), (5, 5, 2), (6, 5, 2), (1, 6, 2), (2, 6, 2), (3, 6, 2), (4, 6, 2), (5, 6, 2), (6, 6, 2), (1, 1, 3), (2, 1, 3), (3, 1, 3), (4, 1, 3), (5, 1, 3), (6, 1, 3), (1, 2, 3), (2, 2, 3), (3, 2, 3), (4, 2, 3), (5, 2, 3), (6, 2, 3), (1, 3, 3), (2, 3, 3), (3, 3, 3), (4, 3, 3), (5, 3, 3), (6, 3, 3), (1, 4, 3), (2, 4, 3), (3, 4, 3), (4, 4, 3), (5, 4, 3), (6, 4, 3), (1, 5, 3), (2, 5, 3), (3, 5, 3), (4, 5, 3), (5, 5, 3), (6, 5, 3), (1, 6, 3), (2, 6, 3), (3, 6, 3), (4, 6, 3), (5, 6, 3), (6, 6, 3), (1, 1, 4), (2, 1, 4), (3, 1, 4), (4, 1, 4), (5, 1, 4), (6, 1, 4), (1, 2, 4), (2, 2, 4), (3, 2, 4), (4, 2, 4), (5, 2, 4), (6, 2, 4), (1, 3, 4), (2, 3, 4), (3, 3, 4), (4, 3, 4), (5, 3, 4), (6, 3, 4), (1, 4, 4), (2, 4, 4), (3, 4, 4), (4, 4, 4), (5, 4, 4), (6, 4, 4), (1, 5, 4), (2, 5, 4), (3, 5, 4), (4, 5, 4), (5, 5, 4), (6, 5, 4), (1, 6, 4), (2, 6, 4), (3, 6, 4), (4, 6, 4), (5, 6, 4), (6, 6, 4), (1, 1, 5), (2, 1, 5), (3, 1, 5), (4, 1, 5), (5, 1, 5), (6, 1, 5), (1, 2, 5), (2, 2, 5), (3, 2, 5), (4, 2, 5), (5, 2, 5), (6, 2, 5), (1, 3, 5), (2, 3, 5), (3, 3, 5), (4, 3, 5), (5, 3, 5), (6, 3, 5), (1, 4, 5), (2, 4, 5), (3, 4, 5), (4, 4, 5), (5, 4, 5), (6, 4, 5), (1, 5, 5), (2, 5, 5), (3, 5, 5), (4, 5, 5), (5, 5, 5), (6, 5, 5), (1, 6, 5), (2, 6, 5), (3, 6, 5), (4, 6, 5), (5, 6, 5), (6, 6, 5), (1, 1, 6), (2, 1, 6), (3, 1, 6), (4, 1, 6), (5, 1, 6), (6, 1, 6), (1, 2, 6), (2, 2, 6), (3, 2, 6), (4, 2, 6), (5, 2, 6), (6, 2, 6), (1, 3, 6), (2, 3, 6), (3, 3, 6), (4, 3, 6), (5, 3, 6), (6, 3, 6), (1, 4, 6), (2, 4, 6), (3, 4, 6), (4, 4, 6), (5, 4, 6), (6, 4, 6), (1, 5, 6), (2, 5, 6), (3, 5, 6), (4, 5, 6), (5, 5, 6), (6, 5, 6), (1, 6, 6), (2, 6, 6), (3, 6, 6), (4, 6, 6), (5, 6, 6), (6, 6, 6)}

Listan kaikki pituus on 216.

Jotta saamme ongelmastamme hieman yleisemmän, luodaan liuku n. siten, että se saa kokonaislukuarvoja välillä [1, …, 20]. Tuossa on pari ylimääräistä lukua, mutta ne toiminevat tarkastuksena, että menetemä on oikea. Kirjoitetaan syöttökenttään

n = 10

ja klikataan Algebra-ikkunassa sen vasemmalla puolella olevaan pallukkaan. Klikkaamalla liukua hiiren oikealla painikkeella saadaan ominaisuudet ja Liukusäädin ikkunassa:

Seuraavaksi selvitetään, millä kaikki-listan pistellä summa on yhtä suuri kuin n.

Tässäkin voisi käyttää sisäkkäisiä jono-komentoja, mutta ehkä tyylikkäämpää on käyttää Zip-komentoa. Komennon yleinen syntaksi on seuraava

Zip( <Lauseke>, <Muuttuja1>, <Lista1>, <Muuttuja2>, <Lista2>, ... )

Selvennetään Zip-komentoa esimerkillä. Jos lista A = {1, 2, 3} ja B = {4, 5, 6, 7}, niin komento

testi = Zip((a, b), a, A, b, B)

tuottaa listan 

testi = {(1, 4), (2, 5), (3, 6)} 

Komennossa a on listan A alkioihin liittyvä sisäinen muuttuja ja b liittyy B:n alkioihin. Tässä tapauksessa (a, b) tuottaa pisteitä siten, että ensin otetaan ensimmäinen alkio A:sta ja ensimmäinen B:stä eli (1, 4), sitten toiset alkiot eli (2, 5) ja sitten kolmannet (3, 6). Nyt kaikki A:n alkiot on käyty läpi ja ei tuoteta lisää pisteitä. Yleisesti tällä komennolla voidaan suorittaa komentoja useille listoille. Syntyvän listan pituuden määrittää lyhin lista. Itse käytän Zipiä useimmiten, kun haluan käydä yhden listan kaikki alkiot kerralla. 

Luodaan lista suotuisille tapauksille. Sisäinen muuttuja a käy läpi kaikki-listan alkiot. Jos-ehdon sisällä x(a) + y(a) + z(a) laskee a-pisteen koordinaattien summan.

suo = Zip(Jos(x(a) + y(a) + z(a) == n, a), a, kaikki)

tuottaa listan

suo = {(?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (6, 3, 1), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (5, 4, 1), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (4, 5, 1), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (3, 6, 1), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (6, 2, 2), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (5, 3, 2), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (4, 4, 2), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (3, 5, 2), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (2, 6, 2), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (6, 1, 3), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (5, 2, 3), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (4, 3, 3), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (3, 4, 3), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (2, 5, 3), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (1, 6, 3), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (5, 1, 4), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (4, 2, 4), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (3, 3, 4), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (2, 4, 4), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (1, 5, 4), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (4, 1, 5), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (3, 2, 5), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (2, 3, 5), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (1, 4, 5), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (3, 1, 6), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (2, 2, 6), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (1, 3, 6), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?), (?, ?, ?)} 

Noista määrittelemättömistä pisteistä (?, ?, ?) pääsee eroon komenolla

suotuisat = PoistaMäärittelemätön(suo)
suotuisat = {(6, 3, 1), (5, 4, 1), (4, 5, 1), (3, 6, 1), (6, 2, 2), (5, 3, 2), (4, 4, 2), (3, 5, 2), (2, 6, 2), (6, 1, 3), (5, 2, 3), (4, 3, 3), (3, 4, 3), (2, 5, 3), (1, 6, 3), (5, 1, 4), (4, 2, 4), (3, 3, 4), (2, 4, 4), (1, 5, 4), (4, 1, 5), (3, 2, 5), (2, 3, 5), (1, 4, 5), (3, 1, 6), (2, 2, 6), (1, 3, 6)} 

Listan suotuisat pituus on 27, niinpä summan 10 todennäköisyys on 27/216 = 1/8.

Valmis appletti löytyy sivulta https://www.geogebra.org/m/rdhryznv

Kirjat 2019

Antti Heikkinen, Risainen elämä. Elämänkerta. Mielettömän moniin haastatteluihin perustuva Juicen elämän tarina. Minusta haastatteluja olisi voinut olla vähemmän. Tuli surullinen olo Juicen alkoholismin kuvauksesta. Sain joululomalla lopulta luettua tämän kesällä aloitetun mökkikirjan.

Dave Eggers, The Circle. Science fiction. Lähitulevaisuuteen sijoittuva dystopia. 1984 tyyppinen Iso Veli valvoo -tarina. Googlen ja Applen kaltainen yritys, jonka somesovellukset valtaavat markkinat on kai pahis. Päähenkilö on ärsyttävän tyhmästi käyttäytyvä nainen tai sitten hän on äärimmäisen häikäilemätön sosiopaatti.

James S. Corey, Leviathan Wakes. Science fiction. Vajaat 600 sivua avaruusoopperaa. Ihminen osaa liikkua nopeahkosti Aurinkokunnassa ja energiaakin on käytössä. Maa, Mars ja asteroidivyöhyke ovat eriytyneet omiksi kansoikseen. Mukana myös elämää muualta. En ihmettele, että Amazon tuotti/osti tämän omalle tv-kanavalleen. Pakko katsoa Expanse-sarja ja lukea koko trilogia. Suosittelen.

Peter Farrell, Math Adventures with Python. Oppikirja. Hyvä opas matikanopettajille, jotka haluavat käyttää Pythonia ohjelmoinnin opetuksessa. Aloittaa ohjelmoinnin kilpikonnagrafiikalla, niin kuin moni meistä vanhoista nörteistä Logolla. Hyvä opas.

Margaret Atwood, Orjattaresi. Science fiction. Miehet (ja osa naisista) ovat ottaneet vallan ja  uskonnon avustuksella orjuuttavat naisia. Mielenkiintoinen dystopia, kirjan viimeinen luku oli hyvä.

James S. Corey, Caliban’s War. Science fiction. Expanse-sarjan toinen osa. Mukaan tulee pari uutta henkilöä ja taistelu pahoja korporaatioita vastaan saa ratkaisun. Taustalla on Aurinkokunnan ulkoisen elämän tuottaman protogeenin uhka. Vauhdikas tarina, riittävästi actionia.

Reijo Mäki, Gekko. Dekkari. Viihdyttävä Vares kesälomalle. Tällä kertaa tutkitaan kadonneen taiteilijan tapausta. Paljon tasa-arvoisia vitsejä. Tämä oli hyvä. Kun lukee Vareksen noin vuodessa niin ei kyllästy.

Marco Vinchi, Kuolema Firenzessä. Dekkari. Mielenkiintoinen tarina 60-luvun Firenzestä. Vanhahko poliisi tutkii teinipojan katoamista. Aika hidastempoinen. Kehystarinana Firenze ja vuoden 1966 suurtulva. Loppu on aika tyly.

Heikki Ylikangas, Nurmijärven rosvot. Tietokirja. Puuduttavan tarkka tutkimus mitä Nurmijärvellä ja sen ympäristössä tapahtui 1820-luvulla. Tässäkin olisin kaivannut sen ajan karttoja esittämään miten Nurmijärveltä kuljettiin vaikkapa Sipooseen tai Hämeenlinnaan. Kirja valotti hyvin Taaborilla nähtyä teatteriesitystä.

Päivittelen tätä sivua pikkuhiljaa vuoden myötä, kun kirjoja tulee luetuksi.

Kirjat 2018
Kirjat 2017