Sobes.tech
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