A Guessing Game

În perioada 11 mai – 1 iunie 2020 se desfășoară concursul online A Guessing Game.
Participanții vor crea un program care este bun la jocul “A Guessing Game” (Odd-and-Even or Matching Pennies).
Detalii despre înscriere, platforma de concurs, regulament găsiți aici.

All you know about luck for certain is that it’s bound to change.” – Bret Harte, “The Outcasts of Poker Flat” in The Luck of Roaring Camp and Other Stories

https://www.targulcartii.ro/bret-harte/surghiunitii-din-poker-flat-pentru-literatura-universala-1965-301049

Scopul jocului A Guessing Game (Par-Impar sau matching pennies) este să ghicești ce va juca adversarul tău. Să acceptam că noi (atât fiecare dintre noi atunci când vom juca pe server cu varianta propusă, cât și programul pe care îl concepem tot noi) suntem jucatorul j1, iar adversarul nostru este jucatorul j2 , cel impotriva căruia jucăm.

Mergând pe varianta de joc de la matching pennies, fiecare jucător alege una dintre fețele unei monede: H=Head sau T=Tail. Dacă cei doi jucători au ales aceeași față, atunci jucătorul 1 caștigă runda respectivă. În caz contrar, dacă fețele sunt diferite, el pierde și cîștigă al doilea jucător. Definim o variabilă binară w(win) care ia valoarea 1 dacă j1 a câștigat și ia valoarea 0 dacă j2 este cel care a câștigat.

După prima rundă urmează o alta și tot așa până se termină jocul (adică după N runde unde N se stabilește de la început). După prima rundă, în funcție de ce s-a intamplat, sau dupa un plan stabilit anterior alegem din nou dacă să jucăm H sau T. Mai exact, în sensul descris de Edgar Allan Poe în nuvela sa Scrisoarea furată (The Purloined Letter) unde băiețelul care câștiga mereu la jocul Cu soț ori fără analiza dacă adversarul va alege să schimbe sau să joace la fel ca data precedentă, alegem dacă jucăm la fel (variabila binară c=change ia valoarea 0) sau daca schimbăm opțiunea anterioară (c va lua valoarea 1).

Încet, încet, sau „pas cu pas” se construiește un istoric al jocului. Să presupunem că am ajuns la runda t și urmează să alegem ce jucăm.

ai este alegerea jucătorului j1 (adica noi) în runda i, ai∈{H,T}.

bi∈{H,T} este alegerea jucătorului j2 (adversarul nostru) in runda i.

Variabila de schimbare c este definită doar pentru ceea ce jucăm noi și în consecință:

De exemplu, să presupunem că un joc a evoluat conform tabelului următor și am ajuns la runda 15:

Scorul reprezintă câștigul total, adică diferența dintre numărul total de victorii de rundă și numărul total de înfrângeri; în exemplul acesta este -1 (minus 1).

Se observă că la orice moment de timp (adică la orice rundă) imediat ce am stabilit că schimbăm sau nu, alegerea este deja făcută, căci adversarul alege sincron cu noi și deci și victoria w este determinată. Totuși, decizia noastră o luăm pentru runda următoare, după ce am aflat rezultatul rundei precedente (evident că pot exista jucători care să joace după un plan anterior stabilit care să nu depindă de alegerile adversarului și nici de rezultatul rundelor anterioare, dar nu consider că e neaparat o atitudine rațională și în consecință nu îmi propun să realizez un program care să acționeze astfel).

De aceea subliniez că decizia asupra schimbării, adică alegerea valorii lui ci, este ulterioară aflării rezultatului rundei precedente și de aceea prefer să vizualizez tabelul anterior sub forma:

În concluzie, istoria jocului va fi formată dintr-un șir binar
{a0,b0,a1,b1,…,ai,bi,…,at-1,bt-1}, sau din șirul binar echivalent
{w0,c1,w1,…,ci,wi,…,ct-1,wt-1}, dar care trebuie să fie inițializat cu condiția inițiala a0. Prefer această variantă și ea corespunde unui șir binar format din simboluri xi∈{1,0}, așadar din alfabetul binar ∑={1,0}. Varianta anterioară a istoriei era tot un șir binar, dar din alfabetul ∑={H,T}, dar nu evidenția decizia de schimbare. Pentru că suntem aici, am putea memora istoria ca șir al perechilor (ai, bi),  iar șirul ar fi cu elemente aparținând unul alfabet cu 4 simboluri.

Pentru a putea avea date experimentale pe care să antrenăm modelele, vă sugerez să vă conectați la adresa următoare, să vă faceți un cont folosind o adresă validă de email și să alegeți să jucați o partidă de 200 de runde. Să jucați cât mai serios, adică să încercați să ghiciți ce va juca adversarul program și să câștigați.

http://193.226.29.27/GuessingGame