Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointiputka: Kesähaaste 2010: Morpion

Sivun loppuun

Antti Laaksonen [21.05.2010 00:04:23]

#

Ohjelmointiputkan kesähaaste on alkanut:

https://www.ohjelmointiputka.net/kilpa.php?tunnus=morpion

Tehtävänä on siis parantaa Morpion-pelin kansainvälisiä ennätyksiä. Siirtosarjoja voi etsiä sekä kynällä ja paperilla että tietokoneella, ja hyvinkin erilaiset lähestymistavat ovat mahdollisia.

Morpion-peliin voi tutustua nettipelin avulla:

https://www.ohjelmointiputka.net/morpion/peli.php

Nettipelistä voi myös lähettää tuloksen listalle:

https://www.ohjelmointiputka.net/morpion/lista.php

Toivottavasti haaste on mielestänne kiinnostava ja otatte siihen osaa. Uskon, että putkalaisilla on realistiset mahdollisuudet parantaa ennätyksiä – nyt on tilaisuus ohjelmoida Suomi maailmankartalle!

Metabolix [21.05.2010 00:11:33]

#

Ainakin haasteeseen on helppo osallistua – parissa minuutissa napsuttelin tieni listan kärkeen! ;) Tämä ilo taitaa kuitenkin jäädä lyhyeksi.

Macro [21.05.2010 14:14:34]

#

Vähän erillainen kuin ennen ovat nämä olleet, mutta hauska.

Voisitko lisätä tuloslistaan vielä sijanumeron yhteen sarakkeeseen?

jlaire [21.05.2010 14:21:13]

#

Ellen nyt aivan väärin muista, sain joskus vuosia sitten paperilla pelaten monta kertaa yli 110 pistettä, eli putkan ennätystä voi tässä vaiheessa parantaa ihan kuka vaan riittävällä yrittämisellä.

Maailmanennätyksen lähelle pääseminen (saati sen rikkominen) vaatiinee astetta enemmän vaivannäköä ja nerokkuutta, saa nähdä.

efteri [21.05.2010 17:48:20]

#

Olisiko tuonne pelisivulle voinut saada linkin vaikka ohjelmointiputkan etusivulle?

tkok [22.05.2010 08:48:29]

#

kulkaan vielä koneellisesti ratkaissut tota? Onhan tässä koko kesä aikaa : ).
Itse alkaisin koodailee erittäin epä matemaattista ratkaisijaa mutta oon rovalla tykistön ampumaharjoituksis viel ens viikon loppupuolelle. Täällä oli virtuaalilinuxpalvelin jossa pythonia pystyin vääntää, mut sitten lasketin sillä fibo-lukujonoa ja vertasin piihin että missä luvussa on eniten yhteistä alkua. No jätin yöksi rakstutaa100 000 ekaa ja oli sit kaatunut aamuun mennessä koko kone. Enkä tiedä käyttäjätunnusta. Siin palvelimel pyöri meidän intranetti ja sen pystyy 2 kiireisintä tyyppiä laittaaa niin eivät ole viel kerenneet. Hienoja ideoita vain 24 tunnin valvomisella. Ollaan tääl vuorotellen kaverin kans päivystämäs tai nukkumas. Offtopic päättyy

progo [22.05.2010 10:27:04]

#

Kah, aiemmin nimeämälläni "viivapelillä" onkin ihan oikea nimi. Olen vieläpä kirjaillut siitä tietokoneella vedeltävän version. Se edustaa pelitapaa 2. Ensimmäistä versiota en edes koe mielekkääksi.

SDL ja SDL_gfx; kääntynee moitteetta Windowsillakin (MinGW): http://havu.viuhka.fi/kuvat/rist.tar.gz

Koodi on pahaa, sen tiedän sanomattakin. Olioparadigmat jäivät lähinnä nimeämisen tasolle, hyvin proseduraalista se on silti. Lisäksi tuohon aikaan ei käynyt edes mielessä, että taulukon sijasta joukon käyttäminen säilöntään olisi ratkaissut monta ongelmaa.

tkok [22.05.2010 13:24:13]

#

progo kirjoitti:

Se edustaa pelitapaa 2. Ensimmäistä versiota en edes koe mielekkääksi.

mikä tekee 1. mielettömän?

Meitzi [22.05.2010 13:41:47]

#

tkok kirjoitti:

mikä tekee 1. mielettömän?

