Kirjautuminen

Haku

Tehtävät

Kilpailu

Ohjelmoi tekoäly!
Arvostele pelit
15.8. klo 12 mennessä!

Keskustelu: Ohjelmointiputka: Kivi, sakset, paperi -kilpailu

Sivut:

Sivu 2 / 3

Sivun loppuun

FooBat [14.06.2009 18:10:46]

#

Metabolix kirjoitti:

Chiman kirjoitti:

Eli tässä puolivälin mittelössä ilmeisesti julkistetaan ottelujen siirtosarjat ja pisteytys. Ei varmaankaan tekoälyjen koodeja?

Juuri näin. Koodien julkaiseminen taitaisi viedä kilpailusta pohjan.

Protip kaikille random älyn tekijöille: Kannattaa vaihtaa ohjelman seed-luku sen jälkeen kun puolivälin tulokset ja siirtosarjat on julkaistu.

vehkis91 [14.06.2009 18:50:23]

#

Niin, julkaistaanko niiden älyjen nimiä, jotka on jo lähettetty kisaan?

Metabolix [14.06.2009 21:33:42]

#

Nyt kilpailusivulla on lista älyistä osallistumisohjeen lopussa.

Juhko [15.06.2009 01:03:27]

#

Juup, pitääpä yrittää osallistua.

Opassivu kirjoitti:

Voittaja voi lunastaa seuraavassa Putkamiitissä kiven, sakset tai paperin. Palkinto arvotaan reilulla kivi, sakset, paperi -arvonnalla.

:)

jlaire [15.06.2009 09:08:49]

#

Metabolix kirjoitti:

Chiman kirjoitti:

Eli tässä puolivälin mittelössä ilmeisesti julkistetaan ottelujen siirtosarjat ja pisteytys. Ei varmaankaan tekoälyjen koodeja?

Juuri näin. Koodien julkaiseminen taitaisi viedä kilpailusta pohjan.

Kannattaakohan siirtosarjojakaan julkaista? Niitä tutkimalla saattaisi saada turhan paljon selville.

Metabolix [15.06.2009 09:18:02]

#

funktio kirjoitti:

Kannattaakohan siirtosarjojakaan julkaista? Niitä tutkimalla saattaisi saada turhan paljon selville.

Kukaan ei pakota lähettämään tekoälyä vielä välivaiheeseen, kyseessä on kilpailijan oma päätös. Toisaalta jos ei lähetä tekoälyään, ei myöskään saa selville, miten juuri se pärjää muita vastaan. Sikäli olet kyllä oikeassa, että jos tekoälystä tulee lopultakin hyvin yksinkertainen, ei ehkä kannata lähettää sitä ennen kilpailun puoliväliä, etteivät toiset saa kehitettyä juuri sitä vastaan täydellistä algoritmia.

Tarkennan vielä varmuuden vuoksi, että välierän tuloksia ei lasketa lopullisiin pisteisiin. Välivaiheeseen voi siis huoletta lähettää tekoälyn, jonka tarkoituksena on vain testata muiden toimintatapoja tai johtaa kehitystä harhaan.

jalski [15.06.2009 11:41:33]

#

Miksi rajoitus, että ohjelman pitää toimia yhdessä säikeessä?

Metabolix [15.06.2009 11:44:01]

#

Oikea taikatemppu löytyikin aivan yllättäen, joten seuraa muutos sääntöihin: Ohjelma tulostaa vastauksensa tavallisilla tulostusfunktioilla. Ohjelma voi siis tulostaa komentorivillä ruudulle. Tiedostoja tai muita ylimääräisiä kikkoja ei tarvita. (Säännöissä aiemmin mainittu toimintatapa on yhä sallittu, jos joku välttämättä haluaa käyttää sitä.)

jalski kirjoitti:

Miksi rajoitus, että ohjelman pitää toimia yhdessä säikeessä?

Millaista hyötyä useasta säikeestä tässä tapauksessa olisi?

Yhdessä säikeessä ohjelma toimii paremmin deterministisesti, monisäikeisen ohjelman lopputulokseen voisivat vaikuttaa säikeiden suoritusten vaihtelevat ajoitukset. Yksisäikeisen ohjelman toimintaa on myös helpompi valvoa kilpailutilanteessa.

