Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointiputka: Kilpailu: Kuurupiiloa leikkivä tekoäly

Sivun loppuun

Metabolix [01.12.2019 12:30:00]

#

Vuodenvaihteessa 2019–2020 pidetään jälleen ohjelmointikilpailu.

Tässä tekoälykilpailussa on aiheena kuurupiilo. Kolme pelaajaa etsii ja muut piiloutuvat. Jos pysyy liian kauan etsijän näkyvillä, jää kiinni.

Tarkemmat säännöt ovat kilpailusivulla, ja peliä (ja omaa tekoälyään) voi kokeilla testaussivulla. Mukana on perinteiseen tapaan esimerkkiohjelma muutamalla yleisimmällä ohjelmointikielellä.

Tervetuloa kilpailuun!

Metabolix [01.12.2019 12:30:01]

#

Harjoitusvastustajat

Tähän viestiin kerätään linkkejä harjoitusvastustajiin:

Tegu [01.12.2019 13:48:38]

#

Dodii! Näitä on aina kiva tehdä, vaikkei menestyisikään. Aihe vaikuttaa hauskalta, vaikka ehkä aavistuksen vaikealta. Tästä aiheesta tuli väkisinkin mieleen vähän aikaa sitten näkemäni OpenAI-julkaisu: https://openai.com/blog/emergent-tool-use/ Onkohan sama ehkä jopa toiminut innoittajana tälle aiheelle? :)

Metabolix [01.12.2019 15:12:23]

#

Tegu, hauska linkki. :) Tämän kisan idea tuli kuitenkin siitä, että mietin erilaisia vaikeampia pelejä mutta totesin sitten, että pelkkä järkevä navigointi maailmassa on jo tarpeeksi vaikea tehtävä. Lisäksi ensimmäinen itse järjestämäni kilpailu oli vuoden 2008–2009 hippakilpailu, jonka jatkoksi tämä sopii hyvin.

Vaikka aihe on ehkä vaikea, yritin tehdä osallistumisesta helppoa: Ohjelma voi tulostaa mitkä tahansa koordinaatit pelilaudalta ja odottaa, että pääsee perille. Jopa esteiden huomioiminen on siis vapaaehtoista. Esimerkkiä on helppo jatkokehittää. Kannustan kaikkia yrittämään.

Edelliseen kisaan osallistuneille vielä huomiona: apuohjelma KilpailuProxy on uudistunut huomattavasti, eli on syytä ladata uusi versio ja säätää asetukset tällä kertaa asetustiedoston kautta.

TapaniS [01.12.2019 19:24:33]

#

Testasin peliympäristöä ja java-esimerkkiohjelmaa ja hyvin näytti toimivan! Tuntui hiukan hankalammalta kuin poimintapelin ympäristö, mutta asetusten syöttäminen KilpailuProxy.json -tiedoston kautta varmaan onkin parempi noin.

Harjoitusvastustajia taas kaivattaisiin ...

Metabolix [01.12.2019 20:16:40]

#

TapaniS: Kehitysehdotuksia (tai jopa koodia) otetaan mieluusti vastaan. Ominaisuuksia on paljon enemmän kuin edellisissä kisoissa, mutta käyttöliittymää voi varmasti vielä hioa.

TapaniS [02.12.2019 14:36:07]

#

Kilpailuproxyn hallintaosite on hiukan eri kuin tuohon lomakkeelle napsahtaa. Eli pieni säätö tuohon helpottaisi. Saahan sen tietysti myös kirjoitettua manuaalisesti.

Pisteen etäisyys suorasta. Tuo piti käydä katsomassa, muuten ei lähde ajatus käyntiin.

Tangentin yhtälö ja tämäkin vielä!

Metabolix [02.12.2019 16:35:06]

#

TapaniS kirjoitti:

Kilpailuproxyn hallintaosite on hiukan eri kuin tuohon lomakkeelle napsahtaa.

Hauska huomio. Nyt testaussivulla on sama osoite. Sinänsä on melko yleisesti tiedossa, että 127.0.0.1 ja localhost johtavat samaan paikkaan... (Jotain ongelmia oli localhost-sanan käytössä, ja siksi KilpailuProxyssa on nimenomaan 127.0.0.1.)

Korjasin myös testaussivusta kiusallisen bugin, joka aiheutti turnauksen toimimattomuuden muilla kuin Firefoxilla.

Tegu [04.12.2019 16:33:08]

#

