Kirjautuminen

Haku

Tehtävät

Kilpailu

Murra koodi!
Lue ja osallistu!
Seuraava vihje 29.1.
Voittajia 1 + yrittäjiä 1

Putkaposti: Pelinauhoitus

Kirjoittaja: Antti Laaksonen

Kiitokset tehtävästä: Otto Ebeling

Eräänä synkkänä ja myrskyisänä yönä vanha ystävämme Uolevi pelasi pikkutunneille asti juuri hankkimaansa huippumodernia Luke Mazewalker - The Ultimate Retaliation -tietokonepeliä, jossa on tavoitteena päästä lähtöruudusta maaliin mahdollisimman vähin näppäimenpainalluksin.

Uolevin luokkatoveri Krakkeri-Kalle oli kuitenkin punonut katalan juonen, josta Uolevi oli autuaan tietämätön. Koska Kalle ei itse osaa pelata peliä läpi, hän asensi Uolevin koneelle ns. keylogger-ohjelman sillä aikaa, kun Uolevi oli kamarimusiikkiryhmässä harjoittelemassa tuuban soittoa. Tämä ohjelma tallentaa kaikki Uolevin nuolinäppäinten painallukset tiedostoon ja lähettää tiedoston Kallen salakähmäiseen sähköpostiosoitteeseen.

Kallen katala suunnitelma ei ponnisteluista huolimatta tuottanut toivottua tulosta. Ohjelma toimi kyllä suunnitelman mukaisesti, mutta paria seikkaa hän ei ollut osannut ottaa huomioon. Ensinnäkään ohjelma ei tallentanut mitään tietoa siitä, kuinka kauan aikaa näppäimenpainallusten välissä kului. Lisäksi Kallen on vaikea erottaa, mitkä näppäimenpainalluksista liittyvät pelin pelaamiseen ja mitkä muuhun tietokoneen käyttöön.

Tehtävä

Auta Kallea etsimään Uolevin näppäilysarjasta yhtäjaksoinen osuus, joka oikein ajastettuna johtaa pelihahmon maaliin. On mahdollista, että tällaisia näppäilysarjoja on useita, mutta mikä tahansa maaliin vievä näppäilysarja (muukin kuin Uolevin alkuperäinen) kelpaa, sillä Kallen perimmäinen tavoite on pelikentän läpäisy eikä Uolevin suorituksen matkiminen. Kalle toimittaa sinulle kartan Uolevin pelaamasta pelikentästä sekä Uolevilta nauhoitetut näppäilyt.

Pelin hahmo liikkuu yhden ruudun sekunnissa, ja yhden näppäilyn vaikutus kestää 1 - 9 sekuntia. Vastaavasti yksi näppäily liikuttaa hahmoa 1 - 9 ruutua annettuun suuntaan. Esim. jos pelihahmo on paikallaan, Uolevi painaa ylös, odottaa kolme sekuntia, painaa alas, odottaa sekunnin, painaa oikealle ja poistuu jääkaapille, pelihahmo liikkuu kolme ruutua ylös, yhden ruudun alas ja yhdeksän ruutua oikealle, minkä jälkeen se pysähtyy. Lisäksi pelihahmo pysähtyy, vaikka yhdeksän sekuntia ei olisi vielä kulunut, jos se törmää kentän laitaan tai seinään.

Painallussarjan ajastus on numeroista 1 - 9 koostuva merkkijono, jossa ensimmäinen numero kertoo ensimmäisen ja toisen painalluksen välissä kuluvan ajan, toinen numero toisen ja kolmannen painalluksen välissä kuluvan ajan jne. Viimeinen numero kertoo, kauanko viimeisen näppäimen painalluksesta kuluu siihen, kun pelihahmo saapuu maaliin. Ohessa on annettu kolme esimerkkiä siitä, millainen vaikutus näppäimenpainallussarjalla YVA voi olla eri ajastuksilla.

