Anda akan diberikan urutan permintaan memori dan ukuran cache. Anda harus mengembalikan jumlah cache yang sesedikit mungkin dalam strategi penggantian cache apa pun.
Strategi optimal adalah algoritma Belady , yang dapat Anda gunakan jika Anda mau.
Sistem caching berfungsi sebagai berikut: Cache mulai kosong. Permintaan memori masuk. Jika permintaan meminta sepotong data dalam cache, semuanya baik-baik saja. Jika tidak, Anda mengalami kesalahan cache. Pada titik ini Anda dapat memasukkan data yang diminta ke dalam cache untuk digunakan di masa mendatang. Jika cache penuh dan Anda ingin memasukkan data baru, Anda harus mengusir data yang sebelumnya di cache. Anda mungkin tidak pernah memasukkan data yang bukan hanya di cache.
Tujuan Anda adalah untuk menemukan jumlah cache minimum yang mungkin untuk urutan permintaan memori dan ukuran cache yang diberikan.
Anda akan diberi ukuran cache, integer positif, dan urutan permintaan memori, yang merupakan daftar token. Token ini dapat berupa jenis token apa pun yang Anda suka, selama setidaknya 256 token yang berbeda dimungkinkan (byte baik-baik saja, bools tidak). Misalnya, int, string, daftar semuanya baik-baik saja. Minta klarifikasi jika perlu.
Kasus uji:
3
[5, 0, 1, 2, 0, 3, 1, 2, 5, 2]
6
Lihat wikipedia untuk kebijakan penggantian yang mencapainya.
2
[0, 1, 2, 0, 1, 0, 1]
3
Cukup hindari menambahkan 2
ke cache.
3
[0, 1, 2, 1, 4, 3, 1, 0, 2, 3, 4, 5, 0, 2, 3, 4]
9
Salah satu cara untuk mencapai ini adalah dengan tidak pernah mengusir 0
dan 2
, dan mengusir 1
sesegera mungkin setelah penggunaan terakhir.
Penilaian: Ini adalah kode golf. Bytes paling sedikit menang.
sumber
Jawaban:
JavaScript (ES6), 128 byte
Mengambil input sebagai
(size)(list)
.Cobalah online!
Berkomentar
Ini adalah implementasi dari algoritma Belady.
sumber
Perl 5 , 193 byte
Cobalah online!
193 byte tanpa lekukan, baris baru, spasi, komentar:
sumber
05AB1E , 20 byte
Cobalah online!
sumber
Haskell , 82 byte
Cobalah online!
Penjelasan
Bekerja dengan brute force: semua strategi cache dicoba dan hasil terbaik dikembalikan.
sumber
Perl 6 , 146 byte
Cobalah online!
sumber