Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointiputka: Kilpailu kakkonen

Sivun loppuun

Deewiant [01.02.2005 16:57:02]

#

Tiedän, ei demokilpailu ollut "ykkönen" vaan neljäs/viides 'Putkan kilpailu. Kilpa.php:sta en kuitenkaan saa ulos listaa kaikista kilpailuista -> en saa oikeaa järjestyslukua, joten uusi kilpailu olkoon tässä ketjussa kakkonen.

Asiaan. Demokilpailun päätyttyä voidaankin alkaa suunnittelemaan seuravaa ohjelmointikisaa - vaikkei sitä vielä vähään aikaan järjestettäisikään. Päätettävinä ovat (taas) kilpailun aihe, kesto, sekä koko.

Tuli mieleeni mm. IOCCC:stä ja erinäisistä Perl-skripteistä, että voitaisiin pitää ohjelmointikilpailu, jossa (lähdekoodin) kokorajoitus olisi luokkaa 1024 tavua. Ohjelma saa tehdä periaatteessa mitä vain - pisteitä ropisisi sitten omaperäisyydestä ja siitä, kuinka paljon on saanut mahdutettua pieneen tilaan.

Rajaavaksi tekijäksi tulisi lähinnä kieli - käännettävillä kielillä, esimerkiksi C:llä, ei hirveästi saa aikaan kibitavussa, toisin kuin tulkattavilla kielillä, kuten vaikkapa Pythonilla. Ja koska suurin osa joutuu tekemään tuotoksensa juuri tuollaisella kielellä, täytyy kaikkien ohjelmia kokeilevien hankkia itselleen tulkit jokaiselle kielelle. Toki kääntäjiä löytyy tulkattavillekin kielille, niiden toimivuus on vain vähän niin ja näin. Lisäksi kilpailun kestoa jouduttaneisiin pidentämään, sillä kovin moni täältä ei välttämättä osaa Perliä/Pythonia/Rubya/Tcl:ää/mitälie ainakaan sen vertaa, että voisi 1024 tavuun mahduttaa jotain oikeasti fiksua.

Tuota lukuunottamatta kesto voisi olla samaa luokkaa kuin tähänkin asti, eli pari-kolme viikkoa.

Lisää aihe-ehdotuksia ja kommentteja ensi kilpailusta tähän ketjuun.

Heikki [01.02.2005 18:53:10]

#

Tuo ohjelman tunkeminen pieneen lähdekoodiin on ihan hyvä ajatus, mutta tosiaan kielten välissä on jonkin verran eroa. Tosin riippuu asiasta, matemaattinen algoritmi menee eri kielillä jokseenkin samaan tilaan, kun taas grafiikkakoodin suhteen eroja syntyy paljonkin.

Mitä jos säännöissä olisi että tuotokset eivät saisi olla alustariippuvaisia, kuten esim. Datatähdessa. Tämän haittapuoli tosin on se, että ainakin monilla Basiceilla ei voi osallistua kilpailuun.

Deewiant [01.02.2005 19:10:58]

#

Ongelmana tuossa on se, että kaikki eivät pysty testaamaan ohjelmiaan eri käyttöjärjestelmissä. Tietenkin jotain perusjuttuja, kuten vaikkapa C:ssä system()-funktion käyttöä, pitäisi välttää. Mutta homma menisi varmaan käytännössä turhan vaikeaksi, vaikkei se sitä olekaan...

Itse pyrin kuitenkin periaatteesta tekemään kaikki ohjelmani alustariippumattomiksi. Ja Basicien rajoittaminen ei minua haittaa, kun en niitä kerran osaakaan ;-)

SysRq868 [01.02.2005 19:13:02]

#

Deewiant kirjoitti:

kokorajoitus olisi luokkaa 1024 tavua.

Ja mitäköhän tuohon saa mahtumaan?

Deewiant [01.02.2005 19:21:46]

#

SysRq868 kirjoitti:

Ja mitäköhän [1024 tavuun] saa mahtumaan?

Turhankin paljon. Tässä 833 tavua, C:llä peräti:

#include <stdio.h>
main(t,_,a)char *a;{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?
main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?main(_,t,
"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#\
;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l \
q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# \
){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' \
iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# \
}'+}##(!!/")
:t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a=='/')+t,_,a+1)
  :0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a,
"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}

Käytännössä kokorajoitus kuitenkin nostettaneen kahteen-neljään kibitavuun, tuskin kellään tällä on riittävästi taitoa tehdä jotain tuollaista.

(Mod. huom: Ohjelmaa on turvallista kokeilla. :)

InvalidCo [01.02.2005 20:35:28]

#

Tässä toinen idea: pitää tehdä peli, joka saa käyttää vain ASCII-grafiikkaa!

Deewiant [01.02.2005 20:42:51]

#

Idea tuokin, kunhan roguelikeja ei sallita. Suurin osa tekisi kuitenkin sellaisen, ja pelien paremmuus määräytyisi sisällön eikä enginen pohjalta. Tai siis, kyllähän sisältö vaikuttaa muutenkin... no, ymmärtänette mitä tarkoitin.

InvalidCo [01.02.2005 20:46:45]

#

No tehdään sellainen! Sitten nähdään onko ohjelmointiputkalaisista turinoimaan tarinoita!

Edit: Siis että tarinoitaisiin siihen sisältöä.

E.K.Virtanen [01.02.2005 20:49:53]

#

Miten olisi peli jossa saa olla vain ruudullinen kamaa.

Periaatteessa siis peli jossa kartta(peli näkymä) lätkäistään kerrallaan ruutuun (tai osa kerrallaan) mutta ruutua ei saisi siis tyhjentää ja tulostaa sinne mitään uutta poikkeuksena jokin X*X kokoinen tekstiboksi tms. joka nyt lienee pakollinen vähän joka pelissä?

Deewiant [01.02.2005 21:04:50]

#

PC-Master kirjoitti:

No tehdään sellainen! Sitten nähdään onko ohjelmointiputkalaisista turinoimaan tarinoita!

Edit: Siis että tarinoitaisiin siihen sisältöä.

Pointtina oli nimenomaan, ettei tuollaisia, koska tämä on ohjelmointisivusto eikä "turinointisivusto" ;-)

Heikki [01.02.2005 22:07:47]

#

Tosiaan ohjelmoinnin tulisi olla pääosassa, ei niinkään itse pelin juonen. Juoni yms. asiat pitäisi olla arvostelussa ainoastaan, mikäli järjestetään taas vaikka Suomipelit.comin kanssa jossain vaiheessa pelintekokilpailu (näihin voitaisiin saada jopa sponsorikin). Näissä putkan sisäisissä kilpailuissa pitäisi painottaa ohjelmointia.

Deewiant pitäisikö tuon antamasi koodin muka kääntyä? Ei ainakaan gcc:llä vakiovalitsimilla.

Pieni lähdekoodi-ideasta: 1024 tavua on aika vähän, mutta jotain alle 5 kilotavua voisi olla hyvä.

Deewiant [02.02.2005 09:47:10]

#

Heikki kirjoitti:

Deewiant pitäisikö tuon antamasi koodin muka kääntyä? Ei ainakaan gcc:llä vakiovalitsimilla.

Kyllä se minulla kääntyi gcc:llä (MinGW) ihan pelkällä "gcc asdf.c" -komennolla. Versio on muistaakseni 3.4.0 - ilmoittelen tarkemmin kotoa. Millaisia virheitä se antaa? Voi tietenkin olla, että jäi vahingossa valitsematta lopusta eräs aaltosulku tjsp...

