Kirjautuminen

Haku

Tehtävät

Kilpailut: Älykäs ohjelma

Järjestäjä: Antti Laaksonen

Ohjelmointiputkassa järjestetään syksyn mittaan älykkyystestejä. Mutta testeihin eivät osallistu sivuston käyttäjät, vaan heidän tekemänsä ohjelmat. Kaikki testit ovat säännöllisten sarjojen täydennyksiä. Testit suunnitellaan niin, että ihminen näkee vastauksen suoraan. Esimerkiksi sarja A1, B2, C3 jatkuu tietysti D4, E5. Vaikeus onkin saada tietokone ymmärtämään tällaisia asioita.

Kilpailuaika

1. syyskuuta 2006 - 5. lokakuuta 2006 (huom! uusi päättymisaika)

Ohjelman nimi

Keksi ohjelmalle nimi, jonka pituus korkeintaan kahdeksan kirjainta.

Tämä nimi on käytössä ohjelmaan liittyvissä tiedostoissa.

Ohjelman toiminta

Sarjan alku on tiedostossa [nimi].luk, jossa [nimi] on ohjelman nimi. Esimerkiksi jos ohjelman nimi on hoopo, tiedoston nimi on hoopo.luk. Tämän tiedoston ensimmäisellä rivillä lukee, kuinka monta jäsentä sarjassa on valmiiksi ja kuinka monta seuraavaa jäsentä ohjelman täytyy ilmoittaa. Seuraavilla riveillä luetellaan sarjan jäsenet järjestyksessä.

Tiedosto voi näyttää esimerkiksi seuraavalta:

3 2
A1
B2
C3

Sarjasta kerrotaan valmiiksi ainakin kolme jäsentä. Ohjelman täydentämässä sarjassa on yhteensä korkeintaan kymmenen jäsentä. Jokainen sarjan jäsen muodostuu numeroista 0 - 9 ja kirjaimista A - Z. Kaikissa jäsenissä on ainakin yksi ja korkeintaan 20 merkkiä. Sarjan jäsenet voivat olla eripituisia.

Ohjelma kirjoittaa sarjan jatkon tiedostoon [nimi].kir, jossa [nimi] on ohjelman nimi. Esimerkiksi jos ohjelman nimi on hoopo, tiedoston nimi on hoopo.kir. Tähän tiedostoon tulevat sarjan seuraavat jäsenet, kukin omalle rivilleen.

Oikea vastaus äskeisen tiedoston sarjaan on:

D4
E5

Ohjelma saa käyttää yhden sarjan käsittelyyn korkeintaan kaksi sekuntia aikaa.

Ohjelma ei saa lukea tai kirjoittaa muita tiedostoja tai ottaa yhteyttä Internetiin.

Sallitut sarjat

Kaikki ohjelman käsittelemät sarjat ovat sellaisia, että ihminen näkee niihin ensi silmäyksellä yhden selkeän vastauksen. Sarjoissa ei ole kuitenkaan ihmisen maailmaan kuuluvia tietoja (esim. viikonpäivien lyhenteet), jotka pitäisi erikseen opettaa ohjelmalle. Kaikki sarjat muodostuvat siis jonkin yksinkertaisen loogisen säännön perusteella.

Tässä on esimerkkejä sallituista sarjoja:

Tällaiset sarjat eivät ole sallittuja:

Ohjelman pitää valita sarjan luonnollinen jatko. Esimerkiksi sarja 1, 2, 3 ei jatku 29, -3, vaikka voidaan muodostaa matemaattinen kaava, joka antaa juuri tämän tuloksen (-9x4/2 + 187x3/6 - 62x2 + 109x/3 + 1). Oikea vastaus on siis se, johon ihminen päätyisi nopeasti vilkaisemalla. Sarjat pyritään suunnittelemaan niin, että epäselviä tapauksia ei tule.

Ohjelmointikieli

Ohjelmointikieli on vapaa, kunhan käännetty ohjelma (exe-tiedosto) toimii Windowsilla.

Lisäksi kilpailuun voi osallistua Javalla, Perlillä, PHP:llä, Pythonilla ja Rubyllä, jolloin exe-tiedostoa ei vaadita.

Pelkkä lähdekoodi riittää myös, jos ohjelmointikieli on standardinmukainen C tai C++.

Testilaitteisto

Ohjelmat testataan tietokoneella, jonka kellotaajuus on 3 GHz ja jossa on 1 Gt keskusmuistia.

Tietokoneen käyttöjärjestelmänä on Windows XP.

Ohjelman lähetys

Lähetä ohjelma viimeistään 5.10. sähköpostilla osoitteeseen antti.laaksonen@ohjelmointiputka.net.

Liitä viestiin mukaan kolme tiedostoa:

Tiedoston nimen täytyy olla sama kuin ohjelman nimi. Testisyötteen tunnus on tes, ja sen täytyy olla tämän sivun sääntöjen mukainen. Testisyöte on muodoltaan samanlainen kuin luk-tiedosto. Esimerkiksi jos ohjelman nimi on hoopo ja se on kirjoitettu C-kielellä, tiedostojen nimet ovat hoopo.c, hoopo.exe ja hoopo.tes.

Kirjoita viestiin lisäksi:

Kilpailun jälkeen ohjelmat ja niiden lähdekoodit julkaistaan. Jos haluat esiintyä nimimerkillä, ilmoita siitä viestissä.

Kysymykset

Voit lähettää kysymyksiä kilpailusta sähköpostilla tai keskusteluun.

Tulokset

Kilpailun tulokset valmistuivat 23. syyskuuta 2006: tulokset

Parhaat ohjelmat olivat Jorma Sainion "aiq" ja Petteri Aimosen "zizzo". Ne ratkaisivat yli kolme neljännestä testiaineiston sarjoista.

Kiitos kilpailun osallistujille!

Tietoa sivustosta