Ristinolla

tictac

Voisiko joku hahmottaa miten ristinolla pelissä voi toteuttaa suorien tarkistuksen? (en tarvitse koodia, vaan sanoilla voi kuvata)

Eli on vaikka 30x30 kentä ja pitäisi etsiä 5 suorat.

Peli vaikuttaa erittäin monimutkaiselta jopa 3x3 kentällä, jos pitäisi vielä toteuttaa tekoälykin.

9

1990

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • void

      Tarkoitatko ristinollaa (3x3) ruudukko vai sitä toista peliä missä laitetaan isompaan ruudukkoon rasteja ja pyritään saamaan 5 omaa peräkkäin?

      Ratkaisuja on useita. Ristinollan tapauksessa voisit tehdä pelipuun, joka sisältää kaikki mahdollisuudet, muistaakseni pelipuun koko ei ole kovin suuri. Yleisemmässä tapauksessa pelipuun koko kasvaa liian suureksi, jolloin täytyisi käyttää jotain rajoitinta jolla estetään liian suuri kasvu. Siis tällä tavalla voit tarkistaa sekä rivit että varmistaa sen että konetta ei voi voittaa.

      Helpompi tapa on 2-ulotteinen 3x3 -taulukko, jossa jokaista ruutua esittää 1 alkio, joka saa arvon 1 silloin kun se on risti ja -1 silloin kun se on nolla. (ristinollasta). Jos rivillä on 3 ristiä, sen summa on 3 ja kolme nollaa summa on -3 jne. Joten tarkistusrutiini yksinkertaisesti laskee rivien, sarakkeiden ja diagonaalien summan. Tyhjää ruutua esittää 0. Samalla kertaa voit kehittää logiikan, joka pyrkii löytämään ja blokkaamaan vastustajan 2 rivin sarjan.

      Yleinen 30x30 -ruudukko on hiukan monimutkaisempi tapaus, mutta numerointia kannattaa käyttää. Keksin ainakin kaksi vaihtoehtoa, eli joko käydä 30 x 30-ruudukko järjestelmällisesti läpi riveittäin, sarakkeittain ja diagonaaleittain tai sitten talletetaan potentiaalisten rivien alku ja suunta johonkin listaan, ja poistetaan listalta ne jotka vastustaja on blokannut ja lisätään sinne uudet syntyvät listat. Jälkimmäistä ratkaisua voisi käyttää alkeelliseen päättelyyn.

      Toivottavasti näistä ehdotuksista oli apua. Lisää voi löytyä netistä ja ehkä täältäkin tulee lisää vaihtoehtoja.

    • xo-xpert

      3x3-ristinolla on oma "mielenkiintoinen" tapauksensa, jota tuskin kuitenkaan kannattaa pohtia tämän enempää...

      Suorien (5 merkkiä) tarkistus on erittäin helppo toteuttaa. Ihmiselle haasteita tarjoavan tekoälyn toteuttaminen on paljon vaikeampaa.

      Mutta ensinnäkin, 30x30 kenttä on toivottoman ahdas silloin, kun lähdetään tosissaan pelaamaan ristinollaa. Mikään ei ole sen ärsyttävämpää kuin todeta, että tila loppuu -- läiskitään tässä nyt merkkejä sinne ja tänne, että saadaan ruutu täyteen ja uusi peli käyntiin.

      Suorien tarkistus tapahtuu siten, että jokaisen ruudukkoon lisätyn merkin jälkeen tarkistetaan ko. ruudusta alkaen ruudut vaaka- ja pystysuuntaan, sekä vielä vinottain aina neljän ruudun etäisyydelle saakka. Jos näistä 33:sta ruudusta löytyy viisi samaa merkkiä peräkkäin, peli on päättynyt. Koko "pelilautaa" on siis aivan turha käydä läpi tässä vaiheessa.

      Tekoälyn toteuttamiseksi sen sijaan pelilauta on käytävä läpi ainakin "käytössä olevilta osin" ja jopa moneen kertaan. Homma etenee periaatteessa esim. siten, että tekoäly kokeilee sijoittaa merkkinsä vuorollaan jokaiseen vapaaseen ruutuun, tekee em. suorien tarkistuksen ja jos peli ei ratkennut, toistaa saman vastapuolen pelimerkillä.

      Näin jatketaan kunnes löytyy pelin ratkaisuun johtava, tai ainakin paras siirto.

      Tekoälyllä ei useinkaan voi laskea siirtoja pelin ratkaisuun saakka. Vaihtoehtoja kun on käytännössä ääretön määrä jo pienemmälläkin kuin 30x30 pelilaudalla. Jo tämän vuoksi on suorien tarkistuksen lisäksi voitava pisteyttää jokainen sijoitus, ts. "asema", tietyllä tavalla siten, että kahdesta vaihtoehdosta voidaan valita parempi. Vastapuolen asema pisteytetään samalla tavoin pyrkimyksenä minimoida vastapuolen etu ja mahdollisuudet.

      Tekoälyn vaikeudet liittyvätkin lähinnä a) tuohon pisteytykseen ja b) vaihtoehtojen määrän rajaukseen. Vastaavat ongelmat ovat mm. Shakissa, vaikka vielä paljon monimutkaisempina.

      Viiden merkin ristinolla on parhaimmillaan erittäin mukaansatempaava peli kaikessa yksinkertaisuudessaan. Shakissa sen sijaan mielenkiintoa riittää paljon pidemmäksi aikaa....

      Pistäkää tänne linkkejä jos tiedätte tai löydätte hyviä ristinollapelejä!

      • 2000

      • yes!

        http://cactus.rulez.org/projects/gnomoku/

        Gnomoku 1.4
        ===========
        Gnomoku is a Gomoku game for GTK /X11. It uses the GTKmm C wrapper
        for accessing GTK itself.

        The libraries required by Gnomoku are available in GNOME 1.4. Consult
        your operating system vendor for information on obtaining GNOME
        1.4. The individual packages you need are:
            GTKmm 1.2.0 or later
            GNOMEmm 1.1.15 or later
            GTK 1.2
            gnome-libs 1.4
        And the following non-GNOME-related libraries:
            GNU LibC 2.0 / libpthread

        Gnomoku is maintained by ÉRDI Gergõ. Send comments, bug fixed, etc. to
        [email protected].

        Gnomoku was originally written by NAGY András .
        The AI code is ported from Gomoku.el from the GNU Emacs distribution.
        GNU Gettext support and Hungarian translation (c) ÉRDI Gergõ
        .

        This program is free software; you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        the Free Software Foundation; either version 2 of the License, or
        (at your option) any later version.

        This program is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
        GNU General Public License for more details.


      • samaa
        yes! kirjoitti:

        http://cactus.rulez.org/projects/gnomoku/

        Gnomoku 1.4
        ===========
        Gnomoku is a Gomoku game for GTK /X11. It uses the GTKmm C wrapper
        for accessing GTK itself.

        The libraries required by Gnomoku are available in GNOME 1.4. Consult
        your operating system vendor for information on obtaining GNOME
        1.4. The individual packages you need are:
            GTKmm 1.2.0 or later
            GNOMEmm 1.1.15 or later
            GTK 1.2
            gnome-libs 1.4
        And the following non-GNOME-related libraries:
            GNU LibC 2.0 / libpthread

        Gnomoku is maintained by ÉRDI Gergõ. Send comments, bug fixed, etc. to
        [email protected].

        Gnomoku was originally written by NAGY András .
        The AI code is ported from Gomoku.el from the GNU Emacs distribution.
        GNU Gettext support and Hungarian translation (c) ÉRDI Gergõ
        .

        This program is free software; you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        the Free Software Foundation; either version 2 of the License, or
        (at your option) any later version.

        This program is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
        GNU General Public License for more details.

        C
        http://www.gnustep.it/nicola/Applications/Gomoku/

        Python
        http://flibuste.net/pythreries/morpyon.html


      • 2000

      • Sinivuokko

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Kanki kovana; ei tiedä pornovideoista mitään

      Kaikkosen erityis­avustajan asunnossa kuvattiin pornoa. Väittää ettei tiedä asiasta yhtään mitään. https://www.is.fi/po
      Maailman menoa
      187
      6698
    2. Halaisin sua mies

      Jos voisin 💗
      Ikävä
      35
      2403
    3. Onkohan meillä kummallakin joku pakkomielle toisiimme

      Vähän luulen että on..
      Ikävä
      187
      2139
    4. Mitä tämä on

      Ajatella, olen viimeksi nähnyt sinua melkein vuosi sitten ohimennen. Ja silloinkin sinä välttelit minua. En ole kuullut
      Tunteet
      10
      1413
    5. Ei monet elä kuin alle 60 v, mikä vaikuttaa?

      gulp, gulp.. Juice Leskinen eli 56 vuotta. Matti Nykänen eli 55 vuotta. Topi Sorsakoski eli 58 vuotta.
      Maailman menoa
      118
      1393
    6. Olen valmis

      Kohtaamaan sinut tänä kesänä, jos sellainen sattuma osuu kohdalleni.
      Ikävä
      73
      1097
    7. Hyvää yötä kaivatulleni

      En pysty tekemään kokemaan mitään sielussa tuntuvaa, syvää, vaikuttavaa, ilman että rinnastan sen sinuun. Niin kävi tänä
      Tunteet
      24
      1057
    8. Nyt on konstit vähänä.

      Nimittäin tuulivoiman vastustajilla, kun pitää perättömiä ilmiantoja tehdä. Alkaa olla koko vastustajien sakki leimattu,
      Kiuruvesi
      30
      1035
    9. Tilinpäätösvaltuusto 27.5

      Samalla viimeinen kokous ennen uudenvaltuustokauden alkamista. Vanhat antavat itselleen erinomaiset arvosanat, ja siirty
      Pyhäjärvi
      44
      961
    10. Hakalan asunnossa on kuvattu aikuisviihdesivusto Onlyfansin kautta julkaistu pornovideo.

      Keskustan puheenjohtajan Antti Kaikkosen avustaja Jirka Hakala ei jatka tehtävässään. Keskustan puoluelehti Suomenmaa ke
      Helsinki
      13
      936
    Aihe