Tantangan ini sangat sederhana (dan prekursor untuk tantangan yang lebih sulit!).
Diberikan array dari akses sumber daya (hanya dilambangkan dengan bilangan bulat tidak negatif) dan sebuah parameter n, kembalikan jumlah cache yang hilang dengan asumsi bahwa cache kita memiliki kapasitasn dan menggunakan skema ejeksi pertama-masuk-keluar-pertama (FIFO) saat penuh .
Contoh:
4, [0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 0, 1, 2, 3]
0 = not in cache (miss), insert, cache is now [0]
1 = not in cache (miss), insert, cache is now [0, 1]
2 = not in cache (miss), insert, cache is now [0, 1, 2]
3 = not in cache (miss), insert, cache is now [0, 1, 2, 3]
0 = in cache (hit), cache unchanged
1 = in cache (hit), cache unchanged
2 = in cache (hit), cache unchanged
3 = in cache (hit), cache unchanged
4 = not in cache (miss), insert and eject oldest, cache is now [1, 2, 3, 4]
0 = not in cache (miss), insert and eject oldest, cache is now [2, 3, 4, 0]
0 = in cache (hit), cache unchanged
1 = not in cache (miss), insert and eject oldest, cache is now [3, 4, 0, 1]
2 = not in cache (miss), insert and eject oldest, cache is now [4, 0, 1, 2]
3 = not in cache (miss), insert and eject oldest, cache is now [0, 1, 2, 3]
Jadi dalam contoh ini ada 9 kesalahan. Mungkin contoh kode membantu menjelaskannya dengan lebih baik. Dengan Python:
def num_misses(n, arr):
misses = 0
cache = []
for access in arr:
if access not in cache:
misses += 1
cache.append(access)
if len(cache) > n:
cache.pop(0)
return misses
Beberapa testcases lebih lanjut (yang berisi petunjuk tentang tantangan berikutnya - perhatikan ada yang penasaran?):
0, [] -> 0
0, [1, 2, 3, 4, 1, 2, 3, 4] -> 8
2, [0, 0, 0, 0, 0, 0, 0] -> 1
3, [3, 2, 1, 0, 3, 2, 4, 3, 2, 1, 0, 4] -> 9
4, [3, 2, 1, 0, 3, 2, 4, 3, 2, 1, 0, 4] -> 10
Kode terpendek dalam byte menang.


notice anything curious?untuk sementara waktu sekarang ... dan baru saja memperhatikan, meningkatkan kapasitas cache tidak selalu mengurangi jumlah kesalahan ?!