Ohjelmointiputkan kesähaaste on alkanut:
https://www.ohjelmointiputka.net/kilpa.php?
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.
Nettipelistä voi myös lähettää tuloksen listalle:
https://www.ohjelmointiputka.net/morpion/lista.
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!
Ainakin haasteeseen on helppo osallistua – parissa minuutissa napsuttelin tieni listan kärkeen! ;) Tämä ilo taitaa kuitenkin jäädä lyhyeksi.
Vähän erillainen kuin ennen ovat nämä olleet, mutta hauska.
Voisitko lisätä tuloslistaan vielä sijanumeron yhteen sarakkeeseen?
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ä.
Olisiko tuonne pelisivulle voinut saada linkin vaikka ohjelmointiputkan etusivulle?
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
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.
progo kirjoitti:
Se edustaa pelitapaa 2. Ensimmäistä versiota en edes koe mielekkääksi.
mikä tekee 1. mielettömän?
tkok kirjoitti:
mikä tekee 1. mielettömän?
Maalaisjärki sanoo, että siirto on laiton. ei lienee mikään muu.
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.
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.
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.
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.
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?
Viisi peräkkäistä palloa, joista yksi on uusi pallo, yhdistetään viivalla.
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/
ja siihen päästäisiin kyllä jos esim 100 putkalaista osallistuu.
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.
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.
kone tehoja on tarjolla jos joku koodaa ratkaisuohjelman.
Uskon että "exenpyörittäjiä" löytyy jos vain saadaan joku systeemi aikaiseksi, millä tietoja kootaan.
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ä.
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ä.
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.
Mielestäni olisi järkevämpää jos pystyisi muodostamaan yksikäsitteisen tunnisteen. Tokihan siitä voisi edelleen laskea tiivisteen.
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?
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
Aihe on jo aika vanha, joten et voi enää vastata siihen.