आपको मेमोरी अनुरोध और कैश आकार का एक क्रम दिया जाएगा। आपको किसी भी कैश रिप्लेसमेंट रणनीति के तहत कैश की कम से कम संभावित संख्या को वापस करना होगा।
एक इष्टतम रणनीति बेलड़ी का एल्गोरिदम है , जिसे आप चाहें तो उपयोग कर सकते हैं।
एक कैशिंग सिस्टम निम्नानुसार काम करता है: कैश खाली होना शुरू होता है। मेमोरी अनुरोध अंदर आते हैं। यदि अनुरोध कैश में डेटा का एक टुकड़ा मांगता है, तो सब ठीक है। यदि नहीं, तो आप कैची मिस करते हैं। इस बिंदु पर आप उस डेटा को सम्मिलित कर सकते हैं जो भविष्य में उपयोग के लिए कैश में अनुरोध किया गया था। यदि कैश भरा हुआ था और आप नया डेटा सम्मिलित करना चाहते हैं, तो आपको वह डेटा निकालना होगा जो पहले कैश में था। आप वह डेटा कभी नहीं डाल सकते जो सिर्फ कैश में नहीं था।
आपका लक्ष्य किसी दिए गए मेमोरी रिक्वेस्ट सीक्वेंस और कैश साइज के लिए कैश मिसेज की न्यूनतम संभावित संख्या का पता लगाना है।
आपको कैश आकार, एक सकारात्मक पूर्णांक, और मेमोरी अनुरोध अनुक्रम दिया जाएगा, जो टोकन की एक सूची है। ये टोकन आप जिस भी प्रकार के टोकन को पसंद कर सकते हैं, जब तक कम से कम 256 अलग-अलग टोकन संभव हैं (बाइट्स ठीक हैं, बूल नहीं हैं)। उदाहरण के लिए, इन्टस, स्ट्रिंग्स, लिस्ट सभी ठीक हैं। जरूरत पड़ने पर स्पष्टीकरण मांगें।
परीक्षण के मामलों:
3
[5, 0, 1, 2, 0, 3, 1, 2, 5, 2]
6
एक प्रतिस्थापन नीति के लिए विकिपीडिया देखें जो इसे प्राप्त करता है।
2
[0, 1, 2, 0, 1, 0, 1]
3
बस 2कैश को जोड़ने से बचें ।
3
[0, 1, 2, 1, 4, 3, 1, 0, 2, 3, 4, 5, 0, 2, 3, 4]
9
एक तरह से इस लक्ष्य को हासिल करने के लिए कभी नहीं हटाना उतना कर रहा है 0और 2, और हटाना उतना 1अपने पिछले उपयोग के बाद जितनी जल्दी हो सके।
स्कोरिंग: यह कोड गोल्फ है। सबसे कम बाइट्स जीतता है।