একটি অ্যারের ভিতরে রান সন্ধান করুন
একটি রান তিন বা ততোধিক সংখ্যক হিসাবে সংজ্ঞায়িত হয় যা ধ্রুব পদক্ষেপের সাথে পূর্বের থেকে বৃদ্ধি হয় ment উদাহরণস্বরূপ [1,2,3] পদক্ষেপ 1 সহ একটি রান হবে, [1,3,5,7] পদক্ষেপ 2 সহ একটি রান হবে, এবং [1,2,4,5] রান নয়।
আমরা এই রানগুলি "i টু জে বাই" এর দ্বারা চিহ্নিত করে প্রকাশ করতে পারি যেখানে আমি রানের প্রথম সংখ্যা, জে রানের শেষ সংখ্যা, এবং এস পদক্ষেপ is তবে, পদক্ষেপ 1 এর রানগুলি "i টু জে" প্রকাশিত হবে।
সুতরাং আগে অ্যারে ব্যবহার করে, আমরা পাই:
[1,2,3] -> "1to3"
[1,3,5,7] -> "1to7by2"
[1,2,4,5] -> "1 2 4 5"
এই চ্যালেঞ্জে, একাধিক রান থাকতে পারে এমন অ্যারেগুলির জন্য এটি করা আপনার কাজ।
পুনরাবৃত্তি সহ পাইথন কোড উদাহরণ:
def arr_comp_rec(a, start_index):
# Early exit and recursion end point
if start_index == len(a)-1:
return str(a[-1])
elif start_index == len(a):
return ''
# Keep track of first delta to compare while searching
first_delta = a[start_index+1] - a[start_index]
last = True
for i in range(start_index, len(a)-1):
delta = a[i+1] - a[i]
if delta != first_delta:
last = False
break
# If it ran through the for loop, we need to make sure it gets the last value
if last: i += 1
if i - start_index > 1:
# There is more than 2 numbers between the indexes
if first_delta == 1:
# We don't need by if step = 1
return "{}to{} ".format(a[start_index], a[i]) + arr_comp_rec(a, i+1)
else:
return "{}to{}by{} ".format(a[start_index], a[i], first_delta) + arr_comp_rec(a, i+1)
else:
# There is only one number we can return
return "{} ".format(a[start_index]) + arr_comp_rec(a, i)
ইনপুট
সাজানো ধনাত্মক ints এর অ্যারে (কোনও সদৃশ নেই)
আউটপুট
একটি স্পেস দ্বারা বিভক্ত রানগুলির স্ট্রিং, বা রানগুলির একটি স্ট্রিং অ্যারে
কোনও নির্দিষ্ট দিকে লোভী হওয়ার দরকার নেই
পেছনের সাদা স্থান থাকতে পারে
পরীক্ষার কেস
In: [1000, 1002, 1004, 1006, 1008, 1010]
Out: "1000to1010by2"
In: [1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233]
Out: "1to3 5 8 13 21 34 55 89 144 233"
In: [10, 20, 30, 40, 60]
Out: "10to40by10 60"
In: [5, 6, 8, 11, 15, 16, 17]
Out: "5 6 8 11 15to17"
In: [1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 15, 30, 45, 50, 60, 70, 80, 90, 91, 93]
Out: "1to7 9to15by2 30 45 50to90by10 91 93"
এটি কোড-গল্ফ তাই সর্বনিম্ন সংখ্যা বাইট জিতেছে।
[4, 5, 6, 7, 9, 11, 13, 15]
না 4to6 7to15by2
?)