Summanarvauspelin ohjelmointikilpailu

Peli on seuraavanlainen. Kaksi pelaajaa. On annettu luku n. Pelaajat valitsevat aluksi kumpikin kokonaisluvun väliltä [1, n]. Sen jälkeen he alkavat vuorotellen arvailemaan näiden kahden luvun summaa. Joka arvauksen jälkeen kerrotaan oliko arvaus liian pieni vai liian suuri. Ensimmäisenä arvannut voittaa.

Kielenä toimii Python. Kilpailuun osallistutaan kirjoittamalla oma versio pelaajaluokasta, joka periytyy BasicPlayer-luokasta. Siihen pitää kirjoittaa kaksi metodia
get_number(self), jolla pelaajalta saadaan luvun valinta
def get_guess(self, limits, situ), jolla saadaan arvaus, kun pelitilanne on annettu.
Tarkemmat ohjeet ovat koodin kommenteissa

https://github.com/minkkilaukku/sum-guess-game

Turnauksessa ilmoitetut botit sitten pelaavat kukin toisiaan vastaan tarpeeksi monta simuloitua peliä, jotta saadaan selville kuka on paras. Saattaahan siinä tosin käydä silleen, että A on B:tä vastaan parempi ja B C:tä, mutta C onkin A:ta vastaan parempi. Voishan sen tehä niin että kaikki pelaa vaan tuota Basickiä (joka on täysin satunnaisen valinnan tekevä) vastaan. Noh, pidetään se turnaus nyt noin niinku on. Siinä on aluksi vähän pienemmille n ja sitten meniskö tuhanteen asti sopivin harppauksin.

Taitaa muuten melkein tuo luvun valinta paras mahdollinen tuolleen täysin satunnaisesti ollakin. Eri asia sitten jos tehtäisiin vain yksi arvaus ja voittaja on se kumpi osuu lähemmäksi. Se olisikin toinen versio tästä pelistä. En kyllä osaa sanoa onko näissä kummassakaan versiossa mitään mielenkiintoista.

6