vehkis91 [15.06.2009 11:59:03]

#

Eli ei tarvitse enään tiedostonkäsittelyä missään vaiheessa?
Koodi vähenee mukavasti, ku voi poistaa tiedostonkäsittelyn... :P

User137 [15.06.2009 13:10:16]

#

No juu on jo nyt vähän paranneltu älyä, pitää sitten lähettää toiselle kierrokselle uuden datan kanssa.

ps. Tuota on tosi hankala voittaa ainakaan itse :) Miks? No ei ainakaan ole 100% random.

jalski [15.06.2009 13:51:17]

#

Ajatuksissa olisi idea-asteella toteutus, mikä olisi ehkä luontevampi toteuttaa monisäikeisenä.

Tarkoitus olisi saada ohjelma pelaamaan eri tekoälyjä vastaan eri tavalla. Ohjelman seuraava siirto riippuisi edellisten siirtojen historiasta muutaman neuroverkon avulla. ensimmäinen neuroverkko palauttaisi tiedon, onko muistissa vastaavaa siirtokuviota, antaisi bittivirheen ja palauttaisi lähimmän vastaavuuden muistista. Oma säie opettaisi neuroverkkoa tarvittaessa (jos siirtokuviota ei löydy muistista). Toinen neuroverkko tallentaisi ja palauttaisi siirtokuviota mahdollisesti seuraavan siirron. Kolmas neuroverkko palauttaisi edellisen verkon avulla ennakoidun siirron peittoavan tuloksen.

Metabolix [15.06.2009 14:13:47]

#

jalski kirjoitti:

Ajatuksissa olisi idea-asteella toteutus, mikä olisi ehkä luontevampi toteuttaa monisäikeisenä.

Millä tavalla luontevampi? Minusta suunnitelmassasi on kolme peräkkäistä vaihetta, jotka ovat täysin riippuvaisia toisistaan. Näiden suorittaminen epäsynkronisesti rikkoisi deterministisyyttä koskevaa sääntöä. Ohjelmasta tulee myös varmasti lyhyempi ja tehokkaampi, kun siihen ei tarvitse sotkea lukituksia ja synkronointeja.

jalski [15.06.2009 17:55:28]

#

Kun tarkkaan mietit, niin kaikkien vaiheiden ei tarvitse olla peräkkäisiä:

Ensimmäisen neuroverkon tarkoitus olisi vain toimia muistina kilpailevan tekoälyn aiemmista peräkkäisistä siirroista. Verkkoon tallennetaan esim. vastapuolen tekemät kolmen peräkkäisen siirron sarjat bitti-vektoreina (olikohan Hoppfield-verkko?). Verkolle, kun syöttää vastapuolen kolme edellistä siirtoa palauttaa se joko alkuperäisen vektorin tai verkon muistissa sitä lähimpänä olevan sekä bittivirheen.

Säie, joka on vastuussa ensimmäisen verkon opettamisesta voi toimia taustalla, koska käyttäisin jokatapauksessa ensimmäisen verkon palauttamaa vektoria (verkon muistissa lähimpänä oleva vektori) toisen neuroverkon syötteenä.

Toisen neuroverkon (Hebbian-verkko?)tehtävänä olisi siis tallentaa ja palauttaa muistissa olevaa peräkkäistä siirtosarjaa "todennäköisesti" seuraava siirto.

Toista neuroverkkoa opettava säie pitäsi synkronoida muiden kanssa, jotta opetus tapahtuisi oikea aikaisesti ilman kilpailutilanteita.

Kolmas neuroverkko (Hebbian-verkko) olisi vastuussa oikean valinnan tekemisestä toisen verkon palauttaman syötteen mukaan. Tämä verkko olisi opetettu valmiiksi palauttamaan oikean vaihtoehdon (esim. kivi -> paperi).

Teen ohjelmointityöt yleensä Infernon Limbolla ja säikeiden synkronisoinnit saa hoidettua mukavasti käyttämällä kanavia apuna. C:llä ohjelmoitaessa tykkään eniten Plan 9 -käyttöjärjestelmän mallista: http://lsub.org/who/nemo/9.intro.pdf

Metabolix [15.06.2009 18:59:17]

#

jalski kirjoitti:

Säie, joka on vastuussa ensimmäisen verkon opettamisesta...

