Ctrl K

Нумерованные куски сообщения

Сложная
Сервис отправки СМС режет длинный текст text на куски, длина каждого из которых ограничена числом width. К каждому куску в конце дописывается метка <a/b>, где b — общее число кусков, а a — номер куска от 1 до b. Правила: - длина каждого куска вместе с меткой равна ровно width; только последний кусок может быть короче (но не длиннее width); - если у всех кусков отрезать метки и склеить их по порядку, получится исходный text; - кусков должно быть как можно меньше. Верните список кусков по порядку. Если разрезать текст по этим правилам невозможно, верните пустой список.
Пример 1
text='see you at noon', width=8 → ['see<1/5>', ' yo<2/5>', 'u a<3/5>', 't n<4/5>', 'oon<5/5>']

В каждый кусок помещается 3 символа текста и метка вида <1/5>: 15 символов текста дают ровно 5 кусков. Четырёх не хватит — в них поместилось бы только 12 символов.

Пример 2
text='hi', width=7 → ['hi<1/1>']

Весь текст помещается в один кусок: hi<1/1> длиной ровно 7.

Пример 3
text='hello', width=5 → []

Метка <1/k> уже занимает 5 символов и больше, так что для текста места не остаётся — разбить нельзя.

Ограничения
  • 1 ≤ len(text) ≤ 10⁴
  • text состоит из строчных латинских букв и пробелов
  • 1 ≤ width ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЧисла с рабочих клавиш СложнаяЗеркальные квадраты в диапазоне СложнаяСамый длинный повтор СложнаяВстреча видов мха СложнаяУзор, вплетённый несколько раз Сложная
загружаем Python…
Вход
text='see you at noon', width=8
Ожидается
['see<1/5>', ' yo<2/5>', 'u a<3/5>', 't n<4/5>', 'oon<5/5>']

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 72 теста на сервере, включая скрытые.