এই চ্যালেঞ্জটি সত্যই সহজ (এবং আরও বেশি কঠিন সমস্যার পূর্ববর্তী!)।
রিসোর্স অ্যাক্সেসের একটি অ্যারে দেওয়া হয়েছে (কেবলমাত্র অণুগঠিত পূর্ণসংখ্যার দ্বারা চিহ্নিত করা হয়েছে) এবং একটি প্যারামিটার n, আমাদের ক্যাশে ক্ষমতা আছে ধরে নিয়েছে এবং যে ক্যাশে মিস করেছে তার সংখ্যাটি ফিরিয়ে দিন nএবং পূর্ণ হলে এটি ফার্স্ট-ইন-ফার্স্ট-আউট (ফিফো) ইজেকশন স্কিম ব্যবহার করে ।
উদাহরণ:
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]
সুতরাং এই উদাহরণে 9 টি মিস হয়েছে। হতে পারে একটি কোড উদাহরণ এটি আরও ভালভাবে ব্যাখ্যা করতে সহায়তা করে। পাইথনে:
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
আরও কিছু টেস্টকেস (এতে পরবর্তী চ্যালেঞ্জের দিকে ইঙ্গিত রয়েছে - কিছু কৌতূহল লক্ষ্য করুন?):
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
বাইটস মধ্যে সংক্ষিপ্ত কোড।


notice anything curious?এখন কিছুক্ষণের জন্য শেষ বিবৃতিটির দিকে চেয়ে ছিলাম ... এবং কেবল লক্ষ্য করেছি, ক্যাশে ক্ষমতা বাড়ানো অগত্যা মিসের সংখ্যা হ্রাস করে না ?!