Kirjautuminen

Haku

Tehtävät

Kilpailut: Ristinollakilpailu

Järjestäjä: Antti Laaksonen

Kilpailutehtävä

Tehtävänä on ohjelmoida tekoäly, joka osaa pelata ristinollaa. Tekoäly lukee tiedostosta tehdyt siirrot, päättää niiden perusteella seuraavan siirron ja tallentaa sen toiseen tiedostoon. Kaksi tällaista tekoälyä pelaavat vastakkain, ja kilpailussa kaikki tekoälyt pelaavat vuorollaan toisiaan vastaan. Tekoälyjen käynnistyksestä ja tiedostojen käsittelystä pitää huolen erillinen kilpailun järjestävä ohjelma.

Kilpailuaika

1. kesäkuuta 2004 – 30. kesäkuuta 2004

Ristinollan säännöt

Kaksi pelaajaa merkitsevät ruudukkoon vuoron perään oman tunnuksensa: toinen ruksin ja toinen ympyrän. Se pelaaja, joka ensimmäisenä saa viisi omaa merkkiään peräkkäin vaaka-, pysty- tai vinosuunnassa, on voittaja. Tässä kilpailussa ruudukon koko on rajoitettu, ja jos ruudukko loppuu kesken, peli menee tasan.

Tekoälyn nimi

Keksi tekoälylle omaperäinen nimi, jonka pituus on 3 – 8 kirjainta. Tätä nimeä käytetään tekoälyyn liittyvissä tiedostoissa ja myöhemmin tuloslistoissa.

Ohjelmoinnista

Tekoäly lukee pelitilanteen samassa hakemistossa olevasta tiedostosta <nimi>.luk, jossa <nimi> on tekoälyn nimi. Jos tekoälyn nimi on kake, tiedoston nimi on siis kake.luk. Tiedoston ensimmäisellä rivillä lukee ruudukon koko (sivunpituus), joka on 5 – 50 ruutua. Tämän jälkeen jokaisella rivillä tiedoston loppuun saakka on kaksi lukua, jotka ilmaisevat merkittyjen ruutujen sijainnin leveys- ja pystysuunnassa. Viimeinen merkintä on vastapelaajan tekemä, ja jos merkintöjä ei ole lainkaan, tekoäly saa aloittaa.

Esimerkkitiedosto kake.luk:

10
5 4
5 5
4 4
6 4
3 4
2 4
5 3
3 5

Tämä tiedosto vastaa seuraavanlaista tilannetta:

Vuorossa olisi tässä tapauksessa risti, koska viimeinen merkintä on nolla. Tekoälyn ei kuitenkaan tarvitse välittää käytetyistä symboleista, koska merkinnät on tehty tiedostoon vuorotellen ja oikeassa järjestyksessä. Viimeinen merkintä siis on aina vastapelaajan tekemä, tai sitten tekoäly on aloitusvuorossa.

Kun tekoäly on päättänyt merkittävän ruudun, se tallentaa uuden merkinnän sijainnin ilmoittavat luvut samassa hakemistossa olevaan tiedostoon <nimi>.kir, jossa <nimi> on tekoälyn nimi. Jos tekoälyn nimi on kake, tiedoston nimi on siis kake.kir.

Esimerkkitiedosto kake.kir:

4 5

Nyt tilanne näyttäisi seuraavalta:

(kuva kuva_x0_2.png puuttuu)

Tähän päättyy ohjelman suoritus yhden siirron osalta.

Ohjelman ei siis pidä tulostaa mitään tekstiä näytölle tai avata näkyviin ikkunaa. Sen ainoa tehtävä on luoda samaan hakemistoon <nimi>.kir-tiedosto, josta löytyy tieto ohjelman tekemästä siirrosta.

Ongelmatilanteet

Kilpailun järjestävä ohjelma tarkistaa merkinnän, luo tarvittavat uudet tiedostot ja käynnistää sen jälkeen vastapelaavan tekoälyn. Jos merkintä on virheellinen (ruudukon ulkopuolella tai toisen merkinnän päällä), peli päättyy ja toinen pelaaja on voittaja.

Peli joudutaan myös keskeyttämään, jos tekoälyn miettiminen kestää liian kauan. Tekoäly saa käyttää yhden merkinnän tekemiseen korkeintaan kymmenen sekuntia aikaa. Yritä siis optimoida koodi mahdollisimman tehokkaaksi!

Ympäristö

Ohjelmointikieli on vapaa, käännetyn ohjelman täytyy kuitenkin toimia Windowsissa. Kilpailuun voi myös osallistua PHP-skriptillä, jolloin erillistä käännettyä ohjelmaa ei ole.

Ohjelmat ajetaan tietokoneella, jossa on 3 GHz prosessori, 1 Gt muistia ja Windows XP -käyttöjärjestelmä.

Osallistuminen

Kilpailuun saa osallistua kuka tahansa. Kaikkein tärkeintä on se, että tekoälyn ohjelmoi itse eikä lainaa jonkun muun tekemää koodia tai algoritmia.

Osallistuaksesi kilpailuun lähetä kesäkuun loppuun mennessä sähköpostilla osoitteeseen kilpailu@ohjelmointiputka.net viesti, jossa on ainakin seuraavat tiedot:

