Sobes.tech
Middle — Senior

Izveidojiet funkciju, kas pieņem skaitļu masīvu un atgriež virkni ar secīgu skaitļu diapazoniem?

sobes.tech AI

Atbilde no AI

Zemāk ir piemērs Python funkcijai, kas pieņem sakārtotu skaitļu masīvu un atgriež virkni ar secīgiem skaitļu diapazoniem. Secīgi skaitļi tiek apvienoti diapazonos formātā "sākums-beigas", un atsevišķi skaitļi tiek rādīti tādi, kādi tie ir.

def ranges_to_string(nums):
    if not nums:
        return ""

    diapazoni = []
    pradzia = praeitis = nums[0]

    for num in nums[1:]:
        if num == praeitis + 1:
            praeitis = num
        else:
            if pradzia == praeitis:
                diapazoni.append(str(pradzia))
            else:
                diapazoni.append(f"{pradzia}-{praeitis}")
            pradzia = praeitis = num

    # Pievienot pēdējo diapazonu
    if pradzia == praeitis:
        diapazoni.append(str(pradzia))
    else:
        diapazoni.append(f"{pradzia}-{praeitis}")

    return ",".join(diapazoni)

# Piemērs lietošanai
arr = [1, 2, 3, 5, 6, 8, 9, 10]
print(ranges_to_string(arr))  # Izvade: 1-3,5-6,8-10