Ja kyllä, 1024 tavua on aika vähän, nyt kun enemmän sitä mietin.

Heikki [02.02.2005 10:36:02]

#

Offtopic jatkuu, anteeksi vain:
Kääntyihän tuo koodi sitten lopulta, joku rivinvaihto tms oli mennyt väärin kun pastesin Picolla, KWritellä tein tiedoston ja hyvin pelasi.

InvalidCo [02.02.2005 18:15:33]

#

Entä jos pitäisi olla ASCII-graafinen peli/ohjelma, jossa pitää olla hieno, monimutkainen tekoäly?

zigilii [02.02.2005 18:35:40]

#

tekoäly-kilpailu ,taas (shakki, tammi, rubikin kuutio ...)

InvalidCo [02.02.2005 18:52:47]

#

Tai hei, tekoälykilpailu ASCII-graffoilla ja 1024:n tavun kokorajoituksella! :D

Metabolix [02.02.2005 20:49:00]

#

Kahteen kiloon sain tuon ristinollan tekoälyni tungettua ilman varsinaisia muutoksia (muuttujien nimiä vaihtelin).

Minusta olisi mielenkiintoista nähdä, mitä kisaan ilmestyy, jos tarkoituksena on tehdä mahdollisimman hauska ohjelma. Aihetta ei tarvitsisi sen enempää rajoittaa, mutta pilaohjelmat ja häirikköjutut kuten CD-luukun avaus, koneen sammutus tms. pitäisi jättää pois. Tiedän, että tuo aihe on ajatuksena outo, mutta eipä ainakaan rajoittaisi osallistumismahdollisuuksia. Yleisöäänestys periaatteella "parhaat naurut palkitaan."

InvalidCo [03.02.2005 14:16:29]

#

Voisi olla tuollainen hauskuus-kisa, mutta siinä taas tulisi eteen yksi ongelma: koodaus jäisi varmasti vähän sivummalle, ja tämähän ei taida olla turinointisivusto tai vitsisivusto...
---
Mitä ohjelmoijalta kysytään aina tämän ohjelmoitaessa?
"Tuleeko hyvää ohjelmaa?"
---

ZcMander [03.02.2005 14:26:45]

#

Voitit! No tuommoiset ohjelmat voisi olla aika hauskoja. Itse ehdottaisin kuka koodaa parhaimman hyötyohjelman. Tuo taas olis ylivoimaista VB:llä tekeville. ASCII korttipeli vois olla. Basicitkin pääsisi mukaan.

ajv [03.02.2005 19:45:04]

#

Kilpailu aiheesta kenen tekoäly ratkaisee Rubikin kuution nopeiten :)
Eipä ainakaan tarttisi itse osallistua, kun ei se ratkee edes omalla älyllä - saatikka sitten tekoälyllä.

InvalidCo [04.02.2005 10:30:43]

#

Jos pitäisi tehdä ihan minkälainen vain peli, ohjelma, tai muu koodinpätkä, jossa ainoa rajoite olisi, että siinä pitäisi olla sivuominaisuutena lottonumeroiden arvonta :)

E.K.Virtanen [04.02.2005 13:37:26]

#

Kilpailun aiheena lotto peli, eikä saisi käyttää kuin ascii merkkejä. Graffat kieltoon niin minunkin qbasic "taidoilla" saattaisi harkita osallistumista =)Max koko vaikka XXX tavua tms.

Metabolix [05.02.2005 12:10:29]

#

ajv kirjoitti:

Kilpailu aiheesta kenen tekoäly ratkaisee Rubikin kuution nopeiten :)

Tuosta saisi hyvän algoritmikilpailun, jossa pitää tietyillä resurssirajoilla selvittää pienin tarvittavien siirtojen määrä. Kelpaisi jopa Datatähteen, ellei ole liian helppo.

FooBat [05.02.2005 20:20:07]

#

Metabolix kirjoitti:

ajv kirjoitti:

Kilpailu aiheesta kenen tekoäly ratkaisee Rubikin kuution nopeiten :)

Tuosta saisi hyvän algoritmikilpailun, jossa pitää tietyillä resurssirajoilla selvittää pienin tarvittavien siirtojen määrä. Kelpaisi jopa Datatähteen, ellei ole liian helppo.

Päinvastoin, pienimmän siirtomäärän löytävä algoritmi taitaa olla aivan liian vaikea Datatähteen. Tällä hetkellä tuohon ongelmaan ei muistaakseni ole olemassa realistisilla muisti- ja aikarajoituksilla toimivaa algoritmia. Muistan jostain lukeneeni, että kaikki kuution tilat pystyy saavuttamaan noin 25 siirrolla. Kuution tilojen haarautumiskerroin taitaa kuitenkin olla 18 (3 eri riviä kullakin akselilla ja siirrot voi tehdä molempiin suuntiin), joten yksinkertaisen algoritmin muisti- ja aikavaatimus on luokkaa 18^25 eikä hyvää heuristiikkaakaan ole tuohon keksitty.

Toisaalta kuution ratkaiseminen nopeasti ei ole mikaan ongelma käyttäen hyväksi samoja algoritmejä mitä ihmisetkin käyttävät kuution ratkaisuun. Siirtoja vaan kertyy helposti toista sataa.

zigilii [06.02.2005 16:20:41]

#

Teoreettisesti lyhin tie ratkaista Rubikin kuutio on 22 siirtoa, mutta kukaan ei ole tähän vielä pystynyt , 52 on vähin siirtomäärä minkä ihminen on todistetusti tehnyt (n. 2 v vanha tieto). Nopein ratkaisu on ~10 s.

markdark [08.02.2005 12:18:47]

#

Tuo lotto idea oli hyvä. Viikko aikaa koodata, voittaja ohjelma on se joka saa eniten oikeita numeroita seuraavassa lotto arvonnassa. Voisi olla myös kaksi sarjaa, Viking ja normaali. Miksei ottettaisi myös vaikka Keno ja Jokeri mukaan. Siis oikeesti!

Blaze [08.02.2005 14:48:46]

#

Hahaha, hieno ajatus :P

E.K.Virtanen [08.02.2005 16:17:38]

#

markdark kirjoitti:

Tuo lotto idea oli hyvä. Viikko aikaa koodata, voittaja ohjelma on se joka saa eniten oikeita numeroita seuraavassa lotto arvonnassa. Voisi olla myös kaksi sarjaa, Viking ja normaali. Miksei ottettaisi myös vaikka Keno ja Jokeri mukaan. Siis oikeesti!

Hehe, tuossahan on ideaa =) Joka ohjelma saa veikata 10 eri riviä ja parhaimman rivin ennustanut voittaa?

Antti Laaksonen [09.02.2005 08:24:13]

#

Lottonumeroiden ennustaminen on kyllä minusta aika veikeä idea. Kilpailu voisi jakautua useammalle arvonnalle, joita ennen "tekoälyt" saisivat ostaa rivejä haluamansa mukaan. Jokaisella on aluksi tietty summa rahaa, jonka voi myös säästää. Kilpailun voittaja on sitten se, jolla on eniten rahaa lopuksi...

Meitsi [09.02.2005 11:21:35]

#

ASCII-peli vois olla kyl aika kova juttu, sellanen kisa olis kiva.

