تابعی بنویسید که یک لیست از اعداد صحیح و یک عدد صحیح (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]
نمونه ورودی و خروجی
IsRepeatingCycle([1, 2, 3, 1, 2, 3, 1], 3) ➞ True
IsRepeatingCycle([1, 2, 3, 4, 2, 3, 1], 4) ➞ False
IsRepeatingCycle([1, 2, 1, 2, 2], 2) ➞ False
نکات:
- چرخهها همیشه از اولین عنصر لیست شروع میشوند.
- در صورتی که مقدار
cycle_length
از طول لیست بزرگتر باشد، تابعTrue
برمیگرداند. - بخش آخر لیست میتواند ناقص باشد اما نباید ناهماهنگ باشد.
IsRepeatingCycle([1, 2, 3, 1, 2, 3, 1], 3) ➞ True
IsRepeatingCycle([1, 2, 3, 4, 2, 3, 1], 4) ➞ False
IsRepeatingCycle([1, 2, 1, 2, 2], 2) ➞ False
IsRepeatingCycle([1, 1, 1, 1], 3) ➞ True
نظرات