Ctrl K

Выравнивание по ширине

Сложная
Дан список слов words и ширина строки width. Разбейте текст на строки и выровняйте его по ширине, чтобы каждая строка содержала ровно width символов. - Строки заполняются жадно: в текущую строку добавляется столько слов подряд, сколько поместится, если между соседними словами стоит хотя бы один пробел. - Пробелы между словами распределяются как можно равномернее. Если поровну не делится, левые промежутки получают на один пробел больше, чем правые. - Строка из одного слова и последняя строка текста выравниваются по левому краю: слова разделены одним пробелом, а оставшееся место справа заполнено пробелами. Верните список получившихся строк.
Пример 1
words=['the', 'quick', 'brown', 'fox', 'jumps', 'over', 'it'], width=14 → ['the      quick', 'brown      fox', 'jumps over it ']

В первую строку влезают «the quick» (9 символов), «brown» уже не помещается. 5 лишних пробелов делятся на один промежуток. Во второй строке три слова и 3 лишних пробела: левому промежутку 2 дополнительных, правому 1. Последняя строка выравнивается по левому краю.

Пример 2
words=['a', 'bb', 'ccc'], width=4 → ['a bb', 'ccc ']

«a bb» занимает ровно 4 символа. «ccc» — последняя строка, она дополняется пробелом справа.

Пример 3
words=['notebook', 'pen'], width=8 → ['notebook', 'pen     ']

Каждое слово стоит на своей строке; в строке из одного слова пробелы добавляются справа.

Ограничения
  • 1 ≤ len(words) ≤ 300
  • 1 ≤ len(words[i]) ≤ 20
  • words[i] не содержит пробелов
  • 1 ≤ width ≤ 100
  • len(words[i]) ≤ width
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиОдновременные ходы на шахматной доске СложнаяПиковая высота штоков насоса СложнаяСлова столбиками СредняяЯзык из одной переменной ЛёгкаяРасставить пробелы по меткам Средняя
загружаем Python…
Вход
words=['the', 'quick', 'brown', 'fox', 'jumps', 'over', 'it'], width=14
Ожидается
['the      quick', 'brown      fox', 'jumps over it ']

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