dungeon86 [09.02.2005 11:52:03]

#

Aion osallistua seuraavaan kilpailuun vaikka se olisi mikä :)
Mutta itse ehdottaisin jotain peliä.
Pelin genrellä ei olisi mitään väliä, mutta pelissä olisi oltava kaksinpeli mahdollisuus ja mahdollisuus otella tietokonetta vastaan.
Arvostelussa otettaisiin huomioon pelin selkeys ja pelattavuus, sekä tekoälyn taso.
Itse tekisin esimerkiksi jonkinlaisen sivusta kuvatun avaruuslentelyräiskinnän.

Heikki [09.02.2005 18:52:42]

#

Peli on aika hankala aihe, ja varsinkin noin leväperäiset kriteerit eivät olisi hyväksi.

Miksi ei peli?

Mikäli kriteerit olisivat "oltava kaksinpeli mahdollisuus ja mahdollisuus otella tietokonetta vastaan", olisivat pelit aivan erilaisia ja paremmuusjärjestykseen laittaminen olisi vaikeaa.


Lottonumeroiden ennustaminen voisi olla hyvä vaikkapa niin, että pelataan 1000 kierrosta ja katsotaan kuinka paljon tekoälyt saisivat arvattua oikein. Ennen jokaista arvontaa saisi tietysti analysoida vanhoja arvontoja. Ongelma tässä olisi se, että kyseessä olisi osittain myös tuuripeli, tosin kierroksia lisäämällä saataisiin tuurin osuutta pienennettyä.

Antti Laaksonen [09.02.2005 19:54:14]

#

Tuhat kierrosta ei tule kysymykseen, jos oikeat numerot saadaan suoraan lauantain arvonnan mukaan. Tietysti tämmöisessä kilpailussa ratkaisee enimmäkseen onni - vanhojen voittorivien tutkiminen ei ainakaan hyödytä juuri mitään. Olisihan se jännää, jos jonkun ohjelman tuottama rivi nappaisi päävoiton. Ja siinä mielessä aihe olisi mainio, että kaikenkarvaiset ohjelmoijat olisivat samalla viivalla.

Heikki [09.02.2005 21:41:21]

#

Ajattelin että testiohjelma arpoisi luvut, jolloin voisi edes vähän yrittää saada "järkeä" ohjelmalle ja joku ohjelma voisi jopa saada päävoiton. Toki tietokoneella arvotut rivit eivät täysin vastaa oikeiden lottonumeroiden satunnaisuutta...

ville-v [10.02.2005 17:40:36]

#

Deewiant kirjoitti:

Pointtina oli nimenomaan, ettei tuollaisia, koska tämä on ohjelmointisivusto eikä "turinointisivusto" ;-)

Totta. Suomipeleissä voisi olla tollainen kilpailu, ei täällä.

mikeful [15.02.2005 12:41:21]

#

Noista Heikin löpioistä tuli uusi kilpailuidea: tekoäly Mastermind-lautapeliin. Pelissähän on ideana, että toisella pelaajalla on jokin salainen merkki- tai väririvi, jota toinen pelaaja yrittää arvata ehdotttamalla rivejä. Osoitteesta http://gamehippo.com/cat/9-27_1.shtml löytyy läjä tietokoneversioita pelistä.

InvalidCo [15.02.2005 15:40:28]

#

Eikun NYT tuli hieno idea... pitää koodata jonkinlainen "peli" tai "hyötyohjelma", mutta siinä saa käyttää samaa käskyä VAIN kerran, tai toisenkin... siis tarkoitan tietenkin sellaisia käskyjä kuin esim. QB:ssä IF, PRINT, FOR, NEXT... itsetehtyjä subeja saisi käyttää niin paljon kuin haluaa, mutta niitäkin saisi sitten olla vain rajallinen määrä.

D.J-Dew [15.02.2005 16:10:35]

#

Tota php-skriptiä käytän aina ku laitan lottoo.
http://www.mustikkarinne.net/~valtzu/lottonrot.php

TeeVee [15.02.2005 20:34:51]

#

Heikki kirjoitti:

Peli on aika hankala aihe, ja varsinkin noin leväperäiset kriteerit eivät olisi hyväksi.

Miksi ei peli?

  • Liian moni asia ohjelmointitaidon lisäksi ratkaisee, ja tämähän on ohjelmointisivusto
  • Ei saada selkeää paremmuusjärjestystä vrt. ristinollatekoälyt tai muut algoritmikilpailut
  • Hyvän pelin tekemiseen kuluu paljon aikaa

Mikäli kriteerit olisivat "oltava kaksinpeli mahdollisuus ja mahdollisuus otella tietokonetta vastaan", olisivat pelit aivan erilaisia ja paremmuusjärjestykseen laittaminen olisi vaikeaa.

Yhdyn Heikkiin täysin. Nykyisin kaikki haluavat kilpailusta pelintekokilpailun. Silloin aikarajoitus voisi olla hyvin 6kk, eikä pari viikkoa...

Kaikilla ei ole aikaa koodata 24/7. Peli vie aikaa. Kun haluaa saada laadukkaan pelin parissa viikossa, täytyy koodata se 24/7. Älytöntä ei muuta voi sanoa.

Lotto voisi olla hauska. Mutta silloin siitä tulisi helposti testi, kenellä putkalaisista on paras mäihä!?

Tekoäly olihan juuri, kenellä on intoa alkaa koodailemaan uutta tekoälyä?

Kielet, kilpailussa tulisi ottaa huomioon tehtävänannossa, mille kielille kyseinen kilpailuaihe on soveltuva ja kuinka moni putkassa hallitsee kieltä niin hyvin, että kykenee osallistumaan kilpailuun. Pelintekokilpailu Pythonille, jossa täytyy olla 3d grafiikkaa, ei taida onnistua :D

Mutta eikös se aihe voisi olla jokin suht. koht. helppo? Tavoiteltaisiin paljon osallistujia ja kynnys osallistua kilpailuun tulisi alhaiseksi.

D.J-Dew [15.02.2005 21:39:07]

#

TeeVee kirjoitti:

Lotto voisi olla hauska. Mutta silloin siitä tulisi helposti testi, kenellä putkalaisista on paras mäihä!?

Tai sitte tehtäos äänestys, että kenen "lottokonetta" käyttäisit mieluiten?
No oma lottokoneeni arpoo mielestäni "hyvät" numerot; se arpoo 6 riviä, ja niissä kuudessa rivissä on yhteensä aina 7-10 oikein.

Metabolix [16.02.2005 19:37:49]

#

lainaus:

Lotto voisi olla hauska. Mutta silloin siitä tulisi helposti testi, kenellä putkalaisista on paras mäihä!?

Riippuu toteutuksesta. Jos lottoarvonta suoritetaan 100 kertaa tai useammin ja satunnaislukugeneraattorin alustuksena käytetään aina time()-funktiota ja luvut lasketaan samalla kaavalla, vaikka jotenkin kierosti ((rand() << 1) + (rand() >> 1)), saadaan aikaan kilpailu, jossa oikeastaan pitää tulosten perusteella arvata käytetty rand()-kaava. Syötetiedostosta pitäisi löytyä kaikki siihen asti arvotut rivit ja kunkin rivin arvonnassa käytetty siemenluku, eli se, mitä time() sillä hetkellä antoi, jotta ohjelma voi tuottaa samat satunnaislukusarjat kuin arvontaohjelma. Koska kilpailu olisi aika vaikea, voitaisiin rajoittaa keinoja, joilla rand()-funktioita arvonnassa manipuloidaan, sopimalla vaikka niin, että arvontaohjelma ei kutsu ylimääräisiä rand()-funktioita ennen arvonnan alkua vaan aloittaa aina siitä, mitä ensinnä tulee vastaan. Voitaisiin julkaista vaikka arvontaohjelman lähdekoodi kaikilta muilta osin paitsi arvontafunktioltaan, jotta kaikki voivat itse todeta sen sopivaksi.