Tulipa mieleen, että mitenköhän peliohjain toimisi ihmispelaajalle. Eipähän ainakaan tarvitsisi kliksutella ympäriinsä. Kyhäsin sitten ensimmäistä kertaa jotain selainten Gamepad-rajapinnalla, ja ihan kelvollisesti se tuntuisi toimivan. Välillä syöte tosin tuntuu jäävän pohjaan hetkeksi, ja pelin alussa pitää jostain syystä klikata hiirellä ennen kuin ohjain alkaa totella. Kaikki on kovakoodattua, joten jos jotain haluaa säätää, niin se pitää tehdä koodissa. Testattu pelkästään Firefoxilla ja (ei-Chromium-)Edgellä.

Paste: http://paste.dy.fi/mu5 (rivit 1208–1235 ja 1246)

Näppistuki kävi mielessä, mutta itse en enää sitä tarvitse, kun tuon toteutin, joten sen saa joku halutessaan tehdä. :D

Metabolix [04.12.2019 22:18:23]

#

Tegu: Lisäsin tuolta pohjalta peliohjainkoodin testaussivulle. Tämän pitäisi toimia myös ilman klikkausta. Minulla ei ole peliohjainta testattavaksi, joten voitko kokeilla päivitettyä sivua?

atlantti [05.12.2019 10:13:39]

#

Saako kilpailuun osallistua joukkueena? Säännöt ei suoraan kiellä tätä, viittaa tosin "osallistujaan" yksikössä.

En keksi hyvää syytä miksi ei, paitsi että yksin kisassa on vaikeampi pärjätä jos mukana on joukkueita. Syitä puolesta sen sijaan ovat että yhdessä on hauskempi tehdä, ja joka tapauksessa on mahdoton valvoa että yhtä tekoälyä on ollut tekemässä vain yksi henkilö.

Grez [05.12.2019 10:52:24]

#

Heh - ekan kappaleen perusteella ajattelin että tarkoitat että tekisi useamman tekoälyn jotka pelaisi joukkueena muita tekoälyjä vastaan.

En usko että koodaus tiimissä on sinänsä kiellettyä, mm. mainitsemistasi syistä.

Metabolix [05.12.2019 15:00:40]

#

atlantti, kuten itsekin totesit, tekoälyn tekijöitä ei voi kuitenkaan valvoa. Saa mielellään ilmoittaa kaikkien tekijöiden tiedot ja joukkueen nimen, ja laitetaan sitten tuloslistaan tekijäksi vaikka joukkueen nimi ja tarkemmat tekijätiedot tekoälyn kuvaukseen.

Keskeneräisiä ohjelmia saa mielellään julkaista kisan kuluessa harjoittelua varten, niin kisan kiinnostavuus ja taso nousee.

TapaniS [09.12.2019 20:05:52]

#

Yritin saada kaksi ohjelmaa testaussivulle, mutta en onnistunut. Olisiko tällaiseen ohjetta, miten pitäisi toimia? Käynnistin kaksi kilpailuproxyä (127.0.0.1:50001 ja 127.0.0.1:50002), testisivu löytää ohjelmat, mutta kun pelin käynnistää, tulee virhe ja ensimmäistä ohjelmaa ei enää löydy.

Metabolix [09.12.2019 20:13:07]

#

TapaniS: Kaikki ohjelmat kuuluu määritellä saman KilpailuProxyn asetuksiin; tätä varten programs-asetus on taulukko. Useaa KilpailuProxya ei voi yhdistää samalle testaussivulle. (Yksittäisiä tekoälyjä voi tarvittaessa suoralla osoitteella laittaa kohtaan ”Muut WebSocket-ohjelmat”.)

TapaniS [09.12.2019 20:28:51]

#

Ok, yritin kyllä tuonne asetustiedostoon laittaa kaksi ohjelmaa, mutta en löytänyt oikeaa formaattia tähän.

Virhe: "Tiedosto KilpailuProxy.json ei ole kelvollinen JSON-asetustiedosto."

No nyt onnistui sittenkin!

"programs": [
		{
			"name": "ohjelma1",
			"version": "v1",
			"path": "c:\\Java\\xxx\\zzz\\",
			"command":  ["java", "ohjelma1"]
		},
		{
			"name": "ohjelma2",
			"version": "v1",
			"path": "c:\\Java\\xxx\\zzz\\",
			"command":  ["java", "ohjelma2"]

		}
	]

Eli unohtui tuo pilkku ohjelmien välissä olevien sulkeiden välistä pois.

TapaniS [10.12.2019 07:22:41]

#