Maalaisjärki sanoo, että siirto on laiton. ei lienee mikään muu.

Grez [22.05.2010 14:12:01]

#

Kaupunkilaisjärki taas sanoo, että toisenlainen peli tai pelimuunnelma voi olla ihan yhtä mielekäs, vaikka olisikin tottunut tiettyyn peliin ja toisenlaiset säännöt tuntuisivat vierailta.

progo [22.05.2010 17:49:48]

#

tkok kirjoitti:

progo kirjoitti:

Se edustaa pelitapaa 2. Ensimmäistä versiota en edes koe mielekkääksi.

mikä tekee 1. mielettömän?

Makuasia ja tottumus.

osku91 [22.05.2010 18:25:54]

#

Jos löytyy valmiina 5 palloa peräkkäin niin saako uuden pallon laittaa minne vain vai pitääkö piirrettävän viivan käyttää uusinta palloa? Nettipeli ei ainakaan anna laittaa uutta palloa mihin vain mutta säännöissä tästä ei mainita mitään.

progo [22.05.2010 18:36:28]

#

osku91 kirjoitti:

Jos löytyy valmiina 5 palloa peräkkäin niin saako uuden pallon laittaa minne vain vai pitääkö piirrettävän viivan käyttää uusinta palloa? Nettipeli ei ainakaan anna laittaa uutta palloa mihin vain mutta säännöissä tästä ei mainita mitään.

Piirrettävän viivan on kuljettava viiden pallon kautta, joista yhden ja vain yhden on oltava uusi.

Antti Laaksonen [22.05.2010 19:13:09]

#

Macro kirjoitti:

Voisitko lisätä tuloslistaan vielä sijanumeron yhteen sarakkeeseen?

Kokeilin tätä, mutta lista näyttää minusta paremmalta ilman sijoja.

efteri kirjoitti:

Olisiko tuonne pelisivulle voinut saada linkin vaikka ohjelmointiputkan etusivulle?

Nyt sivulla on linkki Ohjelmointiputkaan.

progo kirjoitti:

Se edustaa pelitapaa 2. Ensimmäistä versiota en edes koe mielekkääksi.

Pelitapa 1 on ainakin joissain piireissä "alkuperäinen", ja pelitapa 2 on sitten sen muunnelma.

osku91 kirjoitti:

Jos löytyy valmiina 5 palloa peräkkäin niin saako uuden pallon laittaa minne vain vai pitääkö piirrettävän viivan käyttää uusinta palloa?

Säännöissä mainitaan asiasta:

https://www.ohjelmointiputka.net/kilpa.php?tunnus=morpion:

Viisi peräkkäistä palloa, joista yksi on uusi pallo, yhdistetään viivalla.

teksturi [24.05.2010 21:50:49]

#

Luulisi, että tässä tehtävässä kannattaisi lähteä toteuttamaan yhteislaskentaa. Tällöin putkalaiset ratkaisisivat ongleman yhdessä tietokoneillaan tietysti. Paras tietokoneella saavutettu tulos on tällä hetkellä taisi olla 145 tai 146. Olisi myös hyödyllistä lähteä parantamaan tätä listaa http://www.morpionsolitaire.com/English/Enumeration.htm
ja siihen päästäisiin kyllä jos esim 100 putkalaista osallistuu.

Metabolix [24.05.2010 22:27:05]

#

teksturi kirjoitti:

Olisi myös hyödyllistä lähteä parantamaan tätä listaa ... ja siihen päästäisiin kyllä jos esim 100 putkalaista osallistuu.

Muistaakseni Heikki Hyyrö ja Timo Poranen ajoivat omaa satunnaisuuteen perustuvaa algoritmiaan Tampereen yliopiston tietojenkäsittelytieteen laitoksen voimin kesäloman ajan. Siksi epäilen, että vastaavan tempun yrittäminen uudestaan ei tuottaisi edistystä kuin hyvällä tuurilla, ellei joku keksi tehtävään uutta algoritmia.

Macro [25.05.2010 13:55:23]

#

Minusta tälläistä ei ole järkeä lähteä yrittämään ilmaan mitään logiikkaa. Satunnaisella pelaamisella voi kyllä saada ennätyksen, mutta tämä on kyllä aika aikaa vievää. Paljonko arviolta esimerkiksi C++-kielisen ohjelman kestäisi ratkaista oikealla tyylillä (Tarkoitan, että ohjelma on järkevästi suunniteltu) yksi peli päätökseensä? Vuorokaudessa pystyisi ratkaisemaan monta peliä, viikossa usemman, ja koko kuukaudessa kymmenellä koneella hyvinkin voisi tulla ennätys.