Aika hankalasti selitetty, mutta yrittäkää ymmärtää kilpailun idea.

raezel [17.02.2005 09:20:44]

#

Tuo lottoarvonta olisi kyllä aikas näpsäkkä idea. Itse kannatan ideaa että ihan lauantain lottoarvontojen perusteella. Kilpailun seuraamisessa olisi jännitystä ja siihen voisi osallistua vähän aloittelevammatakin koodaajat(kuten allekirjoittanut) eikä kilpailun aihe rajoittaisi ohjelmointikieltä. Totta on että kilpailu olisi hyvin vahvasti tuuriin painottunut, mutta jos aiheena on lotto, on tuuri aina se suurin tekijä, eli kailpailu olisi aiheelleen uskollinen.

Ja tietysti antaisihan tuo mahdollisuuden ohjelmoida mitä ihmeellisimpiä algoritmejä ja laskentakaavoja ihan vain huvikseen jotta näkee miten ne oikeasti lotossa toimisivat.

ville-v [18.02.2005 10:35:30]

#

PC-Master kirjoitti:

Eikun NYT tuli hieno idea... pitää koodata jonkinlainen "peli" tai "hyötyohjelma", mutta siinä saa käyttää samaa käskyä VAIN kerran, tai toisenkin... siis tarkoitan tietenkin sellaisia käskyjä kuin esim. QB:ssä IF, PRINT, FOR, NEXT... itsetehtyjä subeja saisi käyttää niin paljon kuin haluaa, mutta niitäkin saisi sitten olla vain rajallinen määrä.

Tuohan on upea idea! Tietenkään se ei sovi joka kielelle, mutta kuitenkin...

Metabolix [18.02.2005 18:59:22]

#

Jaa-a. Ohjelma viidellä ehdolla (C:ssä: if, switch, while, for, (?:)-rakenne)? Vai saako tunkea ehtolauseen subiin ja kutsua sieltä joka kerta? Silloinhan on käskyä käytetty vain kerran, mutta omaa subia useammin, mutta lopputulos on kuitenkin sama.

Idea on hyvä, mutta ei välttämättä saa käytännössä kunnon kilpailua aikaan.

T.M. [20.02.2005 03:31:20]

#

He-hei, tuohan onkin hauska idea! :D
Siinä sitten mietitään mihin tuhlata tietty määrä if-lauseita saatikka for-silmukoita...

Yksi per käsky ei ole kauhean kiintoisaa, mutta jos esim 6 iffiä, ja 2 for silmukkaa, niin eiköhän siitä jotain hassua ala syntymään.
Ja vielä kun päätettäisiin että esim kertolaskuja ei saa olla kuin 4 ja pluslaskuja 6 tms. :) Eikä itse tehtyjä funktioita saisi käyttää lainkaan, tjsp.

Metabolixin lottoengine idea oli myös kiintoisa, minusta noista molemmista voisi saada jo jonkinlaista aikaiseksi :)

---

Lottonumeroista puheenollen, tässä hyvät numerot:
http://koti.mbnet.fi/winuus/lotto_scan.php?rounds=50
Käyttää apuna viime vuosien lottotilastoja numeroiden arpomisessa.

chiqu [04.03.2005 13:48:11]

#

En ole kauhian aktiivinen ainakaan ennen ollut putkassa, ja en tiedä linjoista mitään, mutta jos saisin kilpailusta päättää se olisi juurikin tuollainen, että tietty määrä kaikkia käytettävissä ja, että se määrä pitäisi käyttää, tekemättä mitään turhaa.

Mutta minunpa ideassani kieli oli PHP :)

Gwaur [04.03.2005 14:03:12]

#

POV-Ray Short Code Contest. Pitää tehdä näyttävä kuva 256 tavun kokoisella povray-sorsalla. On kyllä aika upeita :)

InvalidCo [04.03.2005 16:23:01]

#

Jos tehdään tuollainen missä käskyjen määrä on rajoitettu, niin sääntöjä voisi muuttaa vielä niin, että omia subeja (Ei funktioita) saisi tehdä, mutta niissä jokaista käskyä saisi olla vain yksi, ja itsetehtyä subia saisi käyttää kaksi kertaa.

EDIT: Ja jos C++:ssalla ohjelmoidaan niin laitetaan lista sallituista .h-tiedostoista. Eikä ASM-koodia saisi sisällyttää koodiin (Tai mitään muutakaan koodia. Jokuhan voisi tehdä jonkin pienimuotoisen kääntäjän, joka kääntää jotain omaa ohjelmakieltä ja sitten laittaa STRING-muuttujiin koodin.)

Juice [05.03.2005 18:58:20]

#

Ei ole järkeä rajoittaa käskyjä tai olioita. Niitähän voi kloonata loputtomiin eri nimillä :)

Blaze [05.03.2005 19:33:50]

#

Minusta tuollaisessa "saat kaks iffiä ja kolme looppia, tee niillä jotain hienoa" ei ole oikein järkeä. Jos rajotuskisa halutaan, niin rajotetaan ennemmin sitte sitä sorsan kokoa (tai binäärin, miten vaan).

acorn [05.03.2005 19:48:37]

#

Binäärin kokoa ei kannata alkaa rajoittamaan. Joillakin kielillä tulee automaattisesti erittäin suuret binäärit ja kääntäjästäkin se voi riippua.

Lähdekoodin kokoa ei voi välttämättä hirveän pieneen rajoittaa, jos haluaa aloittelijoidenkin voivan osallistua, mutta eiköhän sellainen 1-4 kt olisi sopiva.

E.K.Virtanen [06.03.2005 01:33:54]

#

acorn kirjoitti:

Binäärin kokoa ei kannata alkaa rajoittamaan. Joillakin kielillä tulee automaattisesti erittäin suuret binäärit ja kääntäjästäkin se voi riippua.

Lähdekoodin kokoa ei voi välttämättä hirveän pieneen rajoittaa, jos haluaa aloittelijoidenkin voivan osallistua, mutta eiköhän sellainen 1-4 kt olisi sopiva.

Aivan totta, jos halutaan kilpailu johon vähän aloittelevammatkin haluttaisiin mukaan niin koodin kokoa ei kannattaisi rajoittaa. Kisa ohjelmasta joka pitää änkeä pieneen tilaan tappaa monen mielenkiinnon, itse en ainakaan lähtisi moiseen. Koodini toimii mutta on ikävän pitkää tässä vaiheessa =)

Kisassa kait pitäisi pikemminkin koetella ohjelmoijan mielikuvitusta...mutta en kyllä osaa antaa mitään ideoita enempää :-/

tomaattigeeni [24.03.2005 02:36:49]

#

4096 tavun lähdekoodi ois jättebraa. Joku aihe vai vapaa? Ja onko tässä asiassa tapahtunu mitään edistystä, edellisestä viestistä näkyy olevan aikaa.

