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.

(HW4.2) Memorizzare esiti per aumentare efficienza

1
1803699 (800 points)
2 5 16
in Es2 by (800 points)
Il mio programma perde una miriade di tempo nei test con le griglie vuote perché ricalcola più volte le stesse configurazioni a cui arrivo da antenati diversi (esempio: ['o','o','x']['','','']['','',''] può essere raggiunta in due modi diversi a seconda da quale 'o' viene messa alla prima mossa e quale alla terza). So di dover implementare un sistema di memorizzazione in qualche modo per evitare di fargli calcolare di nuovo esiti che ha già calcolato, ma non ho idea sul come implementare tale sistema di memorizzazione. Qualcuno può indirizzarmi alla risposta?
521 views
closed

1 Answer

Best answer
m
mirko (1920 points)
3 12 19
by (1.9k points)
selected by
Puoi usare un dizionario in cui la chiave è una configurazione (cioè, il 'nome' di un NodoTris) e il valore è il risultato per quel sottoalbero. In questo modo, prima di processare un nodo, puoi controllare nel dizionario se ne hai già calcolato la soluzione.

Edit: probabilmente non ti fa usare direttamente la lista di liste come chiave, quindi trasformatela in una stringa
andrea.sterbini (208020 points)
756 1270 2377
by (208k points)
oppure una tupla
1
1803699 (800 points)
2 5 16
by (800 points)
Sì sono riuscito eventualmente a risolvere con quel metodo usando tuple anche prima della tua risposta. Grazie comunque!