... täytyy synkronoida niin, että opettaminen on hoidettu siinä vaiheessa, kun verkkoa seuraavan kerran tarvitaan. Siispä opettamisen voi aivan hyvin tehdä kokonaan joko siinä vaiheessa, kun opetettava asia on selvillä, tai silloin, kun verkkoa taas tarvitaan.

jalski kirjoitti:

Kolmas neuroverkko...

... on silkkaa ajanhukkaa, kun saman asian voi tehdä lyhyellä ehtolauseella. On siis aivan turha väittää, että sille tarvitsisi säikeen.

Et ole vieläkään tainnut ajatella asiaa loppuun asti. Verkkojen opettamisen voit joka tapauksessa aloittaa aina vasta, kun saat tietää vastustajan siirron (sitähän niille opetetaan), ja opettamista seuraa heti seuraavan oman siirron valinta. Käytännössä siis verkon 2 opetus voi pyöriä taustalla tasan sen aikaa, kun verkosta 1 haetaan tulosta, ja verkon 1 opetus taas ei lainkaan. Korjaa toki ja piirrä kaavio, jos olen väärässä.

Säikeillä...

tulosta
lue
aloita opetussäie 1
aloita opetussäie 2
odota opetusta 1
laske verkon 1 tulos
odota opetusta 2
laske verkon 2 tulos

... vai ilman?

tulosta
lue
opeta verkkoa 1
laske verkon 1 tulos
opeta verkkoa 2
laske verkon 2 tulos

Yrität minusta nyt tehdä yksinkertaisesta asiasta hirveän mutkikkaan.

Grandi [16.06.2009 10:58:48]

#

Metabolix kirjoitti:

Oikea taikatemppu löytyikin aivan yllättäen, joten seuraa muutos sääntöihin: Ohjelma tulostaa vastauksensa tavallisilla tulostusfunktioilla. Ohjelma voi siis tulostaa komentorivillä ruudulle. Tiedostoja tai muita ylimääräisiä kikkoja ei tarvita. (Säännöissä aiemmin mainittu toimintatapa on yhä sallittu, jos joku välttämättä haluaa käyttää sitä.)

No miten kommunikointi vastustajabotin kanssa tapahtuu? Ei kai se osaa komentoriviltä niitä siirtoja lukea / ei kai se osaa syöttää niitä valintoja inputin kautta?

Teuro [16.06.2009 11:01:05]

#

Grandi kirjoitti:

No miten kommunikointi vastustajabotin kanssa tapahtuu? Ei kai se osaa komentoriviltä niitä siirtoja lukea?

Osaahan ohjelma nyt syötepuskurin lukea? Esimerkkiohjelmissa oli ainakin oikein hyvät esimerkit lukemiseen ja tulostamiseen.

Grandi [16.06.2009 11:04:41]

#

Joo, siltä vaikuttaa. Katsoin nuo esimerkit hieman hutaisten.

jalski [16.06.2009 16:00:17]

#

Mielestäni, jos halutaan tekoäly-ohjelmalla matkia ihmisaivojen toimintaa on ongelmanratkaisu luontevampaa jakaa prosesseihin, jotka toimivat itsenäisesti ja keskustelevat toistensa kanssa.

Samasta syystä käytän mielummin kolmatta neuroverkkoa lopullisen vastauksen saamiseen yksinkertaisen vertailun sijaan.


Alla hahmotelma toteutettuna Infernolle Limbolla käyttäen säikeitä ja kanavia. '+'-merkillä on merkattu liikenteen suunta kanavassa.

--+input--+monitor--+net1--+net2--+net3--+
             +        |
             |        |
             |        +
             |    train_net1--+train_net2
             |                      +
             |                      |
             *----------------------*

Grandi [17.06.2009 22:59:32]

#

Sääntöjen kirjoittaja kirjoitti:

Valmista dataa saa olla enintään yksi megatavu.

Tarkoittaako tämä erillisiä datatiedostoja, vai myös lähdekoodia?

Grez [17.06.2009 23:38:53]

#

Tuskinpa lähdekoodin koko on niin suuri, että sillä on suurtakaan merkitystä tuohon maksimimäärään, vaikka megatavuraja koskisikin datan ja lähdekoodin yhteismäärää. Muutenhan lähdekoodiin voisi helposti sisällyttää rajattomasti dataa.