Deewiant [24.03.2005 12:12:02]

#

Tällä hetkellä tuota ideaani ei kannata lähteä toteuttamaan. Nimittäin tämänvuotinen IOCCC eli International Obfuscated C Contest on nyt avattu. Idea on vähän eri (ei tarkoitus tuottaa pientä koodia vaan vaikealukuista), mutta toteutus tältä osin aika samanlainen: 4096 tavun rajoitus lähdekoodille, josta korkeintaan 2048 tavua saa olla muuta kuin whitespacea. Eli sinne vain jos pientä koodia tykkää kirjoittaa :-)

Voidaanhan samantyyppinen kisa pitää täälläkin, mutta en näe siinä järkeä, ellei keksitä jotain erityisempää ideaa.

TH [01.04.2005 20:41:57]

#

Joku vähän rajoitetumpi kilpailu on mielestäni hyvä idea..

dooDle [04.04.2005 19:10:23]

#

Oisko hyvä idea näytönsäästäjä, jossa ois lähdekoodin koon rajoitus? Sen pitäis vaikka olla jotenkin keväinen tai kesäinen..

Heikki [05.04.2005 13:59:33]

#

Näytönsäästäjän on demo, eli tällöin kilpailu olisi aika lailla samanlainen kuin viimeksi. Toisaalta, demot ovat yksi hyvä aihealue jos pieneen lähdekoodiin halutaan aihealue, vaikka toista tuleekin.

Pieni lähdekoodi + aihe vapaa voisi tuottaa mielenkiintoisia tuotoksia, vaikka tosin joutuisi koodaamisen lisäksi keksimään idean.

Antti Laaksonen [09.04.2005 21:15:06]

#

Kesäkuulle on jälleen suunnitelmassa tekoälykilpailu, jossa ohjelmat pelaavat toisiaan vastaan tiettyä peliä. Mutta nyt peli saisi olla viimekertaista (ristinollaa) harvinaisempi ja monimutkaisempi. Yksi hyvä vaihtoehto olisi kehittää kokonaan oma peli. Aikaa on vielä hyvin, joten aiheita saa ehdottaa!

ajv [10.04.2005 12:00:37]

#

3D-ristinolla :)

Metabolix [10.04.2005 19:45:32]

#

4D-ristinolla (vaikka 4x4x4x4, neljä riviin). Vähän haastetta edes :) Erilaisten ristinollien huono puoli on siinä, että tekoälyn voi tekaista edellisiä hyödyntäen melko helposti.

Gwaur [10.04.2005 19:49:20]

#

Miinaharavaa pelaava tekoäly ;)

T.M. [10.04.2005 19:58:35]

#

Ei mitään ristinollia enää.

Parempi olisi että kyseessä on ennestään tuntematon peli, niin ei kukaan voi netistä etsiä valmiita alkkiksia tai ideaa sen pelin tekoälyihin.
Tällä tavalla kilpailusta tulisi entistä jännittävämpi ja omaperäisempi, ja tietenkin hauskempi ;)

Metabolix [10.04.2005 20:19:13]

#

Otetaanko Go saman tien? Tulisipa ainakin tekoälyjä, jotka voittaa helposti :)

Latska [10.04.2005 22:58:28]

#

Minun mielestäni reversi olisi ihan haastava. Siinä olisi jo ideaa.

Chiman [11.04.2005 11:06:26]

#

Mielestäni ihanteellinen peli tällaiseen kilpailuun olisi jokin uusi ja ennalta tuntematon, jotta jokainen joutuisi kehittämään tekoälyn itse. Mahdollisia siirtovaihtoehtoja olisi niin paljon, ettei tekoäly voisi laskea niitä muutamaa siirtoa pidemmälle (tyyliin Go). Tällöin painotus siirtyy raa'asta laskennasta tekijän taitavuuteen.

Tekoälyjen paremmuus olisi hyvä ratkaista samoin kuin Ristinolla-kisassa: yksi ottelupari jokaista kilpailijaa vastaan. Peluuttamisen järjestämiseen itselläni olisi yksi ehdotus:
Pelaaja 1 <--TCP--> Palvelin <--TCP--> Pelaaja 2

Tuon protokollan käyttämisellä olisi muutama etu; TCP:llä kommunikointi on nopeampaa kuin levylle kirjoittaminen ja se mahdollistaa tarvittaessa helpon peluuttamisen netin välityksellä. Mikäli käytettävästä kielestä löytyy valmis tuki TCP:lle, toteutus ei ole sen monimutkaisempi kuin tiedostojen käytössäkään.

Tekoälyt olisivat käynnissä koko yksittäisen pelin ajan, joten ohjelman mahdollinen käynnistymisviive ei haittaa. Laskentaa tai muuta prosessorikuormitusta saa tapahtua vain omalla vuorolla. Se voidaan todeta helposti esim. lähdekoodeista, joiden julkaiseminen olisi pakollista.

Miltä kuulostaa?

Deewiant [11.04.2005 16:55:44]

#

Chiman kirjoitti:

Mikäli käytettävästä kielestä löytyy valmis tuki TCP:lle, toteutus ei ole sen monimutkaisempi kuin tiedostojen käytössäkään.

Muuten ihan hyvä idea, mutta tämä pisti silmään. Aika harvassa kielessä on suoraan sisäänrakennettuna tuki TCP-yhteyksille, standardikirjastossakaan, joten puuha saattaa mennä loppujen lopuksi erittäin vaikeaksi (tai en tiedä --- en ole itse koskaan koodaillut nettipuuhia).

Toisaalta, ehkä tämä on hyväkin juttu: nopean kielen, kuten C:n, käyttö ei tuokaan epäreilua etua esimerkiksi Perlin käyttäjään verrattuna, koska Perlissä TCP-yhteydet ovat sitävastoin paljon helpompia toteuttaa. Veikkaan kyllä silti, että tämä on pienehkö este ylitettäväksi ja käytännössä voittajien on pakko olla jollain erittäin nopealla kielellä tehtyjä --- ainakin olettaen, että nämä nopeiden kielten käyttäjät eivät käytä jotakin erittäin hidasta algoritmiä.

lainaus:

Se voidaan todeta helposti esim. lähdekoodeista, joiden julkaiseminen olisi pakollista.

Hyvä, että löytyy enemmänkin niitä, jotka ovat tätä mieltä. En vain näe järkeä ohjelmointikilpailussa, jossa koodia ei julkaista --- mistäs sen muuten tietää onko tyyppi itse ohjelmoinut mitään.

Antti Laaksonen [11.04.2005 20:13:40]

#

Eiköhän tosiaan keksitä ihan oma peli. Jotenkin pitää vain varmistaa, ettei kaikkia mahdollisuuksia ehdi käydä läpi järjestelmällisesti. Tähän auttavat mm. suuri määrä vaihtoehtoja pelivuorossa, tavoitteena olevat monimutkaiset yhdistelmät ja pelitilanteen muuttuvuus pelin edetessä. Pelin pitää kuitenkin olla tarpeeksi yksinkertainen, jotta sen omaksuu helposti.

Tiedonvälitykseen kannatan tiedostoja edellisen kilpailun tapaan. Syynä on se, että tiedostoja on helppo käsitellä joka ohjelmointikielellä. Tiedostonkäsittely tuskin muodostuu tekoälyn tai kilpailun toteutuksen pullonkaulaksi, sillä tiedoston lukeminen tai kirjoittaminen ei vie aikaa juuri yhtään. Viime kilpailussa tiedostojen suhteen ei ollut ongelmia.

