Sobes.tech
Middle — Senior

Vytvořte funkci, která přijímá pole čísel a vrací řetězec s rozsahy po sobě jdoucích čísel?

sobes.tech AI

Odpověď od AI

Níže je příklad funkce v Pythonu, která přijímá seřazený seznam čísel a vrací řetězec s rozsahy po sobě jdoucích čísel. Po sobě jdoucí čísla jsou spojena do rozsahů ve tvaru "start-end" a jednotlivá čísla jsou zobrazena tak, jak jsou.

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

    rozsahy = []
    zacatek = predchozi = nums[0]

    for num in nums[1:]:
        if num == predchozi + 1:
            predchozi = num
        else:
            if zacatek == predchozi:
                rozsahy.append(str(zacatek))
            else:
                rozsahy.append(f"{zacatek}-{predchozi}")
            zacatek = predchozi = num

    # Přidat poslední rozsah
    if zacatek == predchozi:
        rozsahy.append(str(zacatek))
    else:
        rozsahy.append(f"{zacatek}-{predchozi}")

    return ",".join(rozsahy)

# Příklad použití
arr = [1, 2, 3, 5, 6, 8, 9, 10]
print(ranges_to_string(arr))  # Výstup: 1-3,5-6,8-10