Laita viestin liitteeksi kaksi tiedostoa: tekoälyn lähdekoodi ja ajettava ohjelmatiedosto. Tiedostojen nimien alkuosan täytyy olla sama kuin tekoälyn nimi. Jos esimerkiksi tekoälysi nimi on kake ja olet ohjelmoinut sen C-kielellä, tiedostojen nimet ovat kake.c ja kake.exe.

Viestin saapumisesta perille tulee varmistus.

Kilpailun toteutus

Kaikki tekoälyt pelaavat toisiaan vastaan kaksi peliä, kumpikin saa aloittaa kerran. Voitosta saa kaksi pistettä, tasapelistä yhden pisteen ja häviöstä ei yhtään. Tulokset sekä kaikkien pelien kulku tulevat nähtäväksi Internetiin. Myös "suorat lähetykset" ovat mahdollisia...

Kysymykset

Kilpailuun liittyviä kysymyksiä voi lähettää osoitteeseen kilpailu@ohjelmointiputka.net. Vastaukset julkaistaan tällä sivulla.

Menestystä tekoälyn ohjelmointiin!

--

Uutisia 1.6.2004

Oman tekoälyn toiminnan testaamiseen on nyt valmis ohjelma, jonka avulla tekoälyä vastaan voi pelata itse. Kopioi ohjelma (13 kt).

Useat henkilöt ovat huomauttaneet, että tarkka aikaraja yhtä merkintää kohden olisi tarpeellinen mm. oikeudenmukaisen pelin varmistamiseksi. Tämä pitää varmasti täysin paikkansa. Siksi aikaraja on nyt päätetty: yhden merkinnän miettimiseen saa kulua korkeintaan kymmenen sekuntia.

Ohjelmointikieliin liittyviä tarkennuksia: kilpailuun saa osallistua muiden muassa .NET-kielillä, Javalla ja CoolBasicilla.

Uutisia 3.6.2004

Teemu Valo on tehnyt mainion ristinollatekoälyn testiohjelman, jonka avulla kaksi tekoälyä voi pelata vastakkain ja joka ottaa huomioon kymmenen sekunnin aikarajan. Kopioi ohjelma (179 kt).

Ruudukon koko on aiheuttanut jonkun verran keskustelua. Yhdessä pelissä ruudukon koko pysyy aina samana. Kilpailun järjestävä ohjelma ei siis muuta kesken kaiken ruudukon kokoa, vaikka reunat tulisivat vastaan. Peleissä käytettäviä ruudukkokokoja ei ole vielä päätetty, minkä vuoksi tekoälyn täytyy ymmärtää kaikenkokoiset ruudukot väliltä 5 – 50 ruutua sivunpituutena.

Uutisia 6.6.2004

Alkuperäisestä testiohjelmasta on uusi versio, jonka avulla kaksi tekoälyä voi pelata toisiaan vastaan, tekoälyn käyttämä aika on rajoitettu ja tekoälyn käynnistyskomennon voi valita. Tämän ansiosta mm. PHP:llä, Javalla ja Pythonilla tehtyjä tekoälyjä voi nyt testata ohjelmalla. Kopioi ohjelma (19 kt).

Tarkennuksena sääntöihin: Tekoälyohjelma ei saa luoda mitään muita tiedostoja kuin .kir-tiedoston, johon se tallentaa uuden merkintänsä.

Uutisia 12.6.2004

Lisäys sääntöihin: Voit liittää osallistumisviestiin vapaamuotoisen, sanallisen selityksen tekoälyn toiminnasta, joka tulee näkyviin tekoälyn tietojen yhteyteen tuloslistalle. Sanallinen selitys ei ole pakollinen, mutta varmasti monia kiinnostava ja siksi toivottava.

Uutisia 1.7.2004

Kilpailuaika on nyt päättynyt. Osallistujien määrä ylitti kaikki odotukset: kilpailussa on mukana peräti 33 tekoälyä. Ensimmäinen turnaus, johon kuuluu 1056 peliä, käynnistyy tämän päivän aikana, ja tulokset tulevat näkyviin Internetiin heti, kun kaikki turnaukset ja pelit on pelattu.

Tässä listassa on kaikkien osallistuneiden tekoälyjen nimet: airn, arilu, bakaXO, chiman, D_Ahma, DelphiXO, fläbä, Habit, IQ200, kahjo, Konna14, Lurpak, Magne, Miranda, Mopo, Neuroman, PascAivo, pepe, plyyr, pottis, Ristialy, sekopaa, solver, SuperX, tapot, taysnull, Tikru, vekkuli, viljo, Ville, viritys, wzh2, x0bot.

Jos oma tekoälysi puuttuu listalta, vaikka sen lähetit, ota pikaisesti yhteyttä!

Uutisia 4.7.2004

Kilpailun tulokset ovat nyt selvinneet! Kilpailun voittajaksi selviytyi Ville Pettersson, joka sai lähes täydet pisteet. Toisella sijalla oli Hannu Trey ja kolmanneksi ylsi Ville Mäkynen. Kaikki tulokset ja jokaisen pelin kulku selviää tulossivulta.

Kiitokset kilpailuun osallistuneille! Lisää kilpailuja on tulossa.

Tietoa sivustosta