Ohjelmointikieli tulee olemaan jälleen vapaa, ja kielen nopeus vaikuttaa vain hitusen verrattuna algoritmin nopeuteen. Lähdekoodin pakollista julkaisua pitää vielä miettiä. Monet ainakin viime kilpailussa eivät halunneet julkaista koodiaan. Ainakaan petkutusyrityksen paljastamisen takia julkaisua ei pidä mielestäni vaatia. Oletus on se, että kaikki kilpailevat rehellisesti.

Deewiant [12.04.2005 12:48:45]

#

Kilpailun tarkoitushan on osaksi myös opettaa muille kuinka asiat oikeasti tehdään; voi konkreettisesti näyttää, että asia tulisi todellakin tehdä siten kuin itse teki yksinkertaisesti voittamalla kilpailun. ("Rispekt"-arvo on tietysti asia erikseen.)

Ilman vapaata lähdekoodia kukaan ei opi mitään, ja ainoa etu on itse voittajalle. Kyllähän urheilukisoissakin oppii vastustajien virheistä tai tekniikasta, ilman avointa koodia ohjelmointikisassa ei opi muuta kuin tietämään, kuka teki asian miten hyvin itseensä verrattuna. Ei kovin hyödyllistä ainakaan minun mielestäni.

T.M. [12.04.2005 13:42:10]

#

Deewiant kirjoitti:

Kilpailun tarkoitushan on osaksi myös opettaa muille kuinka asiat oikeasti tehdään

Ei tää kyllä mikään opetuskilpailu ole.
Kilpailuun osallistujat tekevät oman tekoälynsä, eikä kukaan ole kenenkään yläpuolella opettamassa muita: "Näin tämä oikeasti tehdään!".
Jokainen oppikoon sen mitä parhaakseen näkee.
Näin olen asian ymmärtänyt...

Chiman [12.04.2005 14:56:21]

#

Eipä täällä mitään yleispätevää auktoriteettia ole opettamassa sitä Oikeaa Tapaa, mutta avoin lähdekoodi mahdollistaa tehokkaan itseoppimisen. Kun lisäksi aihe on oman tekoälyn koodaamisen takia itselle tuttu, muiden kilpailijoiden koodien läpikäymiseen on pienempi kynnys. Esimerkiksi Ristinolla-kilpailun voittajan lähdekoodia oli antoisaa tutkia.

En näe mitään syytä koodien julkaisematta jättämiseen. Jos jonkun (nykyinen tai tuleva) bisnes perustuu juuri kyseisen suljetun koodin varaan, jättäköön osallistumatta.

Kuulen toki mielelläni perusteltuja syitä siihen, miksi jotkut haluavat pitää laatimansa tekoälyn lähdekoodin omana tietonaan.

hunajavohveli [12.04.2005 16:34:54]

#

Chiman kirjoitti:

Kuulen toki mielelläni perusteltuja syitä siihen, miksi jotkut haluavat pitää laatimansa tekoälyn lähdekoodin omana tietonaan.

Itse jätin julkaisematta ristinollatekoälyni, koska sen koodi oli sekavaa, ja sen periaate kaipasi vielä runsaasti hiomista. Tuskin siitä olisi oppinut muuta kuin huonoja tapoja.

Deewiant [12.04.2005 20:03:53]

#

Laittaisit sitten vain "huonoa koodia" -kommentin lähdekoodin yläpäähän. Voi siitä silti joku jotakin oppia - jos ei muuta, niin miten asiat _ei_ pidä tehdä ;-)

Antti Laaksonen [25.05.2005 20:20:35]

#

Kesän kilpailun aihe alkaa pikku hiljaa varmistua. Kilpailun perustana on melko tunnettu tietokonepeli, jossa tarkoituksena on tyhjentää erivärisistä neliöistä muodostuva pelikenttä. Kun samanvärisiä neliöitä on useampi vierekkäin, ne voidaan poistaa. Tällöin kaikki poistuvan osan yläpuolella olevat neliöt putoavat alemmas ja täyttävät tyhjän tilan. Pelin toteutuksista mainittakoon Clickomania ja Boxed.

Tekoälyn tehtävänä on poistaa palikoita mahdollisimman edullisessa järjestyksessä ja pyrkiä tyhjentämään pelikenttä mahdollisimman täydellisesti. Yksilötehtävän lisäksi tähän kilpailuun kuuluu ryhmäkamppailu, jossa samaa pelikenttää tyhjentää useampi tekoäly, joista jokainen poistaa omaa väriään. Olen myös ajatellut, että kukin kilpailija saa toimittaa yksilötehtäviin yhden omatekoisen aloitustilanteen. Mielestäni tämä aihe on siksi onnistunut, että tehtävä on varsin haastava, mutta yksinkertaisellakin toteutuksella voi päästä pitkälle.

Tarkemmat kilpailuohjeet tulevat kesäkuun ensimmäisenä päivänä, ja kilpailu kestänee kuukauden verran.

Jaska [26.05.2005 11:21:17]

#

No huh, huh mikä aihe. Tähän ongelmaan on kehitetty polynomiaalisessa ajassa toimiva algoritmi joka ratkaisee ongelman. Jos tämän tietää niin se on helppo implementoida mitään miettimättä. No jaa, algoritmitehtävissä on aina se että joku on saattanut ennestään keksiä nopean algoritmin.

Antti Laaksonen [26.05.2005 12:45:43]

#

Kilpailussa on jälleen tarkoitus kehittää oma algoritmi jonkin valmiin kopioimisen asemesta. Minun tietääkseni tähän ongelmaan ei myöskään tunneta polynomiaalisessa ajassa toimivaa ratkaisua. Lisäksi tekoälyn täytyy myös pärjätä muita vastaan ryhmäpelissä, mihin vaaditaan erillinen algoritmi.

ajv [26.05.2005 14:53:00]

#

