Ti verrà data una sequenza di richieste di memoria e una dimensione della cache. È necessario restituire il minor numero possibile di errori nella cache in qualsiasi strategia di sostituzione della cache.
Una strategia ottimale è l'algoritmo di Belady , che puoi usare se vuoi.
Un sistema di cache funziona come segue: la cache inizia vuota. Le richieste di memoria arrivano. Se la richiesta richiede un pezzo di dati nella cache, tutto va bene. In caso contrario, si verifica un errore nella cache. A questo punto è possibile inserire i dati richiesti nella cache per usi futuri. Se la cache era piena e si desidera inserire nuovi dati, è necessario eliminare i dati precedentemente presenti nella cache. Non puoi mai inserire dati che non erano solo nella cache.
Il tuo obiettivo è trovare il numero minimo possibile di errori cache per una determinata sequenza di richieste di memoria e dimensioni della cache.
Ti verranno fornite le dimensioni della cache, un numero intero positivo e la sequenza di richieste di memoria, che è un elenco di token. Questi token possono essere qualunque tipo di token ti piaccia, purché siano possibili almeno 256 token diversi (i byte vanno bene, i bool no). Ad esempio, ints, stringhe, liste vanno bene. Chiedere chiarimenti se necessario.
Casi test:
3
[5, 0, 1, 2, 0, 3, 1, 2, 5, 2]
6
Vedi Wikipedia per una politica di sostituzione che raggiunge questo obiettivo.
2
[0, 1, 2, 0, 1, 0, 1]
3
Evita semplicemente di aggiungere 2
alla cache.
3
[0, 1, 2, 1, 4, 3, 1, 0, 2, 3, 4, 5, 0, 2, 3, 4]
9
Un modo per raggiungere questo obiettivo è mai sfrattando 0
e 2
, e sfrattando 1
il più presto possibile dopo la sua ultima uso.
Punteggio: questo è il codice golf. Vince il minor numero di byte.