Se le dará una secuencia de solicitudes de memoria y un tamaño de caché. Debe devolver el menor número posible de errores de caché bajo cualquier estrategia de reemplazo de caché.
Una estrategia óptima es el algoritmo de Belady , que puede usar si lo desea.
Un sistema de almacenamiento en caché funciona de la siguiente manera: el caché comienza vacío. Las solicitudes de memoria entran. Si la solicitud solicita un dato en la memoria caché, todo está bien. De lo contrario, incurrirá en una pérdida de caché. En este punto, puede insertar los datos que se solicitaron en la memoria caché para su uso futuro. Si el caché estaba lleno y desea insertar nuevos datos, debe desalojar los datos que estaban previamente en el caché. Nunca puede insertar datos que no estén solo en la memoria caché.
Su objetivo es encontrar el número mínimo posible de errores de caché para una secuencia de solicitud de memoria y un tamaño de caché determinados.
Se le dará el tamaño de caché, un entero positivo y la secuencia de solicitud de memoria, que es una lista de tokens. Estos tokens pueden ser cualquier tipo de tokens que desee, siempre que sean posibles al menos 256 tokens diferentes (los bytes están bien, los bools no). Por ejemplo, ints, strings, lists están bien. Solicite aclaraciones si es necesario.
Casos de prueba:
3
[5, 0, 1, 2, 0, 3, 1, 2, 5, 2]
6
Vea wikipedia para una política de reemplazo que logre esto.
2
[0, 1, 2, 0, 1, 0, 1]
3
Simplemente evite agregar 2
al caché.
3
[0, 1, 2, 1, 4, 3, 1, 0, 2, 3, 4, 5, 0, 2, 3, 4]
9
Una forma de lograr esto es por no desalojar 0
y 2
, desalojando y 1
tan pronto como sea posible después de su último uso.
Puntuación: Este es el código de golf. Pocos bytes ganan.
fuente
Respuestas:
JavaScript (ES6), 128 bytes
Toma entrada como
(size)(list)
.Pruébalo en línea!
Comentado
Esta es una implementación del algoritmo de Belady.
fuente
Perl 5 , 193 bytes
Pruébalo en línea!
193 bytes sin sangría, líneas nuevas, espacios, comentarios:
fuente
05AB1E , 20 bytes
Pruébalo en línea!
fuente
Haskell , 82 bytes
Pruébalo en línea!
Explicación
Funciona por fuerza bruta: se prueban todas las estrategias de caché y se devuelve el mejor resultado.
fuente
Perl 6 , 146 bytes
Pruébalo en línea!
fuente