Kirjautuminen

Haku

Tehtävät

Kilpailu

Ohjelmoi tekoäly!
Aikaa on 30.6. saakka.

Kilpailut: Lukupeli

Järjestäjä: Metabolix

Kesän 2014 tekoälykilpailussa pelataan yksinkertaista luvunarvauspeliä, jossa voittoon ei riitä oma taktiikka vaan vastustajan periaatteen arvaaminen.

Kilpailuaika

Kilpailu alkaa lauantaina 28.6.2014 ja päättyy sunnuntaina 10.8.2014 klo 20.00.

Pelin kulku

Pelissä on kaksi pelaajaa ja 1000 kierrosta. Joka kierroksella molemmat pelaajat valitsevat kokonaisluvun väliltä 0–9. Kummatkin saavat pisteitä pienemmän luvun verran. Lisäksi pienemmän luvun valinnut pelaaja saa kolme lisäpistettä, tai jos luvut ovat samat, molemmat saavat yhden lisäpisteen.

Esimerkki 1: Pelaaja A valitsee luvun 8 ja pelaaja B valitsee luvun 9. Pelaaja A saa 8+3 pistettä ja pelaaja B saa 8 pistettä.

Esimerkki 2: Pelaaja A valitsee luvun 4 ja pelaaja B valitsee luvun 4. Pelaaja A saa 4+1 pistettä ja pelaaja B saa myös 4+1 pistettä.

Kilpailun kulku

Jokainen tekoäly pelaa kerran jokaista muuta vastaan. Kilpailussa lasketaan tekoälyn pisteet eli otteluissa kerättyjen pisteiden summa sekä voitot eli niiden otteluiden määrä, joissa tekoäly saa enemmän pisteitä kuin vastustaja. Tekoäly ei kuitenkaan saa ottelusta pisteitä eikä voittoa, jos se ylittää 120 sekunnin aikarajan.

Tuloksissa huomioidaan samassa suhteessa pisteet ja voitetut ottelut. Kokonaispisteet lasketaan seuraavalla kaavalla:

kokonaispisteet = pisteet * max(voitot) + voitot * max(pisteet)

Tässä max(voitot) ja max(pisteet) tarkoittavat suurinta voittojen ja ottelupisteiden määrää koko kilpailussa.

Ohjelman toiminta

Tekoäly on käynnissä koko 1000 kierroksen ottelun ajan. Se on komentoriviohjelma, joka lukee kilpailuohjelman syötettä (vastustajan siirtoja) kuten yleensä käyttäjän syötettä (näppäimistöä) ja tulostaa joka kierroksella vastauksensa kuten ruudullekin. Ohjelman toiminnasta on esimerkkejä joillakin yleisillä kielillä. Huomio! Useissa kielissä pitää tulostuksen jälkeen kutsua flush-funktiota, kuten esimerkkiohjelmissa tarvittaessa tehdään.

Kun ohjelma käynnistetään, sille syötetään rivi, jolla on luku 1000 eli pelattavien kierrosten määrä. Ohjelman tulee tulostaa vastaukseksi rivi, jolla on sen oma nimi. Sitten peli alkaa. Jokaisella kierroksella ohjelma ensiksi tulostaa rivin, jolla on sen oma valinta eli luku väliltä 0–9, minkä jälkeen ohjelmalle syötetään rivi, jolla on vastustajan valinta eli luku väliltä 0–9.

Ohjelman rajoitukset

Ohjelma saa käyttää yhdessä ottelussa kokonaisuudessaan enintään 512 megatavua muistia ja 120 sekuntia laskenta-aikaa. Ohjelman ajankäyttö pitää mitoittaa sen mukaan, että testikoneen x86-64-prosessorin kellotaajuus on 2,0 GHz. Kilpailussa mitataan aikaa, jonka ohjelma itse käyttää, eli jos ohjelma joutuu odottamaan vastustajan siirtoa, kello ei käy.

Ohjelman pitää toimia joka ajokerralla samalla tavalla. Satunnaislukuja ei saa käyttää. Kellonaika ja tietokoneen nopeus eivät saa vaikuttaa tekoälyn valintoihin. Vain vastustajan siirrot vaikuttavat siis ohjelman toimintaan.

Jos ohjelma kaatuu, käyttää yli 15 minuuttia otteluun tai tekee muun virheen, se hylätään kilpailusta kokonaan. Ohjelma voidaan hylätä myös, jos se katsotaan hyvän tavan tai kilpailun hengen vastaiseksi.

Testausohjelma

Oman tekoälyn toimintaa voi testata testausohjelmalla, jossa kaksi pelaajaa (ihmistä tai tekoälyä) voi pelata vastakkain. Testaaminen vaatii Java-tuen. Testausohjelma ei sisällä tarkkaa ajanottoa, muistirajaa eikä muitakaan erityisiä tarkistuksia.

Ohjelman nimi

Jokaisella ohjelmalla on oltava nimi, jonka pituus on 3–9 merkkiä ja joka muodostuu pelkästään kirjaimista a–z ja A–Z ja numeroista 0–9 ja sisältää ainakin yhden kirjaimen.

Ohjelmointikieli

Kilpailukoneella on kääntäjiä ja tulkkeja monille ohjelmointikielille. Mikäli kuitenkin sopiva kieli puuttuu listalta, lähetä sähköpostia tai osallistu keskusteluun, niin selvitetään, voiko asialle tehdä jotain.

Tuetut ohjelmointikielet versioineen:

Tekoälyjen tulee pitäytyä kielten perusominaisuuksissa; kääntäjästä, kirjastoista, käyttöjärjestelmästä tai prosessorin tyypistä riippuvaisia ominaisuuksia ei pidä käyttää. Ohjelman on toimittava yllä mainituilla välineillä 64-bittisessä GNU/Linux-käyttöjärjestelmässä.

Käännöksissä käytetään kohtuullisia optimointiasetuksia, esimerkiksi GCC:llä ja FPC:llä valitsinta -O2.

Osallistuminen

Ilmoittautumiseen tarvitaan seuraavat tiedot:

Tiedot julkaistaan kilpailun tulosten yhteydessä. Tiedot voi antaa netissä tai lähettää sähköpostitse osoitteeseen kilpailu@ohjelmointiputka.net. Samaa reittiä voi myös lähettää tekoälystä uusia versioita tai ilmoittaa muista muutoksista tietoihin. Ilmoittautumisen ja muutosten on oltava perillä kilpailuajan puitteissa. Osallistumisesta lähetetään sähköpostitse vahvistus muutaman päivän kuluessa, ja samalla kerrotaan, onko tekoälyssä jo heti ilmennyt jokin merkittävä vika.

Kilpailuun saa halutessaan osallistua myös usealla eri ohjelmalla, kunhan niiden toimintaperiaatteet ovat selvästi erilaiset eikä herää epäilystä, että ne erityisesti edistäisivät toistensa voittoa. Aivan samanlaisia ohjelmia ei hyväksytä kilpailuun muutenkaan.

Välitulokset

Kilpailun aikana julkaistaan otteluita ja välituloksia erillisellä sivulla. Uusista välituloksista ilmoitetaan keskustelussa. Julkaisutiheys riippuu osallistujista. Jännityksen säilyttämiseksi välitulosten yhteydessä ei vielä kerrota ohjelmien tekijöitä eikä toimintaperiaatteita.

Tarkennuksia

Kysymyksiä ja palautetta kilpailusta voi lähettää sähköpostitse tai keskusteluun.

Tietoa sivustosta