Tris, anagrammi e dintorni Giocando a tris 1 mi sono sempre chiesto quale fosse la probabilità di vincere la partita iniziando per primo. È in effetti indubbio che le probabilità di riuscita siano superiori: il primo giocatore ha a disposizione 5 mosse mentre il secondo,, ne ha solo 4. Verrebbe da pensare allora che il rapporto a favore di sia di 5 a 4. In realtà non è così. Sappiamo infatti che esistono numerose partite che si concludono in pareggio: è quasi impossibile formulare in maniera semplice una teoria probabilistica a riguardo. È nata allora l idea di riuscire a contare tutte le partite in cui vinca o o nessuno dei due. Modello matematico Possiamo indicare la tabellina delle nove caselle numerandole da 1 a 9 nel seguente modo: 1 2 3 4 5 6 7 8 9 Ebbene iniziando il giocatore, ogni partita diventa una sequenza di nove cifre diverse dove il primo numero è la casella scelta da, il secondo è la casella scelta da e così via fino alla nona. d esempio la sequenza 153286479 Corrisponde alla sequenza delle mosse che finisce in pareggio. Tutte le partite possibili sono allora numerabili come le sequenze di 9 cifre che sono in totale 9!=9*8*7*6*5*4*3*2=362 88 Tutto sommato nemmeno tantissime: il giocatore potrà vincere non prima della quinta mossa mentre non prima della sesta. Ho implementato in Visual asic per Excel le funzioni necessarie, cominciando dii vettori di deposito Dim partite(1 To 36, 2) Dim contatore Const giocatori = rray("", "") Dim livello 1 Il famoso gioco perditempo dove vince chi riesce a realizzare una terna di simboli uguali in una matrice 3 per 3 in orizzontale, verticale o diagonale
La prossima funzione restituisce il giocatore vincitore rispetto alla partita assegnata Function vince(partita, giocatore) Dim tabella(2, 2) For i = 1 To Len(partita) c = Val(Mid(partita, i, 1)) tabella((c - 1) \ 3, (c - 1) Mod 3) = giocatori((i + 1) Mod 2) righe For j = To 2 v = v nd tabella(i, j) = giocatore Next j COLONNE For j = To 2 v = v nd tabella(j, i) = giocatore Next j diagonali v = v nd tabella(i, i) = giocatore v = v nd tabella(i, 2 - i) = giocatore Else vince = "ness" End Function La prossima function invece determina quale dei due giocatori abbia vinto la partita e a quale mossa, registrata nella variabile globale di nome livello Function vincec(partita)
finito = False j = 1 While Not finito nd j < 6 part = Mid(partita, 1, 4 + j) giocat = giocatori((j - 1) Mod 2) If vince(part, giocat) = giocat Then vincec = giocat livello = 4 + j finito = True inc j Wend If Not finito Then vincec = "nessuno" livello = 9 End Function Implementiamo lo sviluppo degli anagrammi della stringa 123456789 e il relativo deposito dei risultati nell apposito vettore globale: Sub anagrammi(parola, Optional primaparte = "") n = Len(parola) If n = 1 Then inc contatore partita = primaparte + parola chi_vince = vincec(partita) deposito la partita, chi l ha vinta e a quale livello nel vettore partite(contatore, ) = partita partite(contatore, 1) = chi_vince partite(contatore, 2) = livello Else For m = 1 To n anagrammi _ Mid(parola, 1, m - 1) + _ Mid(parola, m + 1, n - m), _ primaparte + Mid(parola, m, 1) Next m End Sub E ora via con Sub vai() contatore = righe = rigae = 1 inizio = Timer pplication.screenupdating = False anagrammi "123456789" fine = Timer pplication.screenupdating = True NLISI DEI DTI End Sub Risultati Sapendo che nel vettore partite sono contenuti i dati delle partite giocate e dei giocatori vincenti o meno, si possono analizzare le partite e tabulare graficamente i seguenti risultati:
chi vince 3456 9594 81792 212256 31968 72576 14544 nessuno 468 468 e in percentuale 1% 26% 23% 58% 9% 2% 29% nessuno 13% 13% Si vede chiaramente che può vicere alla quinta mossa 3456 volte mentre deve aspettare la sesta con 31968 possibilità: va da sé che risulta più avvantaggiato. Inoltre, a parità di vittorie per, qual è la mossa iniziale migliore? 7 6 576 5 4 3 2 1 Si evince dall istogramma che la scelta della casella centrale (la numero 5) si rivela molto favorevole ad una rapida conclusione della partita. E per? 45 4 35 3 25 2 15 1 5 432 432 432 432 3312 3312 3312 3312 2592 Potendo partire dalla seconda mossa, è indifferente partire dalla 2,4,6,8, posizioni simmetriche rispetto alla casella centrale. Risulta assolutamente sconsigliabile partire dal centro (se libero) a meno che sia piuttosto sprovveduto (non è infatti impossibile vincere: ci sono 2592 possibilità)
E i pareggi? 6 5 4 3 2 1 La dipendenza del pareggio rispetto alla scelta della prima cella è piuttosto evanescente: è leggermente più difficile (ma non impossibile) pareggiare partendo dalla casella centrale. Conclusioni Se mai fosse il caso di trarre conclusioni posso affermare che: 1. è bene che tutte le coppie di giocatori si alternino nel partire per primi: una buona pratica che rende loro giustizia, in barba a tutte le statistiche 2. predefinire percorsi vincenti è possibile ma toglierebbe il gusto e il fascino del gioco, rendendolo di fatto inutile più di quanto non lo sia già 3. posso dimostrare ai miei sfidanti che la scelta parte per primo chi ha vinto la partita precedente è discriminante per chi, disgraziatamente perde una partita. uguro a tutti partite serene e rilassanti, invidiando un poco il vostro tempo libero che vi permette di farlo.