Middle — Senior
შექმენით ფუნქცია, რომელიც იღებს რიცხვების მასივს და აბრუნებს სტრიქონს თანმიმდევრული რიცხვების დიაპაზონებით?
sobes.tech AI
პასუხი AI-სგან
ქვემოთ მოცემულია Python-ის ფუნქციის მაგალითი, რომელიც იღებს სორტირებულ რიცხვთა მასივს და აბრუნებს სტრიქონს, სადაც მოცემულია თანმიმდევრული რიცხვების დიაპაზონი. თანმიმდევრული რიცხვები ერთიანდება "დაწყება-დასასრული" ფორმატში, ხოლო ინდივიდუალური რიცხვები გამოჩნდება როგორც არის.
def ranges_to_string(nums):
if not nums:
return ""
დიაპაზონები = []
დასაწყისი = წინამორბედი = nums[0]
for num in nums[1:]:
if num == წინამორბედი + 1:
წინამორბედი = num
else:
if დასაწყისი == წინამორბედი:
დიაპაზონები.append(str(დასაწყისი))
else:
დიაპაზონები.append(f"{დასაწყისი}-{წინამორბედი}")
დასაწყისი = წინამორბედი = num
# ბოლო დიაპაზონის დამატება
if დასაწყისი == წინამორბედი:
დიაპაზონები.append(str(დასაწყისი))
else:
დიაპაზონები.append(f"{დასაწყისი}-{წინამორბედი}")
return ",".join(დიაპაზონები)
# გამოყენების მაგალითი
arr = [1, 2, 3, 5, 6, 8, 9, 10]
print(ranges_to_string(arr)) # გამოტანა: 1-3,5-6,8-10