Kirjoittaja: Antti Laaksonen
Risto järjesti korttipakan kortit ensin maiden ja sitten numeroarvojen mukaan. Sen jälkeen hän alkoi jakaa kortteja pinoihin, joista jokaiseen tuli kerrallaan yhtä monta korttia. Kun kortit loppuivat, Risto keräsi pinot yhteen ja aloitti saman lajittelun uudestaan. Aikaa kului, mutta Risto vain jatkoi korttien pinoamista. Yhtäkkiä kortit olivat menneet alkuperäiseen järjestykseen.
Ohjelman tiedossa on korttien määrä, pinojen määrä ja jokaiseen pinoon kulloinkin lisättävien korttien määrä. Tehtävänä on laskea korttikierto: kuinka monta kertaa kortit on pinottava, jotta niiden järjestys palautuu ennalleen. Ohjelman täytyy ilmoittaa pienin mahdollinen korttikierto.
Kortteja nostetaan pakasta yksi kerrallaan ja niitä lisätään pinoihin samassa järjestyksessä. Kun kaikkiin pinoihin on lisätty kortteja, aloitetaan jälleen ensimmäisestä pinosta. Kun kaikki kortit on käytetty, pinot yhdistetään järjestyksessä niin, että ensimmäinen pino päätyy pohjimmaiseksi. Tämän jälkeen uudessa järjestyksessä olevat kortit pinotaan ja yhdistetään samalla tavalla. Lopulta korttien järjestys palautuu alkuperäiseksi.
Seuraavassa kuvassa näkyy koko korttikierto, kun kortteja on neljä ja pinoja on kaksi. Ensimmäiseen pinoon lisätään aina kaksi korttia ja toiseen yksi. Tässä tapauksessa pinoihin kuluu kerrallaan kolme korttia, ja toisessa jaossa jäljellä on vain yksi kortti, joka tulee ensimmäiseen pinoon.
Neljän lajittelun jälkeen korttien järjestys on alkuperäinen. Tämä tarkoittaa, että korttikierto on myös neljä.
Testitapaukset ovat tiedostossa korkie.txt. Ensin tulee korttien määrä, sitten pinojen määrä ja lopuksi kuhunkin pinoon lisättävien korttien määrä.
Jokaiselle riville tulee:
Vastaus voisi näyttää seuraavalta:
4 4
Tämä on esimerkin oikea vastaus, mutta sitä ei tehtävässä kysytty.
37 henkilöllä on tulos. Suluissa oleva luku tarkoittaa ratkaistujen tapausten määrää.
VilleP (18), Metabolix (18), FooBat (18), Touho (18), Chiman (18), Pekka Karjalainen (18), lukujenVihaaja (18), L2-K2 (18), jlaire (18), Sisuaski (18), Päärynämies (18), Konvehti (18), ahr (18), Laitinen (18), os (18), Torgo (18), kllp (18), Jhuunhym (18), jnalanko (18), Laakeri (18), copyrite (18), TapaniS (18), symbols (18), Legu (18), membolic (18), Ruokauuni (18), öppis (18), isashkar (18), mikaelh (9), Deewiant (9), Pöytälamppu (7), teksturi (2), qalle (2), Teuro (1), AkeMake (1), Oskuz (1), Jaska (1)
Kirjaudu sisään Ohjelmointiputkaan, niin voit lähettää vastauksen tehtävään.
Katso myös Putkaposti 8: Korttikierrot.