Tästä ensimmäinen harjoitusvastustaja: TaSsuttelija. Ei ole kovin kehittynyt, toivottavasti paranee vielä kovasti. Nyt lähinnä tassuttelee piiloon tai etsijänä roikkuu toisten perässä. Tämä siis Javalla tehty.

Anaatti [10.12.2019 18:29:51]

#

Tässä on myös yksi vastustaja: lataa. Mukana on Windows ja Linux binäärit. Linuxia en testannut kunnolla, mutta toivottavasti toimii. Tää on vielä aika kämänen, mutta koitan laittaa parempaa versiota vielä myöhemmin.

TapaniS [11.12.2019 18:06:38]

#

Ajoin testisivulla turnajaisia, mutta turnajaiset päättyvät aina ensimmäisen pelin jälkeen virheeseen, jos KilpailuProxy on mukana. En ole myöskään onnistunut saamaan tulosteita tiedostoon, mahdollisesti liittyvät toisiinsa (?).

Mitkähän asetukset pitäisi olla, jotta tuo onnistuisi? Nyt alla olevan mukaiset:

	"version": "2019-11-16",
	"host": "127.0.0.1",
	"port": 50001,
	"output": {
		"usage": true,
		"program": true,
		"traffic": true,
		"storage": true
	},
	"storage": {
		"read": true,
		"write": true,
		"password": "",
		"path": "data"
	},
	"programs": [
...

Anaatti [11.12.2019 20:34:21]

#

Joo, itellä on kanssa ongelma KilpailuProxy.exen kanssa, kun ajaa turnausta. Printtaa seuraavan tyyppisen virheen:

write   esim1-esim2-esim3,esim4,-1812931603.json      failed, Menetelmää ei löydy: System.String[] System.String.Split(Char, System.StringSplitOptions).

Python versio KilpailuProxysta toimii kyllä ongelmitta turnauksessa käyttäen samoja asetuksia.

Metabolix [11.12.2019 21:27:43]

#

Jaa, olen tainnut ennenkin törmätä samaan Split-metodin eroon Monossa. Nyt on uusi KilpailuProxy.exe, jossa tuon pitäisi olla kunnossa.

TapaniS [12.12.2019 18:25:12]

#

Metabolix kirjoitti:

Jaa, olen tainnut ennenkin törmätä samaan Split-metodin eroon Monossa. Nyt on uusi KilpailuProxy.exe, jossa tuon pitäisi olla kunnossa.

En saanut vieläkään toimimaan. Sama virhe tulee edelleen.

Python-proxy toimii kyllä, mutta Anaatin harjoitusvastustaja jämähti siinä alkuruutuun.

Metabolix [12.12.2019 18:43:23]

#

No nyt pitäisi olla kunnossa, testasin Windowsilla. Path.Join != Path.Combine. Ihme, että Monossa toimii.

TapaniS [14.12.2019 11:42:29]

#

Jep. Nyt toimii hienosti!

Metabolix [15.12.2019 19:47:22]

#

Tässä on JS:llä tehty tekoäly Maalitaulu v1. Voi siis kopioida suoraan testaussivun laatikkoon tai ajaa komentorivillä Node.js:llä tai SpiderMonkeylla.

Ajoin turnauksen, jossa olivat Maalitaulu, TaSsuttelija, einimeeviel0 ja esim, kaikilla yhdistelmillä 20 peliä, ja tässä tulokset:

                     summa  =   etsijä  + pakenija
1. TaSsuttelija      48769  =   -23546  +    72315
2.   Maalitaulu       8581  =   -33593  +    42174
3. einimeeviel0     -17647  =   -40150  +    22503
4.         esim     -39703  =   -45664  +     5961

Hienoa, että esimerkki jää viimeiseksi.

Testaussivusta korjasin sellaisen bugin, että tietyissä tilanteissa esteen sisään pyrkivä pelaaja pysähtyi mutta kohdekoordinaatit eivät päivittyneet oikein. Tarkoitus on siis, että jos pelaaja ei liiku enää, kohdekoordinaatit ja pelaajan sijainti ovat samat, jotta tästä voi helposti tunnistaa, milloin on perillä.

TapaniS [15.12.2019 21:14:35]

#

Itsekin olen ajanut jonkin verran turnauksia ja sellainen huomio, että lopputulos voi vaihdella hyvinkin paljon (vaikka olisi sama kenttä ja samat pelaajat), jos ohjelmassa on satunnaistekijöitä mukana.

Jos kolme etsijää liikkuu alueella ja pystyvät seuraamaan piiloutujia, niin melko nopeasti kaikki löytyvät. Esteiden pienentymiseen asti ei tarvitse odotella.

riekkuja [16.12.2019 16:00:01]

#

Uusi harjoitusvastustaja kuuntelee osoitteessa ws://riekkuja.sytes.net:50002/lurkki

Itse kisaan on tarkoitus ilmoittaa lurkista kehittyneempi versio, mutta toivottavasti tuo nykyinen käy harjoitusvastustajaksi.

Niin ja ilmoitelkaa jos tuo palvelin ei jostain syystä vastaa tai muuten vain toimi, pyrin korjaamaan asap!

Metabolix [16.12.2019 16:46:48]

#

Kerään harjoitusvastustajien linkit (nykyiset ja tulevat) keskustelun alkuun.

TapaniS [16.12.2019 20:10:02]

#

riekkuja kirjoitti:

(16.12.2019 16:00:01): Uusi harjoi­tus­vas­tustaja kuuntelee...

Tuli tällainen ilmoitus:

SecurityError: Failed to construct 'WebSocket':
An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.

riekkuja [16.12.2019 20:23:05]

#

TapaniS, KilpailuProxy tarjoilee tuon harjoitusvastustajan WS protokollan yli, eli kuurupiilo-testaus.html pitää ladata HTTP eikä HTTPS protokollan kautta. Selaimet eivät tahdo tykätä jos salattuja ja ei salattuja protokollia käytetään samalla sivulla.

Oletko ladannut tuon kuurupiilo-testaus.html:n omalle koneelle, vai käytätkö sitä tuolta ohjelmointiputkan osoitteen kautta? Jos omalle koneelle sen lataa ja sieltä käyttää, niin käsittääkseni pitäisi toimia.

TapaniS [16.12.2019 20:26:10]

#

Joo, lähtikin toimimaan, kun latasin sivun omalle koneelle!

riekkuja [16.12.2019 20:26:40]

#

Jees, hienoa!

Anaatti [20.12.2019 21:46:33]

#

Tässä olisi parempi versio tuosta aikaisemmasta harjoitusvastustajastani: lataa
Älystä löytyy nyt enemmän järkeä ja se yrittää vähän hämätä muita pelaajia.
Edellisestä linkistä löytyy vielä se vanhempi versio, jos haluaa ajella isompia turnauksia useammilla älyillä.

TapaniS [21.12.2019 22:34:41]

#

Ajoin muutaman testiturnauksen ja tulokset olivat kyllä hiukan omituisen tuntuisia: ensimmäiset yksinkertaiset versiot tuntuvat pärjäävän paremmin kuin ohjelmaversiot, joihin on lisätty "älykkyyttä", satunnaisuutta ja muita ominaisuuksia. Sama lopputulos oli testeissäni sekä Anaatin einimeevielx että omien ohjelmaversioiden kanssa.

"lurkki" tuntui jumittavan testiajoa, lieneekö syy sitten itse ohjelmassa tai vaatiiko se verkkoyhteyttä, joka sitten tökkii? Se kuitenkin on pärjännyt tuloksissa aika mukavasti.

riekkuja [22.12.2019 10:59:17]

#

TapaniS kirjoitti:

"lurkki" tuntui jumittavan testiajoa, lieneekö syy sitten itse ohjelmassa tai vaatiiko se verkkoyhteyttä, joka sitten tökkii? Se kuitenkin on pärjännyt tuloksissa aika mukavasti.

Kun asiaa miettii, niin ohjelma voi jumittaa ajoa ainakin kolmella tavalla:
1. Hyvä piiloutuja, etsijät eivät löydä ennen kuin esteet ovat kadonneet käytännössä kokonaan
2. Huono etsijä, ei löydä muita ennen kuin esteet ovat pienentyneet tarpeeksi
3. Hitaat vastaukset, juuri tuo mainitsemasi verkon yli tapahtuva keskustelu

Vaihtoehto kaksi tietenkin riippuu myös muista kahdesta etsijästä, jos ne ovat hyviä niin yksi äly ei pysty jumittamaan koko ajoa.

Tuo "lurkin" harjoitusvastusversio etsiessään saataa jäädä paikalleen melkein sadaksi kierrokseksi, eli se vaikuttaa pelin kulkuun ainakin jonkin verran.

Metabolix [22.12.2019 22:01:12]

#

Teinpä minäkin hienompaa ohjelmaa: Kokkeli v0.1, tämäkin on testaussivulle syötettävää JavaScript-koodia. Testasin vasta lyhyesti, vaikutti melko lupaavalta, mutta etsijä pysähtyi löydettyään ensimmäisen piiloutujan... Lisäksi nykyinen versio on hieman hidas, joten saatan tehdä turnausta varten C++-version.

riekkuja kirjoitti:

Kun asiaa miettii, niin ohjelma voi jumittaa ajoa ainakin kolmella tavalla: ...

Ehkä TapaniS tarkoitti sitä, että verkon yli pelatessa tulee ylimääräistä viivettä, kun laskenta-ajan lisäksi kuluu aikaa viestiliikenteessä testaussivun ja tekoälyn välillä (ja protokolla on synkroninen, eli tekoälyltä odotetaan aina vastausta). Tämä korostuu varmasti turnauksessa ilman katselua, kun omalla koneella voi pelata kokonaisen ottelun parissa sekunnissa mutta verkon yli peli jää suhteellisen hitaaksi.

TapaniS [23.12.2019 09:33:43]

#

Todennäköisesti yhteydestä tulee viive, en pysty tuota kuitenkaan todentamaan. Myös Kokkeli (v0.1) jää välillä jumiin, ei vielä pärjää TaSsuttelijalle!

Tästä vielä kehittyneempi harjoitusvastustaja: TaSokas. Tämä on jo aika lähellä lopullista kilpaversiota. Lisätty satunnaisuutta alkupiilon sekä etsijän alkusuunnan valinnan suhteen. Myös piiloutumisen logiikkaa kehitelty eteenpäin.

Tämäkin on Javalla tehty. Olisi mukava saada jonkinlainen väliaikatesti nykyisten ohjelmien keskinäisestä järjestyksestä (samalla tavalla kuin neljän ensimmäisen testi).

Metabolix [25.12.2019 02:15:54]

#

Tässä on korjattu versio toisesta ohjelmastani: Kokkeli v1. Valitettavasti TapaniS:n havainto pitää paikkansa, eli Kokkeli pärjää tuloksissa huonommin kuin Maalitaulu. :D

Ajoin nyt saatavilla olevilla ohjelmilla 840 peliä: kaikki kolmen etsijän yhdistelmät kaikissa järjestyksissä ja piiloutujien järjestystä kiertäen. Lista peleistä (etsijät, piiloutujat, siemenluku) on pastessa. Tulokset ovat alla.

1.       lurkki      368531  =   -644503  +   1013034
2. TaSsuttelija      354110  =   -656551  +   1010661
3.      TaSokas      239071  =   -691130  +    930201
4. einimeeviel0     -181424  =   -776411  +    594987
5.   Maalitaulu     -197946  =   -778761  +    580815
6.      Kokkeli     -266193  =   -789522  +    523329
7. einimeeviel1     -316149  =   -743529  +    427380

Käsin testatessa ohjelmien erot tuntuvat aika pieniltä: jos etsijä roikkuu edes jotenkuten perässä, siltä on melko vaikea päästä piiloon, ja toisaalta piiloutujan mahdollisuudet edes yhtä etsijää vastaan tuntuvat olevan aika heikot. Ei kuitenkaan muuteta sääntöjä vaan katsotaan, miten kisassa käy. Seuraava kisa täytyy tasapainottaa huolellisemmin.

Metabolix [25.12.2019 12:46:52]

#

Huomasin, että testaussivun katselutoiminnossa oli vikaa, jotkin pelit toimivat väärin. Korjattu versio on nyt netissä.

Yhdessä katsomassani pelissä kävi niin, että lurkki kiersi yhden esteen ympäri ja kolme etsijää kiersivät perässä, kunnes este alkoi pienentyä. Olisi selvästi hyödyllistä, jos etsijät osaisivat myös hajaantua. (Pelin tunniste: Kokkeli-TaSokas-TaSsuttelija,einimeeviel1-lurkki-Maalitaulu-einimeeviel0,-1842859633)

jsbasic [01.01.2020 20:52:11]

#

Metabolix kirjoitti:

Ajoin turnauksen, jossa olivat Maalitaulu, TaSsuttelija, einimeeviel0 ja esim, kaikilla yhdistelmillä 20 peliä, ja tässä tulokset:

Minulla turnaus ei suostu ajamaan kuin Kilpailuproxyn tekoälyjä.

1. jsb-c     0  =   0  +   0  ( -   0 )
1. jsb-p     0  =   0  +   0  ( -   0 )
Valmis!

Vaikka uusi peli -välilehdeltä lisää uusia tekoälyjä, niin turnaus-välilehden lopputuloksissa näkyy vain kaksi omaa bottia. Oletusturnaus käytössä.

Metabolix [01.01.2020 21:08:02]

#

jsbasic: Oletusskriptissä on kommentoitu pois se rivi, jossa otettaisiin JS-ohjelmat mukaan turnaukseen. Eli täytyy lukea ja editoida turnausskriptiä. Jos haluaa turnauksesta tuloksia nopeammin, kannattaa myös ottaa pois pelien näyttö ja nopeussäätö.

Ehkä ensi kerralla turnaukseen voisi tehdä jonkinlaisen rasti ruutuun -valikon asetuksista, ja myös KilpailuProxyn käyttöliittymää pitää nähtävästi kehittää.

jsbasic [02.01.2020 18:52:13]

#

Kysyisin vielä tärkeän kysymyksen: Saako ohjelma kirjoittaa pelin aikana omaan datatiedostoon? Viimeksi Poimintapeli-kilpailuissa tästä ei ollut lainkaan puhetta, eikä ole nytkään. Oppiminen erien välillä on mielestäni merkittävä etu, koska kilpailutilannetta ei voi täysin ennustaa.

Metabolix [02.01.2020 21:05:29]

#

Tekoäly pitää kouluttaa etukäteen. Tiedot nollataan otteluiden välillä. Muutenkaan en usko, että kisan aikaraja ja otteluiden määrä riittäisivät oppimiseen, kun yleensä koneoppimisessa puhutaan miljoonista toistoista.

TapaniS [02.01.2020 21:06:11]

#

lurkki ei vastaa!

riekkuja [03.01.2020 06:13:49]

#

TapaniS kirjoitti:

lurkki ei vastaa!

Nyt pitäisi taas toimia.

TapaniS [03.01.2020 10:36:38]

#

Joo, nyt toimii taas!

Ajoin samoilla asetuksilla testisivun turnauksen kolme kertaa ja tulokset vaihtelevat jonkin verran, mutta ohjelmien keskinäinen asema kuitenkin on säilynyt aika hyvin.

Onko lurkki kohdannut voittajansa!?

1.    TaSapaino      32984  =   -52642  +    85626  ( -        0 )
2.       lurkki      30061  =   -50648  +    80709  ( -        0 )
3.      TaSokas      23061  =   -56295  +    79356  ( -        0 )
4. TaSsuttelija      13337  =   -53590  +    66927  ( -        0 )
5. einimeeviel0      -6847  =   -58924  +    52077  ( -        0 )
6.      Kokkeli     -27632  =   -62111  +    34479  ( -        0 )
7.   Maalitaulu     -29395  =   -62401  +    33006  ( -        0 )
8. einimeeviel1     -35569  =   -59191  +    23622  ( -        0 )


1.    TaSapaino      40544  =   -51913  +    92457  ( -        0 )
2.       lurkki      28098  =   -54903  +    83001  ( -        0 )
3.      TaSokas      11911  =   -59735  +    71646  ( -        0 )
4. TaSsuttelija       5758  =   -55316  +    61074  ( -        0 )
5. einimeeviel0       1300  =   -64409  +    65709  ( -        0 )
6.      Kokkeli     -23424  =   -65040  +    41616  ( -        0 )
7.   Maalitaulu     -28573  =   -68167  +    39594  ( -        0 )
8. einimeeviel1     -35614  =   -58048  +    22434  ( -        0 )


1.    TaSapaino      31206  =   -53838  +    85044  ( -        0 )
2.       lurkki      24794  =   -56239  +    81033  ( -        0 )
3. TaSsuttelija      17140  =   -55610  +    72750  ( -        0 )
4.      TaSokas      15506  =   -57289  +    72795  ( -        0 )
5. einimeeviel0      -6910  =   -62110  +    55200  ( -        0 )
6.      Kokkeli     -18379  =   -60673  +    42294  ( -        0 )
7.   Maalitaulu     -26629  =   -63883  +    37254  ( -        0 )
8. einimeeviel1     -36728  =   -57386  +    20658  ( -        0 )

TapaniS [03.01.2020 16:30:49]

#

Voisin muuten laittaa myös TaSapainon jakoon, mutta en osaa salata koodia (java).

Metabolix [03.01.2020 22:05:14]

#

Ilmoittautuneita on toistaiseksi vain muutama, joten saa mielellään ilmoittaa myös noita harjoitusvastuksia kisaan, jos ovat siihen kelvollisia. Voi ilmoittaa niitä vaikka ehdollisesti niin, että otetaan ne mukaan vain, jos osallistujia muuten olisi alle 10.

jsbasic [06.01.2020 00:45:17]

#

Tässä oma harjoitusvastukseni, joka on suurin piirtein TaSokkaan tasoinen:

https://www.ohjelmakartta.fi/jorolainen85.zip (Linux-binääri)

Metabolix [06.01.2020 04:05:15]

#

jsbasic: Muistathan myös osallistua, nyt on viimeinen päivä. Kisaan on nyt ilmoittautunut tähän mennessä seitsemän ohjelmaa.

os [06.01.2020 20:06:33]

#

Mielenkiintoinen kisa. Laitoin vielä omankin "virityksen" mukaan (taisi olla minuutin myöhässä tosin).

EDIT: Disclaimerina täytyy vielä ennen tulosten julkaisua todeta, että kyseessä on kokonaisuudessaan viimeisenä päivänä koodattu, lähinnä "jännän idean" ympärille koottu ratkaisu, joka toimii jotenkuten, mutta ei hyvin eikä nopeasti, joten kärkikahinoissa tuskin ollaan mukana :)

