মনে করুন আমাদের অ্যারেতে কিছু অবস্থানের দিকে নির্দেশিত পয়েন্টার সহ দৈর্ঘ্য এর একটি অ্যারে রয়েছে : " পয়েন্টার জাম্পিং " প্রক্রিয়াটি প্রতিটি পয়েন্টারটিকে পয়েন্টারটি নির্দেশ করে সেই অবস্থানের দিকে সেট করবে।
এই চ্যালেঞ্জের উদ্দেশ্যে একটি পয়েন্টার হ'ল অ্যারের উপাদানের (শূন্য-ভিত্তিক) সূচক, এটি সূচিত করে যে অ্যারের প্রতিটি উপাদান সমান বা সমান এবং চেয়ে কম হবে । এই স্বরলিপিটি ব্যবহার করে প্রক্রিয়াটি নীচে হিসাবে তৈরি করা যেতে পারে:
for i = 0..(n-1) {
ps[i] = ps[ps[i]]
}
এর অর্থ (এই চ্যালেঞ্জের জন্য) যে পয়েন্টারগুলি যথাক্রমে ক্রমে (যেমন, নিম্ন সূচকগুলি প্রথমে) আপডেট করা হয়।
উদাহরণ
আসুন একটি উদাহরণ দিয়ে কাজ করুন, :
সুতরাং " পয়েন্টার জাম্পিং " এর এক পুনরাবৃত্তির পরে আমরা অ্যারে [4,1,3,1,1,3] পাই ।
চ্যালেঞ্জ
সূচকগুলি আউটপুট সহ একটি অ্যারে দেওয়া উপরের বর্ণিত পয়েন্টার জাম্পিং পুনরাবৃত্তি করে অ্যারেটি প্রাপ্ত করা হবে যতক্ষণ না অ্যারে আর পরিবর্তন হয় না।
বিধি
আপনার প্রোগ্রাম / ফাংশন একই ধরণের, একটি তালিকা / ভেক্টর / অ্যারে ইত্যাদি গ্রহণ করবে এবং ফেরত দেবে
- খালি খালি থাকার গ্যারান্টিযুক্ত এবং
- কেবলমাত্র এন্ট্রি রাখার গ্যারান্টিযুক্ত ।
বৈকল্পিক: আপনি চয়ন করতে পারেন
- 1-ভিত্তিক সূচক বা ব্যবহার করতে
- প্রকৃত পয়েন্টার ব্যবহার করুন,
তবে আপনার জমা দেওয়ার ক্ষেত্রে এটি উল্লেখ করা উচিত।
পরীক্ষার মামলা
[0] → [0]
[1,0] → [0,0]
[1,2,3,4,0] → [2,2,2,2,2]
[0,1,1,1,0,3] → [0,1,1,1,0,1]
[4,1,3,0,3,2] → [3,1,3,3,3,3]
[5,1,2,0,4,5,6] → [5,1,2,5,4,5,6]
[9,9,9,2,5,4,4,5,8,1,0,0] → [1,1,1,1,4,4,4,4,8,1,1,1]
n
অতিরিক্ত ইনপুট হিসাবে দৈর্ঘ্য নিতে অনুমতি দেওয়া হয় ?
#[[#]]&~FixedPoint~#&
।