Koe
Tehtävä 1
Kirjoita ohjelma, joka kerää annetun sanalistan sanoista jokaisesta ensimmäisen kirjaimen ja muodostaa niistä uuden sanan. Testaa ohjelmaa jollain kymmenen sanan mittaisella listalla. Voit itse valita, kysytäänkö sanat käyttäjältä yksitellen vai syötetäänkö ne ohjelmaan esimerkiksi taulukkona.
Luultavasti käytät ohjelmassa jotain toistorakennetta. Pyri valitsemaan sellainen, jolla lopputulos on mahdollisimman elegantti ja perustele valintasi.
T1
Sinulla ei ole tarvittavia oikeuksia lähettää mitään.
Tehtävä 2
Papu yritti selvittää positiivisen kokonaisluvun alkutekijät. Tähän tarkoitukseen hän kirjoitti Python-koodin.
Papu ajoi ohjelman muuttujan n eri alkuarvoilla. Hän huomasi, että toisinaan ohjelma toimi virheettömästi ja tulosti luvun n alkutekijät, toisinaan se tulosti muitakin lukuja.
-
Anna esimerkki luvun n alkuarvosta, jolle ohjelma tulostaa listan, joka sisältää vain luvun n alkutekijöitä. (3 p.)
-
Anna esimerkki luvun n alkuarvosta, jolle ohjelma tulostaa muitakin kuin luvun n alkutekijöitä. (3 p.)
-
Selitä, miksi ohjelma ei aina toimi niin kuin Papu oli tarkoittanut ja muodosta ohjelma, joka toimii. (6 p.)
Tehtävä 2
Sinulla ei ole tarvittavia oikeuksia lähettää mitään.
Tehtävä 3
Lajitteluun on useita eri algoritmeja. Tarkastellaan tilannetta, jossa taulukollinen lukuja halutaan järjestää suuruusjärjestykseen.
Yksi tapa lajitella taulukko on valita ensimmäinen luku [[$a_1$]], verrata sitä kaikkiin muihin lukuihin ja tämän jälkeen sijoittaa se oikealle paikalleen uuteen tyhjään taulukkoon. Oikea paikkahan tiedetään, koska vertailun jälkeen on tiedossa, moniko luvuista oli pienempi kuin [[$a_1$]]. Tämän jälkeen tehdään sama kaikille muille taulukon luvuille. Lopputuloksena on uusi taulukko, jossa luvut ovat oikeassa järjestyksessä.
Muodosta jokin muu algoritmi, joka lajittelee taulukon. Arvioi, onko algoritmisi tehokkaampi vai tehottomampi kuin yllä kuvattu.
T3
Sinulla ei ole tarvittavia oikeuksia lähettää mitään.
