Eikös vois tehä niin et joka toinen kuukaus ois ohjelmointi kilpailu ku ei tuu yhtään ideaa ja tekee mieli skabaa jonku kaa =D.
Tosiaan kohtapuoliin voisi olla aika jonkinlaiselle kilpailulle, tai siis aika alkaa keskustelemaan mistä tällä kertaa kilpailtaisiin. Hyviä ehdotuksia on vanhassa keskustelussa.
Ja tämä kuuluisi kilpailukeskustelun puolelle...
Minua henkilökohtaisesti kiinnostaisi jonkinlainen demo-kilpailu.
Demon väsäämisen yrittäminen voisi kiinnostaa minuakin - viime demokilpailussa en olisi vielä saanut mitään kummoista aikaiseksi, nyt ehkä voisi taitoja riittää. Jos demokilpailu toteutuu, aiheen pitäisi mielestäni olla selkeästi rajattu, jotta osallistuvista demoista löytyisi edes jotain yhteistä, ja vertailu vähän helpottuisi...
Miten olisi tekoälyjen pokeriturnaus? Pelinä esimerkiksi pokereistä yksinkertaisin Texas Hold'em. Tässä tekoälyn rajapinnan pitäisi olla sellainen, että tekoäly voisi kerätä tietoa vastustajien pelitavoista.
FooBat kirjoitti:
Miten olisi tekoälyjen pokeriturnaus? Pelinä esimerkiksi pokereistä yksinkertaisin Texas Hold'em. Tässä tekoälyn rajapinnan pitäisi olla sellainen, että tekoäly voisi kerätä tietoa vastustajien pelitavoista.
Bläh, viime kilpallussakin piti väsätä tekoälyn.
Tai miten olisi MasterMind-tekoälykilpailu? Siinä sitten pelattaisiin joka älyllä muutama peli ja eniten voittoja saanut voittaisi.
Olen joskus tehnyt Master Mind -pelin, jossa tietokone arvaa oikean rivin. Paras arvausalgoritmi on yksinkertainen. Kone vain etsii seuraavan mahdollisen rivin, johon kaikki edelliset vastaukset käyvät. Jokaisen uuden arvauksen tulos karsii jäljelläolevia vaihtoehtoja. Varsinainen tekoäly astuisi kehään, jos kone valitsisi jäljelläolevista vaihtoehdoista sellaisen, joka antaisi mahdollisimman hyviä vinkkejä seuraavia arvauksia varten. Tai jos kone keräisi pitkän päälle tietoa, minkälaisia rivejä eri pelaajilla on tapana laatia.
Korttipelit ovat siinä mielessä tylsiä, että tietokoneella on lyömätön etu pelattujen korttien muistamisessa. Hyvä tietokonekorttipeli on sellainen, jossa koneen pelitapa muistuttaa inhimillistä pelitapaa. Koneen muisti olisi yhtä rajallinen kuin ihmisen. Jos panee kaksi konetta pelaamaan vastakkain, koneet pelaa tietenkin parhaimmalla tavalla, jolloin niiden pelitapa ei edes muistuta ihmisen pelitapaa.
Itsekin kannatan pokeritekoälykilpailua.
Ei tekoälyn 'epäinhimillisyys' minua haittaa, halukkaat tehköön sitten erittäin 'inhimillisen' tekoälyn kilpailuun, jonka pärjääminen olisi valitettavan epätodennäköistä.
Texas Hold'em on siitä mielenkiintoinen, että yhdistelmävaihtoehtoja on järjetön määrä, joten tekoälylle olisi luvassa ainakin mukavasti haastetta, erityisesti, jos aikaraja on pieni.
Miten olisi hyötyohjelmakilpailu?
Meitsi kirjoitti:
Miten olisi hyötyohjelmakilpailu?
Ainakin minun mielestä tuo olisi kivoin, mutta ongelmaksi tulee sopivan ohjelman keksiminen: sen toimintaa tulisi voida arvostella täysin objektiivisesti - ja kahdesta ohjelmasta tulisi selkeästi voida nähdä kumpi on parempi -, sen pitäisi olla fiksusti ratkaistavissa eri tavoilla (esmes joku "laske sanat tekstitiedostosta" tuskin tuo hirveästi tulosvarianssia), ja sen pitäisi olla sillä tavalla erikoinen, että sitä ei voi ratkaista vain copy-pastaamalla jonkin algoritmin (tyyliin "pakkaa tiedosto", johon löytyy helposti voittokelpoinen open source -ratkaisu).
Unohdinkin varmasti tuosta listasta vielä jotain. Jos jotain sopivaa kuitenkin tulee mieleen, siitä vain ehdottamaan.
Deewiant kirjoitti:
(esmes joku "laske sanat tekstitiedostosta" tuskin tuo hirveästi tulosvarianssia)
Itse asiassa, jos tehtävänä olisi etsiä esimerkiksi kymmenen eri sanan lukumäärät jostakin isosta tiedosto, niin tuloksissa olisi varmasti suuriakiakin eroavaisuuksia. Tuohon ongelmaan on nimittäin niin paljon eri algoritmeja ja tälläisissä ongelmissa pienilläkin optimoinneilla on suuri vaikutus.
Miten olisi ohjelma, joka ratkoo salakielisen tekstin? Salakieli olisi yksinkertaisesti sellainen, jossa joka kirjain olisi korvattu jollain toisella kirjaimella tai merkillä. Välilyönnit ja erotinmerkit eivät olisi koodattu.
Jos tehtävä on liian helppo, voidaan lisätä vielä kielen tunnistus. Mahdollisia kieliä olisi suomi, englanti, ruotsi plus joku muu.
Mitä lyhyempi salakielinen tekstinpätkä, sitä hankalampi ratkottava. Ohjelma joutuisi hyödyntämään sanastoja. Olen joskus tutkinut OpenOfficen sanastoja, eikä niitä ole kovin hankala käyttää.
Oikein kirjoitus tekoäly, ehlä hieman liian vaikea.
Joku oikolukujuttu voisi olla oikeastaan aika sopivan tasoinen. Se vaatisi mielestäni kuitenkin aika suuren sanatietokannan/-tiedoston, jota ilman homma olisi hakuammuntaa. Kannasta tulisi löytää myös sanan sanaluokan, jolloin esim. yhdysviivavirheet voisi korjata. Ohjelmien vertailukin saattaisi olla hankalaa, tietysti voisi simppelisti vaan vertailla oikeiden merkkien prosenttiosuutta.
Oikolukuohjelmaa tulisi varmaan monen laista, ja selkeässä arvostelussa voisi olla hankaluuksia ainakin, jos ohjelmalta vaadittaisiin muutakin kuin sanojen oikeellisuuden tarkistaminen sanastosta. Mutta miten olisi tavutusohjelma, vai onko se liian helppo? Jokaisesta oikeasta tavuviivasta plus ja ylimääräisestä miinus. Tietenkin toteutettava algoritmisesti eikä minkään sanaston avulla. Suomen sanat on kuitenkin mahdollista tavuttaa sääntöjen mukaisesti oikein, vain tietynlaiset yhdyssanat tuottavat ongelmia. Esimerkiksi liu-ku-o-vi, liu-kuo-vi. Ihminen tietää, ettei jälkimmäinen ole oikea sana, mutta mistäpä kone sen tietäisi ilman sanastoa.
Kilpailun aihe voisi olla myös yksinkertaisesti tekstinkäsittelyohjelma, johon saisi sitten ahtaa mielinmäärin haluamiaan ominaisuuksia: Sanojen laskijoija, oikolukijoita, tavuttajia jne. Voittaja määräytyisi sitten nopeuden, käytettävyyden ja monipuolisuuden mukaan.
Eikö jokin raati voisi valita finaaliin muutaman lupaavimman ja niistä sitten kävijät saisivat itse äänestää.
Joku pikkupeli... ehkä?
Ei tuo Metabolixin ehdottama sanojen taivutus ole kaikissa sanoissa helppoa toteuttaa. Mitenkä tavutetaan esimerkiksi sana kaivosaukko? Ohjelman pitäisi pystyä tutkimaan tekstistä tarkoitetaanko eläintä vai ei, ja tämä on varsin hankalaa.
No enkös minä itsekin niin sanonut. Mutta ei-yhdyssanoilla tuon voisi ottaa aiheeksi.
Metabolix kirjoitti:
No enkös minä itsekin niin sanonut.
Et. Kysyit, että onko tuo liian helppo, ja vastasin, että ei ole. Esimerkkini vain osoitti, että kaikkien sanojen taivutusta ei voi päätellä suoraan sanasta, vaan täytyy tietää asiayhteydestä mitä sanalla tarkoitetaan.
Hm, jos kilpailun aiheena olisi avaruusammuskelu. Eli se missä lennällään aluksella pitkin vierivää näyttöä, ammutaan porukkaa, kerätään bonuksia ja silleen. Tai sitten kehitellään joku oldschool-demo, taikka jotain kikkailua vaikka esim. simulaatioiden kanssa tai muuta..
-Grey-
Jaska kirjoitti:
Metabolix kirjoitti:
No enkös minä itsekin niin sanonut.
Et.
Sanoinpas. "Suomen sanat on kuitenkin mahdollista tavuttaa sääntöjen mukaisesti oikein, vain tietynlaiset yhdyssanat tuottavat ongelmia." Annoin ihan esimerkinkin (liu-kuo-vi, liu-ku-o-vi)
Hau-is-sa vai ha-uis-sa? Kumpikaan ei ole yhdyssana, mutta sana voidaan tavuttaa kahdella tavalla. Mitäs siihen sanot? Sanojen tavuttaminen ei ole aina triviaalia edes epäyhdyssanojen kohdalla.
Mutta tuossahan on kyseessä eri sana (hauki, haku), vaikka kirjoitusasu taivutettuna onkin sama. Molemmat voitaisiin siis hyväksyä, tai sitten lisätään sääntöihin se, että ohjelmalle annetaan myös sanan perusmuoto, josta voi tuollaisenkin tarkistaa. Jos kyseessä on hauki, niin ei sitä voi jälkimmäisellä tavalla taivuttaa.
Ahaa, tuo "Molemmat voitaisiin siis hyväksyä" selittää paljon. Olin ajatellut, että tavutusohjelman tulisi osata tulkita tekstiä ja hylätä muoto hau-is-sa jos tarkoituksena olisi taivuttaa muodossa ha-uis-sa. Eli siis ohjelman ei tarvitse yrittää tulkita tekstistä kumpaa tarkoitetaan. Olin ymmärtänyt tehtävän väärin.
Juu, pysytään nyt ihan realismin rajoissa :) Ei tässä mitään puhuvaa konetta olla keksimässä. Ajattelin, että sana kerrallaan elettäisiin. Tavutuksesta seuraava, vaikeampi aste olisi nominien taivutus, joka ei sekään aivan mahdoton olisi. Ainakaan tavutuksen jälkeen, kun on valmis tavutusfunktio olemassa.
kilpailua odotellessa, tylsänä perjantai-iltana tein tälläsen ehdotuksen kilpailuun.
Pelaaja 1 on x, ja pelaaja 2 y. Maailmaa katsotaan ylhäältäpäin ja kumpienkin pitää yrittää päästä pisteeseen Z ennen toista. Sitten kilpailun järjestäjä ohjelmoi kentän, jossa seinää voi merkitä vaikka kirjain C.
esim.
CCCCCCCCCCCCCCCCCC
CZ-----CCC-----------------Y-C
CC--------------------CCCCCCCC
C-----C--C------C------------C
C--CCCC---------C----------X-C
CCCCCCCCCCCCCCCCCC
seuraavaksi kaikki osanottajat luovat hahmonsa jolla luonnollisesti on kaksi ominaisuutta, x ja y eli ylös ja sivulle. Sitten he luovat liikeradan ja jos liikerata osuu seinään, menee hahmo kaksi pykälää taaksepäin. Tarkoitus olisi siis luoda liiketapa joka tunnustelee seinien määrää ja paikkaa ja joka löytää kohteen Z mahdollisimman vähillä siirroilla.
Ja lisämakuahan tälläiseen kilpailuun tulisi jos aina yhden erän voittaja tekisi seuraavan kentän tai pistettäisiin ohjelma arpomaan seinien paikat ;)
Mikäli nyt ymmärsin edellisen ehdotuksen oikein, niin idea on vähän turhan yksinkertainen. Lyhimmän reitin etsintä onnistuu nopeasti (kohtuukokoisella kentällä) A-star -algoritmillä, eikä eroa kilpailijoiden välille saataisi helposti.
Jos vaikka ensin karsittaisiin ne, joiden tekoäly on selvästi joukon huonoin (joten sillä lailla parhaat löytyisivät melko äkkiä) ja sitten parhaille jotain kivaa esim. 3 - ulotteinen kenttä lisähankaluudeksi.
Ja onko se loppujen lopuksi huono asia, jos idea on yksinkertainen :D
On kyllä hyvä, jos idea on yksinkertainen, mutta sen pitää olla sellainen, johon on paljon erilaisia järkeviä toteuttamistapoja. Yritin äskeisellä tarkoittaa, että parhaat tekoälyt olisivat todennäköisesti aivan tasoissa.
Tuohon tosiaan on mahdollista tehdä suhteellisen helposti algoritmi, joka löytää tiensä melko suurenkin paikan läpi varsin nopeasti. Vrt. viime vuoden Datatähti-kilpailun tehtävä, jossa piti löytää PacManille reitti, jota kulkiessa kahden peräkkäisen voimapillerin väli olisi lyhimmillään. Tuollaista monen pelaajan systeemiä on aivan älytöntä ruveta kehittämään; se ei ole kilpailun kannalta reilu, kun hahmot eivät varsinaisesti pelaa vastakkain (vrt. ristinolla).
Huomattavasti vaativamman tästä saisi sillä, että tasot olisi esitetty seinien päätepisteiden koordinaattien avulla. Vinotkin seinät olisivat siis mahdollisia. Silloin voisi olla jo 2D-algoritmissakin työtä, 3D-algoritmista puhumattakaan (seinät kolmioina, tietenkin). Määrätään vielä hahmon leveys, niin jopas päästäänkin kiinnostaviin laskelmiin. Epäsäännöllinen muoto, niin päästään laskemaan vielä lisäksi kaikkein edullisin liikkuma-asento. Sitten vielä massa ja painovoima mukaan, ja tehtäväksi kehittää reitti, jota pitkin energiankulutus on mahdollisimman pieni kaikkine nousuineen ja kääntymisineen :)
Valitkaa siitä mieleisenne säännöt :P Alkaa vain tulla vähän liiankin matemaattista ja fysikaalista touhua tästä.
Tuossa yllä olevassa ehdotuksessa on jo järkeä, mutta voi olla hiukan hankalaa toteuttaa nuoremmille koodaajille
Muistutan, että ohjelmoinnissa ei ikä välttämättä kerro mitään. Ikäjako sarjoissa ei todennäköisesti ole kovin mielekäs (squid: etpä kovin paljon nuorempi ole). On hankala keksiä tehtävää, jossa hyvillä ja vähemmän hyvillä olisi yhtä hyvät mahdollisuudet, ja minusta kilpailusta menee idea, jos täydellisiä vastauksia tulee liikaa. Siksipä mieluummin vaikea kuin liian helppo tehtävä.
Tuossa edellisessä oli siis vain ideoita, tarkoituksena näyttää, kuinka vaikean tuosta tehtävästä saa muokattua. Realistisena kilpailuideana voi pitää sitä ensimmäistä vaihetta: 2D-maailma, jonka seinät ovat päätepisteiden koordinaatteina. Vaikkapa vielä kokonaislukupisteinä, ja puolet testisyötteistä suoraseinäisiä (siis vain vaaka- ja pystyseiniä). Ja tähän se hahmon leveys mukaan. Se ei minusta ole vielä liian hankala (siis uskoisin saavani muutamassa tunnissa toimivan ratkaisun rajallisen kokoisessa maailmassa).
Mutta, tiistaina alkaa Datatähti, eli ehkäpä ensin kisaillaan sen tehtävillä.
Mikäs on siis näillä näkymin seuraava kilpailu ja koska se alkaa?
Aihe on jo aika vanha, joten et voi enää vastata siihen.