Erittäin houkutteleva aihe. Mieli tekisi osallistua, mutta eipä taida aika riittää töissä käymisen ja opiskelun ja inssityön kirjottamisen ohessa oikeen ylimääräiselle projektille :(

T.M. [26.05.2005 15:09:17]

#

Antti Laaksonen kirjoitti:

Kilpailussa on jälleen tarkoitus kehittää oma algoritmi jonkin valmiin kopioimisen asemesta.

Onko sattunut mieleen että on olemassa myös niitä pällejä jotka kopioivat valmiin ratkaisun välittämättä mistään mitään?
Tosin, en usko että kovin monia alkkiksia tämän kaltaiseen tehtävään on edes kehitetty, tavoitteenahan on tyhjentää peliruutu tietyllä strategialla. Jos oikein ymmärsin...

Edit: Tuli tässä mieleen että eikös tuo peliruutu täytetä sattumanvaraisesti? Sehän vaikuttaa sitten myös pelitulokseen jonkin verran, ellei pelejä pelata monta sataa kertaa.

Jakezu91 [26.05.2005 15:58:57]

#

Joku pokeripeli?

Antti Laaksonen [26.05.2005 16:02:11]

#

T.M. kirjoitti:

Onko sattunut mieleen että on olemassa myös niitä pällejä jotka kopioivat valmiin ratkaisun välittämättä mistään mitään?

Edellinen kilpailu osoitti, että tällaista ei tapahdu. Mikään valmis ratkaisu ei sovi suoraan kilpailun vaatimuksiin.

T.M. kirjoitti:

Tuli tässä mieleen että eikös tuo peliruutu täytetä sattumanvaraisesti? Sehän vaikuttaa sitten myös pelitulokseen jonkin verran, ellei pelejä pelata monta sataa kertaa.

Kaikille tekoälyille tulee sama tehtäväsarja, joka on osin kilpailun osallistujien laatima. Näin arviointi on tasapuolista.

Jaska [26.05.2005 18:54:35]

#

Antti: Clickomaniaan on olemassa yhden rivin tapaukseen polynomiaalinen ratkaisu. Katso esim. Biedl, Demaine, Demaine, Fleischer, Jacobsen, Ian Munro, The Complexity of Clickomania.

Antti Laaksonen [26.05.2005 19:14:52]

#

Kilpailun tehtävät eivät tietenkään ole yksirivisiä (tai -sarakkeisia), vaan tekoälyn täytyy käsitellä kokonaista pelikenttää.

Deewiant [26.05.2005 19:23:46]

#

Jaska kirjoitti:

Clickomaniaan on olemassa yhden rivin tapaukseen polynomiaalinen ratkaisu.

Your point being? Emme me yksirivisiä pelejä pelanne.

(refresh: Laaksonen ehti ensin)

lainaus:

esim. Biedl, Demaine, Demaine, Fleischer, Jacobsen, Ian Munro, The Complexity of Clickomania.

Lukaisin muuten tuota PDF:nä jo aikaisemman viestisi aikaan päivällä, ja sanon, että jos joku tuon pohjalta implementoi toimivan ohjelman sen yksirivisen tai -sarakkeisen tilanteen ratkaisuun, osaa jo sen verran kiitettävästi että kilpailun voittokin on aika ansaittu. On nimittäin aika vaikealukuista tekstiä, ellei osaa alan matematiikkaa, jonka osaaminen helpottaneisi hyvän algoritmin kehittämistä tähänkin kilpailuun.

Jaska [26.05.2005 21:42:14]

#

Deewiant kirjoitti:

joku tuon pohjalta implementoi toimivan ohjelman sen yksirivisen tai -sarakkeisen tilanteen ratkaisuun, osaa jo sen verran kiitettävästi että kilpailun voittokin on aika ansaittu.

Ei välttämättä. Dokumentti antaa kyllä toimivan algoritmin 1-ulotteisessa pelissä, mutta samaa metodia ei ole helppo yleistää useampaan ulottuvuuteen. Ei matemaattisen notaation ymmärtäminen ole oikotie onneen. Sillä voidaan perustella täsmällisesti jokin tulos, mutta ei tutkijat mieti yhtälöinä tämäntyyppisiä ongelmia, vaan formalisoivat vasta idean saatuaan ratkaisunsa kieliopin muotoon.

Deewiant [26.05.2005 22:01:54]

#

Jaska kirjoitti:

Dokumentti antaa kyllä toimivan algoritmin 1-ulotteisessa pelissä, mutta samaa metodia ei ole helppo yleistää useampaan ulottuvuuteen. Ei matemaattisen notaation ymmärtäminen ole oikotie onneen.

Ei metodia olekaan helppoa yleistää, enkä sanonutkaan niin. Sanoin vain, että yksiulotteisenkin algoritmin ohjelmoiminen tuon pohjalta vaatii jo osaamista, enemmän kuin pelkän notaation ymmärtämisen verran.

(BTW, sanoit aiemmin "Jos tämän tietää niin se on helppo implementoida mitään miettimättä." Nyt väität toisin.)

Olin ehkä hieman epäselvä, kun sanoin "kilpailun voittokin on aika ansaittu" --- tarkoitin nimenomaan, että voitto on ansaittu, en sitä, että se on saavutettu. Ei pelkällä tuolla algoritmillä tee paljoa mitään tässä kilpailussa, mutta sen täydellinen ymmärtäminen ja implementoiminen vaatii mielestäni yhtä paljon osaamista (vaikkakin hieman eri alalta, jonka takia tämä väite on turhahko) kuin kilpailukykyisen algoritmin kehittely.

Jaska [26.05.2005 22:32:39]

#

Deewiant kirjoitti:

Nyt väität toisin.

Totta. Selvennän kommenttejani. Ensimmäisessä viestissä tarkoitin että olen itse lukenut sen verran kieliopeista että osaisin tehdä helpohkosti ongelman (1-ulotteinen tapaus) ratkaisevan ohjelman tuon artikkelin perusteella. Taisin yleistää tuon väitteen liian heppoisin perustein. Toisessa väitteessä tarkoitin että yleisessä tapauksessa keskimääräiselle ohjelmoijalle kieliopin muuntaminen ohjelmakoodiksi ei ole kovinkaan nopeaa. Kieltämättä pitäisi opetella ilmaisemaan itseäni selkeämmin.

Chiman [27.05.2005 13:21:18]

#

Aihe kuulostaa melko onnistuneelta. Siirtovaihtoehtoja on reilun kokoisella pelialueella niin paljon, ettei pelkällä raa'alla laskentateholla pärjää. Teen oman tekoälyni joko Pythonilla tai C:llä.

Kunhan saadaan tarkemmat määrittelyt esiin, niin joku voisi tehdä esim. Javascriptillä selaimessa toimivan "playerin", joka generoi siirrot sisältävästä tekstipätkästä graafisen esityksen. Sitä voitaisiin käyttää testaamiseen ja turnauksen otteluiden toistamiseen.

jcd3nton [06.06.2005 17:47:36]

#

Tässä vähän minun kantaani..

Lottonumeroarpoja (korjatkaa?) ja yleensäkin kaikki tuuriin liittyvät ovat minun mielestä rasittavia. Johtuu ehkä huonosta tuuristani? Demot ovat ihan mukavia, mittaavat ohjelmoijan luovuutta ja kykyä sisällyttää ohjelmaan jotain hienoa. Mutta jostain syystä tämä ei innosta minua (ja päättelen ettei välttämättä kovin monia muitakaan putkalaisia - tietysti voin olla väärässä).

Minua erityisesti kiinnostava aihe on pelit. Mutta hyvän pelin tekeminen vie aikaa (riippuu taas pelistä, kyllä hyvän voi nopeastikin tehdä), ja useimmiten muutkin kuin ohjelmointitaidot tulevat liian isoksi osaksi kokonaisuutta.

Tekoälyt, siinähän on mahtava aihe. On mukavaa yrittää tehdä koneesta viisas, saada se ajattelemaan järkevästi (monimutkaisesti..?). Tietysti pelin tulee olla kohtalaisen simppeli, jottei tarvitse liian monimutkaisesti ajatella. Vähentyneistä putkavisiiteistäni johtuen (selitykset jäävät pois!) en huomannut tällä hetkellä käynnissä olevaa tekoälykilpailua ennen sen alkua, joka ehkä vaikutti siihen ettei inspiraatio iskenyt. Vaikka onhan vielä paljon aikaa, kilpailu aluillaan ja sillein... mutta jätän väliin tällä kertaa =). Tekoälykilpailuja ei saa olla liikaa.

Useasti on noussut esille binäärin tai lähdekoodin koon rajoittaminen. Itse en siitä pidä... Jäljelle jää nyt hyötyohjelmat. Ja kun tuo pieni koko on ollut esillä niin minulle tuli mieleen joskus mainittu aihe, pakkausohjelma. Sellaista voisi olla ihan kiva värkätä.

