A Guessing Game

May 11, 2020

A Guessing Game

online

Regulament

Scopul concursului “A Guessing Game” este de a crea un program care este bun la jocul “A Guessing Game” (Odd-and-Even or Matching Pennies).

Puțin context:

“A Guessing Game” este un joc cu doi participanți. Fiecare din cei doi are la dispoziție o monedă. Fiecare alege (fără ca celălalt să vadă) o parte a monedei (moneda poate fi ținută în pumn). După ce au ales, ambii participanți arată monedele. Ca să câștige o rundă, primul dintre cei doi trebuie să aibă moneda pe aceeași parte ca celălalt (ban-ban sau stemă-stemă). Respectiv, ca să câștige, al doilea trebuie să aibă moneda pe cealaltă parte (ban-stemă sau stemă-ban). Jocul se desfășoară pe mai multe runde (număr stabilit de la început). La finalul rundelor, câștigă cel cu cele mai multe puncte.

Ca să devii bun la acest joc, trebuie să ghicești mișcarea adversarului. Claude Shannon (supranumit și “părintele informației”) a intuit că oamenii nu sunt foarte buni la acest joc și a demonstrat asta implementând câteva “mașini” pe care le-a numit “mind readers”. Și noi vrem să construim un mind reader.
Pentru a juca defensiv este suficient să joci random. Dar scopul jocului nu este acela de a juca random. Ca atare, punctajul este de gândit pentru a descuraja jocul doar aleator.

Punctajul în joc:

Partidele durează 200 de mutări (alegeri).
– La scor egal 100-100 ambii jucători primesc 0 puncte (adică nu primesc nimic) pentru acea partidă.
– La un scor cuprins între 101-99 și 107-93 (foarte probabil dacă unul dintre ei joacă la întamplare) câștigătorul primește +1, iar învinsul -1 (minus 1)
– La un scor cuprins între 108-92 și 115-85 (puțin probabil dacă unul dintre ei joacă la întamplare) câștigătorul primește +2, iar învinsul  -2 (minus 2)
– La un scor cuprins între 116-84 și 130-70 câștigătorul primește +4, iar învinsul -4 (minus 4)
– La un scor mai mare decat 131-69 câștigătorul primește +5, iar învinsul -5 (minus 5)

De asemenea, secvențele lungi de victorii (win=ghiciri) consecutive din fiecare partidă participă la un clasament.

Se vor acorda următoarele bonusuri pentru aceste secvențe:
– cea mai lungă secvență +10 puncte (daca avem peste 10 competitori, daca nu, atunci +5)
– a doua secvență +5 puncte (daca avem peste 10 competitori, daca nu, atunci +3)
– a treia secvență +3 puncte (daca avem peste 10 competitori, daca nu, atunci +1)
– a patra secvență +2 puncte (daca avem peste 10 competitori, daca nu, atunci +1)
– a cincea secvență +1 punct

Ce trebuie făcut:

În programul “platformă” primit (sau pe care-l puteți descărca de aici) trebuie să implementați un predictor. Căutați clasa “MyName” (fișierul MyName.cs) din proiectul “Predictors“. Redenumiți clasa (și fișierul) cu numele vostru. Apoi, puteți începe să programați. Nu trebuie să modificați altceva decât conținutul acestui fișier. Scopul unui predictor este să ghicească ce va face adversarul (ca și când ar fi mereu primul jucător). Chiar dacă joacă pe poziția a doua (cel care trebuie sa zică ceva diferit), framework-ul va inversa automat predicția înainte să calculeze scorul. Astfel, nu contează pe ce parte nimerește în concurs un predictor.

Dacă compilați și apoi rulați programul, veți vedea rezultatul unui concurs cu predictorii existenți local. În competiția finală, predictorul vostru va concura împotriva tuturor predictorilor celorlați participanți.
Pentru ceilalți predictori locali, aveți codul sursă tot în proiectul “Predictors”.

Pentru a fi înscris în competiție trebuie să trimiteți doar fișierul .cs cu predictorul implementat.

 

Juriu: Prof. dr. ing. Volovici Daniel, Conf. dr. ing. Breazu Macarie, Sef lucr. dr. inf. Pitic Antoniu, as. drd. ing. Alexandru Dorobantiu.

 

Alte observații:

Pentru a putea compila proiectul, e necesar Visual Studio 2019.

Pentru numere pseudo-aleatoare trebuie să alegeți un seed fix. Asta garantează repetabilitatea jocului.
Programele nu pot folosi resurse externe.

Programele pot fi descalificate la alegerea juriului.

Rezolvarile se pot trimite pe adresa: [email protected]ro

 

Pentru mai multe întrebări legate de funcționarea platformei de concurs, trimiteți un e-mail la adresa: [email protected]ro

 

UPDATE: Din cauza situatiei speciale in care ne aflam, deadline ul evenimentului se muta pe data de 15 septembrie.

Good luck!