tkok [25.05.2010 22:41:52]

#

kone tehoja on tarjolla jos joku koodaa ratkaisuohjelman.

Meitzi [26.05.2010 16:50:19]

#

Uskon että "exenpyörittäjiä" löytyy jos vain saadaan joku systeemi aikaiseksi, millä tietoja kootaan.

TheSavageSam [26.05.2010 18:22:09]

#

Veikkaan, että nyt tuli niin sanotusti "erinomainen" haaste, sillä sitä haastetta kyllä riittää. Saattaa siis jäädä ennätykset tekemättä, mutta jätän vannomatta.

Minkäslaisia ajatuksia tän ratkaisun suhteen? Joku logiikkahan tähän kai vaan on keksittävä, mutta miten sellainen joka olisi helpohko laskennallisesti?

Muistan kakarana saaneeni paperilla ja kynällä tässä pelissä 117 pistettä.

tkok [26.05.2010 18:51:56]

#

itse ajattelin jotain satunnais bottia joka ensin pelaa loppuun asti joku tarvittavan suurimäärä ja sitten otaaa siirtosarjat jotka ovat päässeet 100 pituuteen. Nämä katkaistaan kahtia ja alkupäätä käytetään aloitustilanteena ja loppu ratkaistaan taas satunnaisella botilla. Jne aina alkuosaa pidentämällä.

Meitzi [26.05.2010 20:51:50]

#

itse mietin pitkään mm olisiko mahdollista laskea pelitilanteesta hash pelkästään sentakia, että koska samaan pelitilanteeseen voi päätyä eri järjestyksellä, saisi laskentamäärää pienennettyä. Mutta ei tämä lopulta tuntunut, että tällä voisi mitenkään helposti hommaa helpottaa merkityksellisesti.

Grez [06.06.2010 23:08:15]

#

Mielestäni olisi järkevämpää jos pystyisi muodostamaan yksikäsitteisen tunnisteen. Tokihan siitä voisi edelleen laskea tiivisteen.

jutti [12.06.2010 13:05:03]

#

Itse pelasin kouluaikana tätä peliä niin, että jos sai yhdellä vuorolla useamman viiden pallon rivin, sai palloja varastoon. Niitä pystyi sitten käyttämään kun homma muuten olisi mennyt jumiin. Tää on varmaan kerettiläistä.

Tässä dokumentissa selitellään mielenkiintoisia juttuja:
http://www.cs.uta.fi/~tp/pub/morpion-article.pdf

Jos ymmärsin oikein, jokaisessa pelitilanteessa etsitään kaikki mahdolliset "siirrot". Jokainen siirto testataan niin että siitä eteenpäin pelataan satunnaisesti loppuun ja katsotaan miten pitkälle päästään. Sitten valitaan se siirto, jolla päästiin pisimmälle. Tätähän voisi jalostaa niin, että jokaisesta testattavasta siirrosta ei pelata eteenpäin sattumanvaraisesti, vaan tehdään myös tällä tasolla sama analyysi. Mitä pidemmälle eteenpäin analysoidaan, ennenkuin valitaan siirto, sitä parempi siirto saattaa olla. Mutta laskemisen määrähän leviää ihan tähtitieteelliseksi varsin pian.

Satunnaisuus tarkoittaa tässä sitä, että kun listataan kaikki mahdolliset siirrot yhdessä tilanteessa, valitan sattumanvaraisesti jokin niistä. Tässä kohtaa saattaisi auttaa jokin pika-analyysi. Yhden pallon läpi voi kulkea neljä tai kahdeksan suoraa, riippuen valitusta säännöstä. Miten paljon palloja puuttuu ympäriltä, jotta nämä muut kolme tai seitsemän suoraa toteutuisi?

taddu [02.07.2010 20:04:41]

#

http://croix2malte.free.fr/indexGB.php

siinä niille 24/7 konetta pitäville voi mennä hiukan aikaa mutta...
itse pääsin jo 92 aika nopeasti
joku saannut 170 tuolla


Sivun alkuun

Vastaus

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

Tietoa sivustosta