Metabolix [18.06.2009 11:15:49]

#

Grandi kirjoitti:

Sääntöjen kirjoittaja kirjoitti:

Valmista dataa saa olla enintään yksi megatavu.

Tarkoittaako tämä erillisiä datatiedostoja, vai myös lähdekoodia?

Rajoitus koskee dataa. Jos kuitenkin kooditiedosto sisältää merkittäviä datamääriä, sekin lasketaan kokonaan mukaan, jottei sääntöä pääse kiertämään.

jalski [18.06.2009 12:04:16]

#

Toteutin ja testasin eilen kolme kappaletta oman ideoimani toteutuksen tarvitsemaa neuroverkkoa. Yhden valmiiksi opetetun ja kaksi pelin aikana oppivaa verkkoa.

Jos kilpailukoneelle olisi mahdollista saada Inferno asennettua, niin saattaisin innostua tekemään ohjelman, mikä täyttää kilpailussa asetetut vaatimukset.

Metabolix [18.06.2009 17:35:49]

#

jalski kirjoitti:

Jos kilpailukoneelle olisi mahdollista saada Inferno asennettua...

Se ei näköjään ollut mahdollista (asennusohjelma jumittui täysin), ja muutenkin epäilen, että mielekäs ajanotto ja ohjelman toiminnan valvonta olisi tuollaisessa ympäristössä mahdotonta (ts. vaatisi huomattavan määrän erityisesti siihen tarkoitukseen kirjoitettuja apuvälineitä, ehkä paljon enemmän kuin tähän mennessä yhteensä).

Antti Laaksonen [18.06.2009 20:46:39]

#

Voisitko jalski harkita jonkin muun työkalun käyttöä, koska olisi kuitenkin hauskaa saada sinunkin älysi mukaan kilpailuun?

Metabolixin sallimaa kielivalikoimaa ei voi arvostella suppeaksi:

http://www.ohjelmointiputka.net/kilpa.php?tunnus­=ksp:

Testikoneessa on Java-kehitysympäristö, GCC:n C-, C++-, Objective-C- ja Fortran-kääntäjät, Haskell-kääntäjä (GHC), Brainfuck-kääntäjä, Free Pascal ja FreeBASIC sekä Python-, Ruby-, Perl- ja PHP-tulkit ja Mono-ympäristö, jossa voi ajaa .Net-ohjelmia.

jalski [18.06.2009 20:52:04]

#

Infernon linux-version asennusohjelma ei vissiin tällä hetkellä toimi.

Osoitteessa: http://code.google.com/p/inferno-npe/downloads/list

Löytyy paketit Infernon svn 408 buildille linuxille ja windowssille. Lisäksi tarvitset fontit virallisesta asennuspaketista.

Infernolle kirjoitetun ohjelman voi ajaa shellistä suoraan käynnistämällä: emu ohjelma

FooBat [20.06.2009 18:52:27]

#

Miten kilpailun voittajat valitaan? Arvostellaanko jokainen kaksinpelisarja voitto-tappio-tasapeli tyyliin vai lasketaanko kaikkien pelien voitettujen käsien yhteismäärä kokonaistulokseksi?

Moiman [21.06.2009 11:46:41]

#

Julkaistaako lähdekoodit kaikkien saataville välivaiheessa?

trilog [21.06.2009 12:20:15]

#

Mielenkiintoinen kilpailu kieltämättä. Katsotaan saanko minkäänlaista älyä aikaiseksi. Kovin haastehan tässä on kehittää tekoäly, joka pystyy ennakoimaan ja "tietämään" vastustajan seuraavan siirron.

Moiman kirjoitti:

Julkaistaako lähdekoodit kaikkien saataville välivaiheessa?

Metabolix kirjoitti:

Chiman kirjoitti:

Eli tässä puolivälin mittelössä ilmeisesti julkistetaan ottelujen siirtosarjat ja pisteytys. Ei varmaankaan tekoälyjen koodeja?

Juuri näin. Koodien julkaiseminen taitaisi viedä kilpailusta pohjan.

Metabolix [21.06.2009 19:02:11]

#

FooBat kirjoitti:

Miten kilpailun voittajat valitaan?