Ajastus 111: Tässä kunkin näppäimenpainalluksen välissä kuluu yksi sekunti. Pelaaja siis liikkuu ensin yhden ruudun ylös, sitten yhden ruudun vasemmalle ja lopuksi yrittää liikkua yhden ruudun alaspäin, mutta törmää seinään.

Ajastus 321: Tässä näppäimenpainallusten välissä kuluu kolme, kaksi ja yksi sekuntia. Pelaaja liikkuu ensin kolme ruutua ylös, sitten kaksi vasemmalle ja lopuksi yhden alas. Näin hän päätyy maaliin.

Ajastus 333: Tässä kunkin näppäimenpainalluksen välissä kuluu kolme sekuntia. Pelaaja liikkuu ensin kolme ruutua ylös, sitten kolme vasemmalle ja törmää lopulta kolme kertaa seinään.

Testisyötteet ja pisteytys

Paketissa pena.zip (2 kt) ovat Uolevin pelaamien kenttien kartat sekä nauhoitetut näppäilyt. Jokaisen tiedoston ensimmäisellä rivillä kerrotaan ruudukon korkeus ja leveys. Tämän jälkeen kuvataan kentän rakenne (# = seinä, . = tyhjä, M = maali, L = lähtö). Lopuksi tulevat vielä näppäilysarjan pituus sekä nauhoitetut näppäilyt (Y = ylös, A = alas, O = oikealle, V = vasemmalle). Esimerkin kenttä ja näppäilysarja voidaan siis esittää seuraavasti:

4 4
....
#M#.
##..
###L
5
YYVAV

Kuvasarjan mukaisesti yksi maaliin johtava näppäilysarja löytyy erottamalla keskimmäiset kolme näppäilyä YVA ja valitsemalla ajastus 321. Yhtä hyvin kelpaisivat ajastukset 421 ja 621. Myös muut näppäilysarjat ovat mahdollisia, esim. YYVA ajastuksella 1221. Mikään alle kolmen näppäilyn sarja ei vie maaliin, mikä on ymmärrettävää, kun suorimmassa reitissä on kaksi käännöstä.

Vastauksen arvostelussa maaliin johtavista näppäilysarjoista saa pisteitä näppäilysarjan pituuden mukaan. Tarkoitus on löytää mahdollisimman lyhyt näppäilysarja, joten mitä vähemmän pisteitä saa, sitä parempi ratkaisu on. Jos jonkin kentän ratkaisu puuttuu, pisteitä tulee yksi enemmän kuin siihen kenttään liittyvän nauhoitetun näppäilysarjan koko pituus.

Vastausohje

Jokaiselle riville tulee

Vastaus voisi näyttää seuraavalta:

5 2 321

Tämä on yksi esimerkin oikea vastaus, koska aloittamalla näppäilysarjan toisesta merkistä ja liikkumalla kolme ruutua ylös, kaksi vasemmalle ja yksi alas reitti päättyy maaliin. Mutta esimerkki ei kuulu varsinaisiin testisyötteisiin, toisin kuin ne viisi tiedostoa, jotka ovat paketissa pena.zip (2 kt).

Vastaukset

28 henkilöllä on tulos. Suluissa oleva luku tarkoittaa käytettyjen näppäilyjen määrää.

jlaire (147), Metabolix (147), FooBat (147), mleino (147), Sisuaski (147), Konvehti (147), Chiman (147), os (147), Jhuunhym (147), Laitinen (147), Laakeri (147), symbols (147), Ruokauuni (147), BadHabit (152), TapaniS (165), L2-K2 (260), User137 (378), teksturi (1123), dancek (1170), Torgo (1170), qalle (1170), Andu (1171), toukonen (1174), Pekka Karjalainen (1177), petrinm (1177), Seriffi (1177), moptim (1177), Teuro (1177)

Kirjaudu sisään Ohjelmointiputkaan, niin voit lähettää vastauksen tehtävään.

Keskustelu

Katso myös Putkaposti 22: Pelinauhoitus.

Tietoa sivustosta