Você receberá uma sequência de solicitações de memória e um tamanho de cache. Você deve retornar o menor número possível de falhas de cache em qualquer estratégia de substituição de cache.
Uma estratégia ideal é o algoritmo de Belady , que você pode usar se quiser.
Um sistema de armazenamento em cache funciona da seguinte maneira: O cache começa vazio. Pedidos de memória são recebidos. Se o pedido solicitar alguns dados no cache, tudo estará bem. Caso contrário, ocorrerá uma falta de cache. Nesse ponto, você pode inserir os dados solicitados no cache para uso futuro. Se o cache estava cheio e você deseja inserir novos dados, você deve remover os dados que estavam anteriormente no cache. Você nunca pode inserir dados que não estavam apenas no cache.
Seu objetivo é encontrar o número mínimo possível de falhas de cache para uma determinada sequência de solicitação de memória e tamanho de cache.
Você receberá o tamanho do cache, um número inteiro positivo e a sequência de solicitação de memória, que é uma lista de tokens. Esses tokens podem ser qualquer tipo de tokens que você quiser, desde que sejam possíveis pelo menos 256 tokens diferentes (bytes são bons, bools não). Por exemplo, ints, strings, lists estão bem. Peça esclarecimentos, se necessário.
Casos de teste:
3
[5, 0, 1, 2, 0, 3, 1, 2, 5, 2]
6
Consulte a Wikipedia para obter uma política de substituição que atinja isso.
2
[0, 1, 2, 0, 1, 0, 1]
3
Simplesmente evite adicionar 2
ao cache.
3
[0, 1, 2, 1, 4, 3, 1, 0, 2, 3, 4, 5, 0, 2, 3, 4]
9
Uma maneira de conseguir isso é através da não expulsão 0
e 2
, e expulsar 1
o mais rapidamente possível após a sua última utilização.
Pontuação: Este é o código de golfe. Menos bytes ganha.