تابعی بنویسید که یک لیست از اعداد صحیح و یک عدد صحیح (cycle_length) دریافت کند و بررسی کنید که آیا این لیست یک چرخهی تکراری دارد یا نه.
قوانین:
- اگر مقدار
cycle_lengthاز طول لیست بزرگتر باشد، تابع بایدTrueبرگرداند. - لیست باید در قالب چندین بخش از طول
cycle_lengthتکرار شود.- اگر هر بخش برابر با اولین بخش نباشد، تابع
Falseبرمیگرداند.
- اگر هر بخش برابر با اولین بخش نباشد، تابع
is_repeating_cycle([1, 2, 3, 1, 2], 3) ➞ True
# الگوی تکراری: [1, 2, 3] - [1, 2] (بخش آخر ناقص است اما مهم نیست)
مثال چرخه ناتکراری:
is_repeating_cycle([1, 2, 3, 1, 3], 3) ➞ False
# بخش ها نابرابرند [1, 2, 3] != [1, 3]
نمونه ورودی و خروجی
is_repeating_cycle([1, 2, 3, 1, 2, 3, 1], 3) ➞ True
is_repeating_cycle([1, 2, 3, 4, 2, 3, 1], 4) ➞ False
is_repeating_cycle([1, 2, 1, 2, 2], 2) ➞ False
نکات:
- چرخهها همیشه از اولین عنصر لیست شروع میشوند.
- در صورتی که مقدار
cycle_lengthاز طول لیست بزرگتر باشد، تابعTrueبرمیگرداند. - بخش آخر لیست میتواند ناقص باشد اما نباید ناهماهنگ باشد.
self.assertEqual(is_repeating_cycle([1, 2, 3, 1, 2, 3, 1], 3), True) self.assertEqual(is_repeating_cycle([1, 2, 3, 4, 2, 3, 1], 4), False) self.assertEqual(is_repeating_cycle([1, 2, 1, 2, 2], 2), False) self.assertEqual(is_repeating_cycle([1, 1, 1, 1], 3), True)
پاسخ های کاربران به این تمرین
برای مشاهده پاسخ باید ابتدا وارد شده و قفل پاسخ را باز کنید
برای مشاهده پاسخ باید ابتدا وارد شده و قفل پاسخ را باز کنید
برای مشاهده پاسخ باید ابتدا وارد شده و قفل پاسخ را باز کنید
نظرات