Sobes.tech
Middle — Senior

Napravite funkciju koja prihvata niz brojeva i vraća niz sa opsezima uzastopnih brojeva?

sobes.tech АИ

Одговор од АИ

Ниже е пример на функция на 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