Voitettujen käsien määrä ratkaisee. Tämä lienee reiluin arvostelu, koska onhan 900 kättä voittanut parempi kuin 501 kättä voittanut, vaikka kumpikin näistä voittaakin yksittäisen ottelun. (Varsinaisten käsien lisäksi tietenkin lasketaan vastustajan virheen takia implisiittisesti voitetut kierrokset.)

Metabolix [26.06.2009 11:28:51]

#

Muistutus: Kilpailun välikierrokselle ehtii mukaan sunnuntai-iltaan asti. Pelidata julkaistaan maanantaina. Vain pelien kulku ja lopputulokset julkaistaan, ei minkäänlaisia virallisia välituloksia tai muita tilastoja.

Jos johonkin ilmoittautumis- tai päivitysviestiin ei ole tullut vastausta, nyt on sopiva hetki lähettää viesti uudestaan.

Metabolix [29.06.2009 00:28:53]

#

Välierät on nyt pelattu ja siirtosarjat julkaistu. Kiitos jo tässä vaiheessa kaikille osallistujille: näyttää, että tästä tulee oikein hyvä kilpailu.

Dzarg [29.06.2009 08:46:13]

#

Ohhoh, mukava nähdä tulokset. Vähän liian ylimielisesti tuli ennen kilpailua ajateltua, että tuskin oma äly yli 50:llä pisteellä häviäisi kenellekkään.
Shotgun ja Spock sitten osoittivat toisin.

Jos laskukaava on kuten ajattelin, eli ainoastaan voitetut erät lasketaan, niin näyttäisi oma Saikyou sijoittuvan jopa kolmanneksi näiden kahden jälkeen, mutta suurella erolla.

Oliko laskukaava näin, vai lasketaanko kenties nuo otteluiden erotukset yhteen?

Metabolix [29.06.2009 09:37:50]

#

Dzarg kirjoitti:

Oliko laskukaava näin, vai lasketaanko kenties nuo otteluiden erotukset yhteen?

Voitoista saa pisteitä ja häviöistä sakotetaan. Tekoälyn esim pisteet saadaan siis ottamalla hakemistosta esim jokaisesta tiedostosta se rivi, jolla kerrotaan kyseisen tekoälyn tulos muodossa esim: -25. Kilpailussa jaetaan siis yhteensä nolla pistettä. :)

Dzarg [29.06.2009 10:24:33]

#

Metabolix kirjoitti:

Voitoista saa pisteitä ja häviöistä sakotetaan. Tekoälyn esim pisteet saadaan siis ottamalla hakemistosta esim jokaisesta tiedostosta se rivi, jolla kerrotaan kyseisen tekoälyn tulos muodossa esim: -25. Kilpailussa jaetaan siis yhteensä nolla pistettä. :)

Selvä, laskin pisteet nyt uudestaan tuolla tavalla. Tässä yhteispisteet välierästä. Jos syystä tai toisesta tarkoituksella yhteispisteitä ei haluttu julkaista, niin voin poistaa nuo. Toisaalta ainakin suurin osa täällä varmaankin pystyy koodinpätkällä ne laskemaan itsekkin.

Grandi [29.06.2009 15:35:21]

#

Shotgun tosiaan vei. Itse en pärjännyt kovin hyvin, vaikka olisin kyllä ollut kärjen tuntumassa mikäli pisteet olisi laskettu voittoprosentista. Nytpä pitääkin ahkeroida tämä loppuaika, kun tietää vähän minkä tyyppisiä tekoälyjä on vastassa.

FooBat [29.06.2009 20:35:47]

#

Kyllä tästä vielä ihan hyvä kilpailu saadaan vaikka toi mun Shotgun vielä tässä vaiheessa veikin pidemmän korren. Spokissa on selvästi aineista ja noi kolmostilaakin kärkkyvätkin saattavat parantaa tulostaan merkittävästi.

Voisi siihen lopulliseen kilpailuun pistää mukaan pari kilpailun ulkopuolista tyhmää pelaajaa, jottei toi jokseenkin satunnainen 'typerys' pärjäisi noinkin hyvin :) Ne auttaisivat heikompia pelaajia saamaan enemmän pisteitä verrattuna satunnaiseen bottiin. Oli tuolla kyllä nytkin muutama pelaaja, jotka ajoivat tuota virkaa, mutta oletan, että tämä muuttuu ennen lopullisia pelejä.

