Скобочные конструкции, в которых нет вложенности (или она фиксировано очень неглубокая) можно разбирать регулярными выражениями. Написать генератор-функцию interval(diap), которой передаётся строка diap следующего формата:
- В начале и конце строки стоит по одной круглой или квадратной скобке
- В скобках указаны два числа, разделённые описателем интервала
Число — либо целое, либо вещественное с фиксированной точкой и обязательными целой и дробной частями
- вокруг числа (и для простоты — после необязательного минуса тоже) могут стоять пробелы
Описатель интервала — либо (1) две и более точки, либо (2) конструкция вида «..длина..», где длина — это целое число ⩾2
interval(diap) должна возвращать последовательность чисел типа Fraction от левого числа до правого.
Длина этой последовательности — это либо количество точек в варианте (1), либо значение длины в варианте (2)
- Круглая скобка вместо квадратной исключает из последовательности соответствующий элемент (начало или конец) и делает её на один элемент короче.
- Все элементы последовательности должны быть равноудалены друг от друга.
Если diap не соответствует формату, последовательность пустая.
1 print(*interval("[1.....10.5)"))
В последовательности четыре элемента: точек пять, но справа круглая скобка, пятый элемент исключается. Размер интервала 19/2, расстояние между точками — 19/8.
1 27/8 23/4 65/8
Регулярные выражения стоит скомпилировать заранее и хранить в глобальных переменных (задание «написать функцию» это позволяет).