Sobes.tech
Middle — Senior

Sukurkite funkciją, kuri priima skaičių masyvą ir grąžina eilutę su nuoseklių skaičių diapazonais?

sobes.tech AI

Atsakymas iš AI

Žemiau pateiktas pavyzdys Python funkcijos, kuri priima surūšiuotą skaičių masyvą ir grąžina eilutę su nuosekliais skaičių diapazonais. Nuoseklūs skaičiai sujungiami į diapazonus formatu "pradžia-pabaiga", o vienetiniai skaičiai rodomi kaip yra.

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

    diapazonai = []
    pradzia = praeitis = nums[0]

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

    # Pridėti paskutinį diapazoną
    if pradzia == praeitis:
        diapazonai.append(str(pradzia))
    else:
        diapazonai.append(f"{pradzia}-{praeitis}")

    return ",".join(diapazonai)

# Pavyzdys naudojimui
arr = [1, 2, 3, 5, 6, 8, 9, 10]
print(ranges_to_string(arr))  # Išvestis: 1-3,5-6,8-10