पृष्ठभूमि
प्रोग्रामर इन दिनों अपने बफ़र्स को सीधा रखने के लिए प्रतीत नहीं कर सकते हैं! त्रुटि का एक सामान्य स्रोत एक सरणी सूचकांक का उपयोग करने की कोशिश कर रहा है जो बफर के लिए बहुत बड़ा है। आपका कार्य एक बफर को लागू करना है जहां बड़े सूचक एक आकार में कम हो जाते हैं जो बफर को संभाल सकता है। क्योंकि मैं यह तय करता हूं कि सभी के लिए सबसे अच्छा क्या है, आप इस बफर को मेरे सटीक विनिर्देशों पर लागू करेंगे।
अवलोकन
आपके पास एक सम्मिलित-केवल बफ़र है जो आकार में बढ़ता है क्योंकि इसमें तत्व जोड़े जाते हैं। बफर शून्य अनुक्रमित, और भी अनुक्रमित है सापेक्ष अपने वर्तमान आकार। इस चुनौती के लिए विशेष नियम यह है:
- इंडेक्स पर एक आइटम डालने के लिए i का अर्थ है j की गणना करना ,
j = i % buffer.length()और सूची में jth आइटम के बाद नया आइटम डालना ।
केवल विशेष मामला है अगर बफर खाली है, जैसा कि अंकगणितीय मोडुलो शून्य काम नहीं करता है। इस प्रकार, यदि बफर वर्तमान में खाली है, तो नया आइटम इंडेक्स 0 होगा ।
यदि बफ़र में केवल एक आइटम है, तो आप हमेशा 0 आइटम के बाद सम्मिलित कर रहे हैं । यह सामान्य मामले का सिर्फ एक उदाहरण है।
यदि बफ़र में 6 आइटम होते हैं: [4, 9, 14, 8, 5, 2]और आपको 10इंडेक्स 15 पर एक नया आइटम सम्मिलित करने के लिए कहा जाता है , तो आप पाते हैं कि 15 % 6 == 3, और फिर इंडेक्स 3 के10 बाद नया डालें जो एक परिणामी बफर देता है 8[4, 9, 14, 8, 10, 5, 2]
संकट
एक फ़ंक्शन या प्रोग्राम लिखें जो पॉजिटिव पूर्णांकों की एक आदेशित सूची में लेता है, और पॉजिटिव पूर्णांक सूचकांकों को जिस पर उन्हें सम्मिलित करना है।
एक खाली बफर के साथ शुरू करें, और संबंधित सूचकांकों को बफर में निर्दिष्ट पूर्णांक जोड़ें।
सभी निर्दिष्ट सम्मिलन के बाद बफर में हैं पूर्णांक की आदेशित सूची को आउटपुट करें।
यह एक कोड-गोल्फ चुनौती है, इसलिए सबसे छोटा कोड जीतता है।
इनपुट दिशानिर्देश
आप इनपुट सूचियों को ले सकते हैं, हालांकि आप फिट दिखते हैं। उदाहरण:
- जोड़े की सूची:
[ [1,1], [2,4], [3,9], [4,16], [5,25]...] - आइटम सूची और सूची सूची:
[1, 2, 3, 4, 5...], [1, 4, 9, 16, 25] - चपटा:
[1, 1, 2, 4, 3, 9, 4, 16, 5, 25 ...] - आदि।
आप मान सकते हैं कि इनपुट में हमेशा कम से कम एक आइटम और संबंधित सूचकांक होता है।
परीक्षण के मामलों
ऊपर से वर्ग मामला:
[(1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49), (8, 64)] -> [1, 2, 8, 7, 6, 5, 4, 3]
मैंने इन्हें अनियमित रूप से उत्पन्न किया:
[(11, 9), (13, 14)] -> [11, 13]
[(1, 18), (11, 7), (3, 35), (16, 22)] -> [1, 11, 16, 3]
[(3, 16), (16, 37), (0, 28), (18, 24)] -> [3, 18, 0, 16]
[(7, 26), (8, 20), (11, 39), (1, 23), (17, 27)] -> [7, 8, 11, 1, 17]
[(15, 35), (17, 7), (16, 15), (1, 13), (2, 6), (11, 34)] -> [15, 17, 1, 2, 16, 11]
[(2, 13), (1, 20), (16, 25), (8, 21), (5, 2), (16, 37), (3, 0)] -> [2, 3, 8, 1, 16, 5, 16]
[(6, 20), (15, 15), (12, 26), (10, 27), (17, 13), (7, 18), (4, 16)] -> [6, 10, 17, 12, 7, 4, 15]
[(18, 9), (5, 34), (15, 4), (12, 29), (2, 5), (7, 0), (7, 10), (16, 38)] -> [18, 7, 15, 2, 16, 5, 7, 12]
[(0, 12), (12, 0), (4, 16), (15, 12), (6, 28), (8, 10), (11, 24), (0, 25)] -> [0, 11, 8, 6, 15, 0, 4, 12]
[(6, 12), (14, 13), (10, 33), (11, 35), (1, 3), (0, 28), (15, 27), (8, 10), (1, 2)] -> [6, 14, 10, 1, 11, 8, 15, 0, 1]
[(2, 29), (19, 30), (18, 17), (13, 3), (0, 21), (19, 19), (11, 13), (12, 31), (3, 25)] -> [2, 13, 3, 11, 0, 12, 19, 18, 19]
पायथन 3 संदर्भ कार्यान्वयन
def f(inputs):
# `inputs` is a list of pairs
buff = []
for item, index in inputs:
if len(buff) == 0:
buff.insert(0, item)
else:
insert_after = index % len(buff)
buff.insert(insert_after+1, item)
return buff