Metabolix [29.06.2009 21:28:31]

#

Dzarg kirjoitti:

Jos syystä tai toisesta tarkoituksella yhteispisteitä ei haluttu julkaista – –

Laiskuus... Kuten sanoit, eiköhän täällä jokainen osaa laskea ne viime kädessä vaikka kynällä ja paperilla.

FooBat kirjoitti:

Voisi siihen lopulliseen kilpailuun pistää mukaan pari kilpailun ulkopuolista tyhmää pelaajaa – –

Tämä on hyvä ehdotus, yritän keksiä jotain. Yksi tällainen tapaus onkin jo mukana.

Tärkeintä kilpailussa on tietenkin pitää kaikki koodauskykyiset kesälomalla visusti sisällä, ettei tule raitisilmamyrkytystä tai auringonpistosta.

vehkis91 [29.06.2009 22:21:19]

#

Pitää näyttävästi parannella paljon älyä, ku jää solmuun tollasiin "älyttömiin" älyihin. -.-

tesmu [01.07.2009 13:12:29]

#

Onkos jossakin jaossa testiohjelmaa jolla voi kilpailuttaa omaa älyä itsensä kanssa?

Metabolix [01.07.2009 13:26:27]

#

tesmu kirjoitti:

Onkos jossakin jaossa testiohjelmaa jolla voi kilpailuttaa omaa älyä itsensä kanssa?

Ei ole, ja tällaisesta ohjelmasta tuskin olisi hyötyäkään, koska sääntöjen äly pelaa itsensä kanssa aina tasan. Vastaavaan lopputulokseen pääsee siis niin, että syötteen lukemisen sijaan käyttää aina äskeistä tulostettaan:

tulosta(valinta)
vastustaja = valinta

Jos koneella on ohjelma socat, sillä voi käynnistää pelin tällaisella komennolla:

socat EXEC:'ajokomento' EXEC:'toinen_komento'

Tai näin, jos äskeinen ei toimi:

socat EXEC:'ajokomento',pty,echo=0,raw EXEC:'toinen_komento',pty,echo=0,raw

Tekoäly voi vaikka kirjoittaa siirtonsa tiedostoon, jotta niitä voi tarkastella jälkikäteen. Jos tiedostoon kirjoittaminen ei miellytä ja käytössä on lisäksi ohjelma nimeltä tee, komentoa voi muuttaa näin:

socat SYSTEM:'komento | tee a.txt' SYSTEM:'toinen_komento | tee b.txt'

Windows-version socatista sekä tarvittavat Cygwin-kirjastot voi ehkä ladata täältä (en kokeillut). Useimmissa Linuxeissa se löytyy luultavasti paketinhallinnasta.

tesmu [01.07.2009 16:56:48]

#

Lähinnä, voisin kokeilla vanhaa älyä vastaan paranneltua älyä jollon, että paransinko vai huononsinki.

FooBat [02.07.2009 01:47:27]

#

Kymmenen ekaa saa mun testiohjelman täältä.
http://rapidshare.com/files/250848231/runner.zip.html

Tulee ihan conffimahdollisuuden kanssa. Testibottien kirjoitus jää harjoitustehtäväksi, mutta mainittakoon, että tuo testausohjelma toimii vain ohjelmien kanssa jotka kirjoittavat vastauksensa output streamiin ja vaatii, että ohjelma flush:aa vastauksensa (tarpeellista esim. C:n kanssa).

Vaatii java 1.6 runtimen toimiakseen. Käyttöehdot kieltävät käyttöliittymästä valittamisen :)

Dzarg [02.07.2009 21:44:39]

#

Tuli itsekkin heti alkuun testiohjelma kirjoitettua, ei ilman sitä itselläni ainakaan ollut luottoa tekoälyn kykyihin. Vaatii myös flushin eikä tule conffimahdollisuuksien kanssa. Syntaksi esimerkiksi

java Tester ./a.out "java Malli"

