В Python есть метод range
, который допускает такие вещи, как:
>>> range(1, 6)
[1, 2, 3, 4, 5]
То, что я ищу, выглядит как раз наоборот: возьмите список чисел и верните начало и конец.
>>> magic([1, 2, 3, 4, 5])
[1, 5] # note: 5, not 6; this differs from `range()`
Это достаточно просто сделать для приведенного выше примера, но возможно ли учесть пропуски или множественные диапазоны, возвращая диапазон в формате строки, подобном PCRE? Примерно так:
>>> magic([1, 2, 4, 5])
['1-2', '4-5']
>>> magic([1, 2, 3, 4, 5])
['1-5']
Редактировать: Я ищу решение на Python, но я также приветствую рабочие примеры и на других языках.Это больше о создании элегантного, эффективного алгоритма.Бонусный вопрос: есть ли какой-нибудь язык программирования, который имеет встроенный метод для этого?