Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

HW 4.2 chiarimento funzione strategia_vincente

D
Domenicobrz (1470 points)
3 9 19
in Es2 by (1.5k points)
closed by

Nota che un giocatore ha una strategia vincente rispetto ad una certa configurazione se,
qualunque siano le mosse dell'avversario ha sempre la possibilita' di rispondere in modo
che la partita termini con la sua vittoria.

Il test numero 5 del grader chiama la funzione strategia_vincente(...) sull'albero rappresentato dall'immagine albero_di_gioco.png, e ritorna False per il giocatore 'x' e True per il giocatore 'o'

Se 'o' avesse una strategia vincente sulla configurazione rappresentata da albero_di_gioco.png, qualunque mossa fatta dall'avversario darebbe comunque ad 'o' una possibilità di vincere

Ma nella configurazione centrale, qualunque mossa del giocatore 'x' fa vincere 'x'

Se invece per strategia vincente si intende una configurazione di questo tipo:

o - o

- x x

o o x

In questo caso qualunque mossa fatta dal giocatore 'x' farebbe vincere 'o', ma questo non si verifica mai in albero_di_gioco.png

Ho frainteso percaso il significato di strategia vincente? Cosa intende la consegna considerando che sulla configurazione rappresentata su albero_di_gioco.png il risultato dev'essere False per 'x' e True per 'o' ?

691 views
closed with the note: answered

1 Answer

Best answer
by (9.9k points)
edited by
Nell'immagine allegata 'O' ha la strategia vincente perché nel suo turno può vincere la partita, quindi l'avversario neanche ha tempo di rispondere. Invece se conti per 'X' non c'è strategia vincente, ossia non riesce ad arrivare ai nodi più in basso, perché in mezzo 'O' riesce a vincere (ossia prima che 'X' riesca a vincere, avviene la vittoria di 'O').
by (9.9k points)
@Domenicobrz ti funziona anche andando di bruteforce? A questo punto non converebbe implementare un algoritmo tipo il minimax per stabilire la strategia vincente?
cerealKiller (2900 points)
4 10 18
by (2.9k points)
Alla fine sono riuscito a passarlo quel test...
Vi consiglio di rileggervi bene la nota, voi dovete controllare se il giocatere vince utilizzando delle mosse che al turno seguente gli permettano di vincere, non dovete calcolarvi qualsiasi combinazione.

L'intuizione penso sia controllare che la mossa del giocatore metta in sequenza due cerchi con uno vuoto a seguire,
facendo attenzione alle combinazioni di vittoria sicura.
Per quanto rigurarda il giocatore 'x' quello che bisogna controllare e se riesce a difendersi e a minacciare vittoria al turno
seguente.
j
j.criacci (400 points)
3 6 11
by (400 points)
l' idea che mi verrebbe in mente e' controllare a che livello sta la prima vittoria che si trova per ciascun giocatore a partire da una qualsiasi configurazione e se una vittoria sta ad un livello minore significa che e' vincente
G
GiovanniQuadraroli (1230 points)
10 28 38
by (1.2k points)
@cerealKiller scusami più provo a rileggere più non riesco a capire ciò che hai scritto potresti spiegarti meglio?
cerealKiller (2900 points)
4 10 18
by (2.9k points)
@j.criacci  cosi' sbagli perche' non devi vedere tutte le possibili combinazioni ma quelle sensate, leggiti la discussione
http://q2a.di.uniroma1.it/3641/non-capisco-la-richiesta-della-strategia-vincente
@GiovanniQuadraroli non chiedermi di riscrivere tutto fammi delle domande