Tuolta löytyy myös yksinkertaisesti tilastollisuutta käyttävä heikko tekoälyvastustaja ja socketeilla toimiva testiohjelma, joka mahdollistaa kavereiden tekoälyjä vastaan pelaamisen luovuttamatta koodeja. Tosin melko hyödytön ilman palvelinosaa jonka teki toinen henkilö, mutta se on vielä hieman keskeneräinen. Matsia voi kuitenkin tulla vaikka ircistä huutelemaan jos haluaa (tällä nickillä ircnetissä esimerkiksi tavoittaa).

Suunnitteilla olisi kyllä edistyneemmät palvelimet ja asiakasohjelmat, jotka mahdollistaisivat monen samanaikaisen pelaajan automaattisen kaikki kaikkia vastaan peluuttaminen ja lopputilastojen näyttämisen, mutta saa nyt nähdä riittääkö tässä aika ennen finaalia.

Metabolix [10.07.2009 16:35:47]

#

Kilpailu alkaa lähestyä loppuaan: tekoälyt täytyy lähettää viimeistään ensi maanantaina, 13.7. klo 13.37. Tänä viikonloppuna on siis sopiva hetki kirjoittaa oma tekoäly tai parannella sitä. Vielä ehtii mukaan!

tesmu [13.07.2009 12:25:30]

#

72 minuuttia aikaa päättymiseen :)

Grez [13.07.2009 12:47:07]

#

Hmm, pitäiskö aloittaa osallistumisen pohtiminen :D

Metabolix [13.07.2009 13:21:31]

#

Viimeiset minuutit ovat käsillä. Mukaan ehtii vielä, ja jos ilmoittautumisissa on jotain epäselvää, viimeistään tässä vaiheessa kannattaa ottaa yhteyttä asian johdosta.

Milo [13.07.2009 13:38:59]

#

Noniin, nyt kun ilmoittautuminen on päättynyt, olisikos ylläpito valmis ilmoittamaan tuon 'oikean taikatempun'? :) Mikä tämä taikatemppu on joka ei vaadi edes flushausta ja ottaa tulostukset stdoutista?

Metabolix [13.07.2009 14:39:02]

#

Tekoälyjä tuli kilpailuun kaikkiaan 37, päästiin siis jopa ristinollakilpailua komeampiin lukuihin. Tekoälyt ovat 0xF4, Brainluck, byrokrat, Code_395, Daeron_NG, Encephalon, esim, FAGGOT, Fail, foo, himmeli, JankenB, Jokuihme, jousipallo, kaiku, Kaksari, KiviKova, Kolykko, Leikkuri09, luuseri, MonkeyBot, nameless, NIGGERx2, onnekas, palikka, paperiaivo, Puudeli, r5nd0m, Risaksi, Saikyou, set, Shotgun, Spock, tekoaly, tumpelo, typerys ja u137.

Useimmat älyt selviytyivät peleistä loppuun asti, JankenB ja byrokrat lopettivat toisinaan toiseksi viimeiselle kierrokselle ja Puudeli kärsi säännöllisesti muistivirheistä (segfault) pelin puolivälin paikkeilla.

Tulokset julkaistaan mahdollisimman pian.


Milo: Taikatemppu itse asiassa lukee jo tuolla ylempänä:

Metabolix kirjoitti:

socat EXEC:'ajokomento',pty,echo=0,raw ...

Ohjelma socat luo siis tässä pseudoterminaalin (pty), jonka pitäisi ohjelman puolesta vastata normaalia konsoli-ikkunaa, ja ohjaa siihen tulevan tulosteen eteenpäin (...) tällä kertaa putkien avulla. Esimerkiksi FreeBASIC ei kuitenkaan kelpuuta samaa taikariviä, mutta sille taas kelpasi yllättäen normaali uudelleenohjaus tiedostoon. (Ilmeisesti flushaus tapahtuu FB:ssä automaattisesti, ja ilmeisesti sen "hienompi" konsolinkäsittely taas sotkee tilannetta pseudoterminaalin kannalta.) Menetelmä toimi hyvin, joten sitä käytetään tulevissakin kilpailuissa.

Milo [13.07.2009 15:19:51]

#

Hmm käänsittehän te ohjelmani uusiksi?

Kaikki toimi meikun päässä kyllä ihan niin kuin pitikin. Noh eipä siinä hittojakaan sitten :)

Heh en huomannut tuota taikatemppua sivun puolivälissä.


Sivun alkuun

Sivut:

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta