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