Sobes.tech
Middle — Senior

Ketma-ket raqamlar diapazonlari bilan satrni qaytaradigan massiv raqamlarni qabul qiladigan funktsiya yaratish?

sobes.tech AI

AIdan javob

Quyidagi Python funksiyasi, tartiblangan raqamlar massivini qabul qiladigan va ketma-ket raqamlar diapazonlarini o'z ichiga olgan satrni qaytaradigan misol. Ketma-ket raqamlar "start-end" shaklida diapazonlarga birlashtiriladi, va yagona raqamlar o'z holicha chiqariladi.

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

    diapazonlar = []
    boshlanish = oldingi = nums[0]

    for num in nums[1:]:
        if num == oldingi + 1:
            oldingi = num
        else:
            if boshlanish == oldingi:
                diapazonlar.append(str(boshlanish))
            else:
                diapazonlar.append(f"{boshlanish}-{oldingi}")
            boshlanish = oldingi = num

    # Oxirgi diapazonni qo'shish
    if boshlanish == oldingi:
        diapazonlar.append(str(boshlanish))
    else:
        diapazonlar.append(f"{boshlanish}-{oldingi}")

    return ",".join(diapazonlar)

# Foydalanish misoli
arr = [1, 2, 3, 5, 6, 8, 9, 10]
print(ranges_to_string(arr))  # Chiqish: 1-3,5-6,8-10