Jos siis olisi kilpailu, johon on tarkoitus osallistua itse tehdyllä pakkausohjelmalla (muutamia erikokoisia ja sisälloltään erilaisia ohjelmia testikoneella, jotka pakkausohjelman on pakattava ja pystyttävä purkamaan), niin olisiko siihen sitten kenelläkään muulla kiinnostusta? Ohjelmien arvoinnissa päätekijä olisi odotettavasti pakkauksen laatu. Myös nopeus voisi olla tärkeä, mutta silloin kilpailu voi koitua epäreiluksi hitaampia kieliä osaaville osallistujille.

Pakkaukseen voi löytyä valmista koodia jostain, joten ohjelmien lähdekoodit olisi todennäköisesti julkaistava.

*Odottaa muiden kantaa*

-DuClare-

Metabolix [06.06.2005 18:22:44]

#

Hyvä idea, vaikkakin haastava. Testiaineistona voisivat olla kaikki osallistuneet ohjelmat ja niiden lähdekoodit, jotka kaikki pitäisi paketoida samaan pakettiin, ja arvosteluperusteena syntyneen paketin koko (~80%) ja käytetty aika (~15%) sekä purkamiseen käytetty aika (~5%).

Monissa noista mukavista aiheista (demot, pelit yms.) tulee vastaan tuon jo mainitun muun-kuin-ohjelmoinnin lisäksi se, että niiden arvostelu on aina mielipidekysymys, kun taas tekoäly tai jokin muu algoritmi (kuten pakkaus) joko on voittaa tai ei voita, säännöt ovat selvät.

T.M. [06.06.2005 18:48:32]

#

Pakkausohjelman teko taitaa mennä liian haastavaksi, ja muutenkin tylsäksi.
Minun kantani...

jcd3nton [06.06.2005 20:20:52]

#

Metabolix kirjoitti:

Hyvä idea, vaikkakin haastava. Testiaineistona voisivat olla kaikki osallistuneet ohjelmat ja niiden lähdekoodit, jotka kaikki pitäisi paketoida samaan pakettiin, ja arvosteluperusteena syntyneen paketin koko (~80%) ja käytetty aika (~15%) sekä purkamiseen käytetty aika (~5%).

Harvoin joku on samaa mieltä kanssani vaikka mitä kirjoittaisin.
^_^
Haastava... On se omalla tavallaan, mutta itsestäni tuntuu että se on kohtalaisen helppoa kun sitä vähän ajattelee. Tai siis, olen aika usein tekemisen puutteessa mielessäni miettinyt erilaisia pakkauskeinoja. Ei kyllä ole hajuakaan, että onko niistä mihinkään. Mutta on sekin totta että aloittelijat eivät välttämättä keksi helposti toimivaa ratkaisua.

Tuo pakattava tiedosto osallistujien ohjelmista oli hyvä idea (olettaen että siitä ei tule liian isoa, mutta en usko että tulisi).

Metabolix kirjoitti:

Monissa noista mukavista aiheista (demot, pelit yms.) tulee vastaan tuon jo mainitun muun-kuin-ohjelmoinnin lisäksi se, että niiden arvostelu on aina mielipidekysymys, kun taas tekoäly tai jokin muu algoritmi (kuten pakkaus) joko on voittaa tai ei voita, säännöt ovat selvät.

Niin... joskus voin olla sitä mieltä että omani / jonkun muun on paras, mutta toiset ovat sitten jotain muuta mieltä. Ilmeisesti ajattelen eri tavalla kuin moni muu...

T.M. kirjoitti:

Pakkausohjelman teko taitaa mennä liian haastavaksi, ja muutenkin tylsäksi.

...kunnioitan mielipidettä. Voi ehkä olla tylsää, mutta ehkä jotkut kiinnostuvat? En tiedä. Mitä mieltä olet muuten hyötyöohjelma -ideasta, onko mitään muuta vaihtoehtoa kuin pakkausohjelma?

-DuClare-

Juice [06.06.2005 21:02:33]

#

Pakkausohjelma kuulostaa mielenkiintoiselta ja melko haastavalta. Vaaditaan varmaan melko monimutkainen algotrimi voittoon, jota ei ihan joka uuno keksikään.

jcd3nton [06.06.2005 21:09:53]

#

Juice, se on paljon kiinni muiden osallistujien taidosta. Siis jos kukaan ei osaa tehdä tällaista niin sitten yksinkertaisemmalla / helpommalla voi pärjätä. Käytännössä se on sama asia kaikissa kilpailuissa. Jos kilpailijoiden taso on korkea, tehtävät ovat haastavia...

T.M. [06.06.2005 21:16:24]

#

Tuo on tylsä, liian yksinkertainen tavoite. Loppupeleissä katsotaan vain kenellä on suurin prosenttinumero, äh tylsää.
Ja luulen ettei pakkaamiseen löydy kovin monta erilaista tapaa, joten jo tästä syystä tuo on tylsää.

En usko että täältä löytyy kovinkaan monta joka osaisi oikeasti tehdä pakkausmenetelmän joka pakkaa enemmän kuin 10% tekstistä.
Samoin kuin minulta, ei kyllä tulisi mitään järkevää tapaa mieleen pakata tekstiä, kestäisi luultavasti pari kuukautta yhtäjaksoista miettimistä ennenkun keksisi edes muutamia toimivia menetelmiä.
Ellei sitten lue valmiita algoritmejä netistä ja "oppii" sitten niiden kautta, kuten moni varmasti tekisi jos tälläinen kilpailu järjestettäisiin.

Jotenkin minusta nyt tuntuu siltä että jcd3ntonilla on ässä hihassa ja valmis pakkausmenetelmä kainalossa :)

jcd3nton [06.06.2005 21:46:12]

#

T.M. kirjoitti:

En usko että täältä löytyy kovinkaan monta joka osaisi oikeasti tehdä pakkausmenetelmän joka pakkaa enemmän kuin 10% tekstistä.

Minulla oli taka-ajatuksena että siinä pakataan data tiedostoja jotka eivät ole pelkkää tekstiä, jos nyt niin voi sanoa. Elikkä binääriä ohjelmaa tai sitten miksi ei jotain muuta esimerkiksi kuvaa tai musiikkia.

T.M. kirjoitti:

Jotenkin minusta nyt tuntuu siltä että jcd3ntonilla on ässä hihassa ja valmis pakkausmenetelmä kainalossa :)

Ei minulla ihan valmista ole. Kuten sanoin, olen kyllä miettinyt erilaisia keinoja. =). Mulla on aina ideoita ja suunnitelmia, mutta liian harvoin toteutusta... Ja voin vaikka hiukan verran raottaa nykyisiä suunnitelmiani:

Tiedosto luetaan vaikka hexana, etsitään joitain toistuvia kahden tai useamman bitin jonoja, jotka voidaan korvata tiedoston alkuun / loppuun kirjoitetulla merkillä (jonka perässä ilmoitetaan millä tämä sitten korvataan purettaessa). Ja minulla ei ole hajuakaan, että onko tuo kyllin tehokas kilpailemaan mutta jos tästä kilpailu tulisi niin ehkäpä rupeaisin kehittelemään enemmänkin ... :)

Tokihan se on sinun päätettävissä että mitä uskot.

-DuClare-


Sivun alkuun

Vastaus

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

Tietoa sivustosta