[edit 23.3. Lisäsin tarinan loppuun pari eri tapaa ratkaista tehtävän ja kuvan pisteistä.]
Kevään 20 pitkän matikan tehtävässä piti selvittää luonnollisiin lukuihin liittyvä lukumäärälasku. Tämähän on meille ATKnörteille simppeli ohjelmointiongelma.

Jollain ”oikealla” ohjelmointikielellä tuo taitaa olla muutaman rivin ohjelma. Ratkaistaan 2.-kohta GeoGebralla. Tässä tulee 100*100 lukua eli ei kannata käyttää CASia, veikkaan, että kone hyytynee. Käytetään Algebra-ikkunaa. Teenpä tämän GeoGebra 6:lla ihan testatakseni miten se toimii. Kokeilin tätä GG 5:llä ja tehtävä ratkesi ihan OK, mutta ohjelma alkoi himpun verran jumittaa koska listan koko on 10000.
Komento
Jono(Jono(sqrt(a b), a, 1, 100), b, 1, 100)
tuottaa listan matriisin m1. GeoGebra 5:ssä Algebraikkunassa matriisi näkyy matriisin näköisenä, GG6:ssa voi arvata, että se on matriisi sillä alussa näkyy kaksi kaarisulkua. Toisaalta sisäkkäiset Jono-komennot tuottavat aina matriiseja. Matriisin m1 pituus (eli oikeasti m1 listan pituus saadaan komennolla
Pituus(m1) -> 100
tuottaa luvun a = 100. Matriisin sisällä olevat ”turhat” kaarisulkeet saa pois Tiivistä-komennolla
Tiivistä(m1)
tuottaa listan l1, jonka pituus on
b = Pituus(l1) -> 100
Selvitetään, mikä näistä luvuista on luonnollinen luku. Ehto
floor(luku) == luku
antaa tulosteeksi true, jos luvun kokonaisosa on yhtäsuuri kuin luku itse eli onko luku kokonaisluku. Käydään läpi kaikki luvut listassa l1 ja tutkitaan mitkä ovat luonnollisia lukuja
l2 = Zip(Jos(floor(aa) == aa, aa), aa, l1) -> {1, ?, ?, 2, ?, ...
Nuo kysymysmerkit vastaavat niitä lukuja, joilla ehto ei ole voimassa. Poistetaan määrittelemättömän lista oliot eli nuo kysymysmerkit komennolla
l3 = PoistaMäärittelemätön(l2) -> {1, 2, 3, 4, ... c = Pituus (l3) -> 310
Kysytty todennäköisyys on
d = c/b
-> 31/1000

GeoGebra 6:ssa isojen listojen käsittely tuntuu sutjakkaammalta kuin GeoGebra 5:ssä. Tosin molemmissa ohjelmissa ratkaisu onnistui MacBookissani.
Lisäys 22.3.20
En malttanut olla kokeilematta paria muuta tapaa. Idea tuli Edwardilta Facebookista.
m2 = Jono(Jono(Jos(floor(sqrt(a b)) ≟ sqrt(a b), 1, 0), a, 1, 100), b, 1, 100)
tuottaa lista, matriisin, jossa on paljon nollia ja ykkösiä.
l5=Summa(m2)
tuottaa lista, jossa on vaakarivien summat {10, 7, …
Summa(l5) = 310
Toisaalta yhdellä rivillä
Jono(Jono(Jos(floor(sqrt(a b)) ≟ sqrt(a b), 1, 0), a, 1, 100), b, 1, 100) = 310
Jos olisi halunnut nuo pisteet koordinaatistoon, niin sen saa komennolla
Jono(Jono(Jos(floor(sqrt(a b)) ≟ sqrt(a b), (a, b)), a, 1, 100), b, 1, 100)
