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