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