198

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Eikö "Laiva on lastattu" olisi hauskempi peli? Tai pullonpyöritys?

    • Anonyymi

      Min = oma luku 1, max = oma luku n.

      Puolitushaku on tehokkain algoritmi. Jos n = 1000 tarvitaan enintään kymmenen arvausta, tuurilla vähemmän.

      • Anonyymi

        Niin, puolittaishaku tässä on algoritminä paras, mutta altis huijaukselle; jos koko ajan valitsee luvut 1 ja 1, niin summana on 2, ja siitä kun lähdetään puolittaishaulla iteroimaan niin:

        1) 500<
        2) 250<
        3) 125<
        4) 62<
        5) 31<
        6) 15<
        7) 7<
        8) 3<
        9) == 2

        ...aina iteraation tulos on 9... ja samaa tulee jos valitsee luvut 500 ja 500, niin iterointi on sama mutta nousevaan suuntaan...

        Ja jos tässä vielä muuttaa:

        5) 31<
        6) 16<
        7) 8<
        8) 4<
        9) == 2

        Niin edelleen iteraatioita on 9, koska luku ei voi olla 1, koska sen pitää olla 1 n, sillä muussa tapauksessa iteraatioita olisi 10, jos luku olisi 1.


      • Anonyymi

        Täytynee myös ajatella sitä, että oma arvaus kertoo tällöin oman luvun toiselle suoraan.


      • Anonyymi
        Anonyymi kirjoitti:

        Täytynee myös ajatella sitä, että oma arvaus kertoo tällöin oman luvun toiselle suoraan.

        Todellakin, tämä yksinkertainen peli olikin strategiapeli. Puolitushaku on tehokkain, mutta myös paljastavin algoritmi. Jos vastapelaajani arvaa minun käyttävän puolitushakua, hän pystyy päättelemään kokonaislukuni heti ensimmäisen arvaukseni jälkeen suunnilleen ±1 tarkkuudella. Ja sama toisinpäin.

        Onnistunut strategia lienee sellainen, joka harhauttaa vastapelaajaa arvaamaan luvun, joka siirtää hänen min/max-rajoja mahdollisimman vähän. Ja sama toisinpäin: Omia min/max-rajoja on pyrittävä siirtämään jokaisen arvauksen perusteella mahdollisimman paljon.

        Eipä ollutkaan pöllömpi ohjelmointikilpailu, voittaa kevyesti ainakin pullonpyörityksen.


      • Anonyymi
        Anonyymi kirjoitti:

        Todellakin, tämä yksinkertainen peli olikin strategiapeli. Puolitushaku on tehokkain, mutta myös paljastavin algoritmi. Jos vastapelaajani arvaa minun käyttävän puolitushakua, hän pystyy päättelemään kokonaislukuni heti ensimmäisen arvaukseni jälkeen suunnilleen ±1 tarkkuudella. Ja sama toisinpäin.

        Onnistunut strategia lienee sellainen, joka harhauttaa vastapelaajaa arvaamaan luvun, joka siirtää hänen min/max-rajoja mahdollisimman vähän. Ja sama toisinpäin: Omia min/max-rajoja on pyrittävä siirtämään jokaisen arvauksen perusteella mahdollisimman paljon.

        Eipä ollutkaan pöllömpi ohjelmointikilpailu, voittaa kevyesti ainakin pullonpyörityksen.

        Mitäpä sitä yksinään tyhjää pulloa pyörittelisikään, sano.


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

    Luetuimmat keskustelut

    1. Elikkä Riikka Purra ei kannusta Suomea edes euroviisuissa

      Sellaista on persujen "isänmaallisuus", oma kansa viimeiseksi ja ulkomaalaiset ensimmäisiksi. https://www.iltalehti.fi/
      Maailman menoa
      186
      2733
    2. Mitä kirjainta haluaisit

      rakastella juuri nyt?
      Ikävä
      164
      2539
    3. Victoria-tytär, 16, vertaa Martina Aitolehteä ja Esko Eerikäistä: "Iskä on enemmän..."

      Martina Aitolehti ja Esko Eerikäinen ovat ex-pari ja heillä on yksi yhteinen tytär, Victoria. Eerikäinen oli Huomenta Su
      Kotimaiset julkkisjuorut
      118
      2247
    4. Riikka: 3 euron bensa, Ruotsi: bensavero jopa alle EU-minimin

      Eipä vaan suomalainen autoilija saa kaikkien rakastamalta Riikalta sympatiaa. Ruotsissa on eri meininki, siellä diskutee
      Maailman menoa
      61
      2084
    5. Riikka runnoo: datakeskuksille tulee UUSI yritystuki

      "Suomen valtio erikseen tukee esimerkiksi kryptovaluuttaan tai aikuisviihteeseen tai muuhun keskittyviä datakeskuksia."
      Maailman menoa
      3
      1739
    6. "UKRAINA HYÖKKÄÄ LATVIAN ÖLJYVARASTOON JA JUNAAN"!!!

      "MATKUSTAJAJUNA SAI UKRAINALAISLENNOKEISTA VAKAVIA VAURIOITA"!!!
      Maailman menoa
      59
      1454
    7. Hilma Hallo-ahon kuvat julki - kiistää SSK ryhmän nimen merkityksen

      Eduskunnan puhemies Jussi Halla-ahon tyttären ympärille on noussut skandaali. Lehdistö sai selville Hilma Hallo-ahon kuu
      Perussuomalaiset
      205
      1440
    8. Miten kestätte tyhmiä?

      Miten usein turhaudutte tai suututte ihmisiin, joilla on matala älykkyys? Minulla tätä tapahtuu useita kertoja viikossa
      Sinkut
      226
      1183
    9. Sofia Belorf rehellisenä suhteen alusta Jeff-miljonäärirakkaaseen: "Hän ei..."

      Sofia Belórfin elämä on tapetilla Sofia Bling Bling Dubai -realityssä. Näyttävien puitteiden rinnalla Belórf avaa elämää
      Kotimaiset julkkisjuorut
      93
      1148
    10. Äänestän seuraavissa eduskuntavaaleissa persuja.

      Persut on ainoa puolue, joka aidosti vastustaa islamisaatiota Suomessa.
      Maailman menoa
      370
      1083
    Aihe