Tegu [06.01.2020 20:10:10]

#

Pöööhh.. Petyin itseeni, mutta piti jokin kompofilleri silti laittaa mukaan. Peli oli hauska, mutta en lopulta oikein keksinyt mitään järkevää ideaa. Ja kun joulukuu meni Advent of Coden parissa, niin ei jotenkin jaksanutkaan tätä. :(

Eksyin välillä lueskelemaan inspiraatioksi kaikenlaisia papereita, kuten http://www.red3d.com/cwr/steer/gdc99/, vaikken oikein tiennyt, olisiko ne edes järkevästi sovellettavissa tähän. (E: Tekoälyssäni käytin jollain tasolla linkin pursuit- ja wander-menetelmiä.) Lopussa kokeilin vielä jonkinlaisia piiloutumismenetelmiä, mutta en saanut niitä toimimaan hyvin. Sitten loppui debuggausaikakin.

Tähän pitäisi ehdottomasti varata aikaa tarpeeksi. No, tulipa kuitenkin mainosteltua parissa paikassa, toivottavasti niistä tuli edes yksi lisäosallistuja.

jsbasic [06.01.2020 20:18:19]

#

Minäkin aloitin vasta 1.1. En ihan pärjännyt TapaniS:n tekoälylle, mutta kun olin jo laittanut ohjelmani sähköpostiin, ajoin uuden turnauksen, jossa se meni ensimmäistä kertaa TaSokkaan ohi.

Kilpailutehtävävä oli mielestäni oikein hyvä. Niin kuin TapaniS:n listasta näkee, niin paras tekoäly voittaa aina. Ainakin itse uskon siihen. Lisäksi ohjelmien pitää osata vuorovaikuttaa keskenään. Olisi silti hauskaa, jos joskus olisi (matematiikan sijaan) joku dataan perustuva kilpailu. Esimerkiksi jo mainitsemani wikipedian pakkaaminen, tai vaikka jokinlainen bottien tietokilpailu tai ennustamiskilpailu.

Tegu [06.01.2020 20:26:18]

#

jsbasic kirjoitti:

– – tai vaikka jokinlainen bottien tietokilpailu tai ennustamiskilpailu.

Lasketaanko taannoinen Lukupeli?

jsbasic [06.01.2020 20:31:49]

#

Tegu kirjoitti:

Lasketaanko taannoinen Lukupeli?

Tarkoitin jotain laajempaa, "aitoa" tietämystä vaativaa tehtävää. Esimerkiksi http://prize.hutter1.net/

Metabolix [06.01.2020 21:00:18]

#

Kilpailuaika on päättynyt. Kisassa on mukana kymmenen tekoälyä: Jorolainen, lurkki, Maalitaulu, Reisille, Rustaus, SpinMagnet, Suikero, TaSapaino, Tuntematon1, viritys.

Laitan pelit pyörimään. Tiedossa on nyt ainakin 5040 peliä (10×9×8 yhdistelmää etsijöinä, 7 järjestystä piiloutujille). Nopeus näyttäisi olevan noin kahdeksan peliä minuutissa.

Metabolix [07.01.2020 10:36:45]

#

Tulokset on julkaistu! Kilpailun voittajaksi selviytyi Anaatti tekoälyllään Rustaus, toiseksi tuli riekkuja tekoälyllään lurkki, ja kolmannen sijan vei TapaniS tekoälyllään TaSapaino. Onnea menestyjille ja kiitos kaikille osallistujille!

Koetan mahdollisesti kääntää ainakin kärkipään ohjelmista JavaScript-versioita testaussivulle taas jossain vaiheessa. Kehitän myös testaussivua (ja ehkä KilpailuProxya) yleisesti seuraavaa kisaa varten.

Tegu [07.01.2020 11:12:09]

#

Kiitos kisasta!

Piiloutumisen jumbosijastani en yllättynyt lainkaan, kun ei tuo versio edes yritä piiloutua. :D Olisi pitänyt ajaa otus alussa edes hieman pidemmälle keskustasta ja jättää vasta sitten vaeltelemaan. Etsimisessä sen sijaan puolta väliä hipova sijoitus oli oikeastaan ihan mukava noin yksinkertaisella ratkaisulla. Esteitä en tosiaan huomioinut lainkaan. Tai kehitteillä sekin oli, mutta se jumiutui laskemaan aivan liaan pitkäksi aikaa ja löysi jostain syystä vain oman nykyisen paikkansa, enkä saanut sitä kuntoon ajoissa.

TapaniS [07.01.2020 13:17:57]

#

Kiitokset mukavasta kisasta!

Olikohan lurkki sama versio kuin harjoitusvastustaja? Se jäi ainakin omissa testeissäni TaSapainon jälkeen, mutta nyt se yllätti kiilaamalla toiseksi!

Onnittelut kuitenkin kaikille mukana olleille! Ilman osallistujia ei kisaa saada aikaan! Nyt oli hiukan haastava, kun piti saada kaksi erilaista toimintoa (etsijä / piiloutuja) samaan koodiin.

Grez [07.01.2020 13:52:12]

#

TapaniS kirjoitti:

Nyt oli hiukan haastava, kun piti saada kaksi erilaista toimintoa (etsijä / piiloutuja) samaan koodiin.

Kai ne olisi voinut rakentaa vaikka kokonaan erikseen ja lopuksi vain lisätä pieni pätkä koodia joka valitsee kumpi suoritetaan?

riekkuja [07.01.2020 16:28:35]

#

TapaniS kirjoitti:

Olikohan lurkki sama versio kuin harjoitusvastustaja? Se jäi ainakin omissa testeissäni TaSapainon jälkeen, mutta nyt se yllätti kiilaamalla toiseksi!

Kisaan osallistunut versio oli paranneltu versio harjoitusvastustajasta. Idea on täysin sama kuin harjoitusvastustajassa, mutta kieli vaihtui välissä Lua:sta Rubyyn.

Anaatti [07.01.2020 21:11:45]

#

Oikein mukava kisa oli taas kerran. Sai myös hyvän syyn harjoitella lisää uusia kieliä eli Rustia tällä kertaa. Tuo Tuntematon1 oli tosiaan täysin sama äly kuin tuo harjoitusvastustaja einimeeviel1.

Tegu [07.01.2020 22:25:18]

#

Minunkin piti viime kisan tapaan tehdä Rustilla, mutta olin sen kanssa niin ruosteessa, että päätin aloittaa Pythonilla. No, lopulta sitten jäinkin siihen. Pitääkin latailla koodit ja katsella hieman muiden tuotoksia. :)

Muokkaus: Purkkasinpa JavaScript-version: http://paste.dy.fi/Kz4 Yhtä ruma ilman siistimistä, ettei siinä tulisi vahingossa eroja. Tosin kisakorjausta satunnaisuuteen en osannut/jaksanut toteuttaa etenkään siten, että se vastaisi Python-versiota. Ilmeisesti BigIntin kanssa pitäisi leikkiä.

jsbasic [08.01.2020 02:08:43]

#

Olipa mukava kisa. No, minä tykkäsin ainakin. Vaikka tehtävä tuntui alussa aika monimutkaiselta, kilpailuohjelmat olivatkin kooltaan pienempiä kuin viime vuonna. Itselleni kehittäminen oli selkeää. Outo yhtälö! Tosin Go-lautapelissäkin on yksinkertaiset säännöt, mutta pelaaminen on silti monimutkaista.

70- ja 80-luvun lapset saattavat keksiä, mistä ohjelmani nimi Jorolainen tulee. Liittyy piiloutumiseen ja etsimiseen. Ääkköset ovat pudonneet nimestä pois.


Sivun alkuun

Vastaus

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

Tietoa sivustosta