Сортировать учебники
Школа скоро начнется (если она еще не началась), и пришло время привести наши учебники в порядок. Вам нужно отсортировать книги в алфавитном порядке, но это занимает слишком много времени, поэтому вы решаете написать программу для этого.
Примеры
Входные данные:
_
| | _
|F| | |
|o|_|P|
|o|B|P|
| |a|C|
| |r|G|
|_|_|_|
Выход:
_
| |_
|F| |
_|o|P|
|B|o|P|
|a| |C|
|r| |G|
|_|_|_|
вход
На входе будет набор книг, которые нужно переставить по алфавиту. Он будет содержать только: |
, _
, , и
A-Za-z
. Названия книг читаются вертикально, сверху вниз.
Вы можете предположить, что ввод дополнен пробелом, чтобы соответствовать прямоугольнику. Если вы решили заполнить свой ввод пробелами, укажите это в своем ответе.
Максимальная высота книги, которую должна обработать ваша программа, составляет 5 120 строк без сбоев.
Книги всегда будут иметь толщину 1, и их всегда будет хотя бы одна книга на входе
Выход
Вывод должен быть таким же набором книг, организованных в алфавитном порядке. Высота книг должна быть одинаковой, а заголовок должен иметь одинаковое расстояние от вершины при перестановке.
Книги должны быть отсортированы по алфавиту. Если ваш язык поддерживает функцию сортировки, вы можете использовать ее. В противном случае вы можете использовать сортировку по алфавиту, как описано здесь .
Примеры названий книг
_
| |
| |
|F|
|o|
|o|
| |
| |
|B|
|a|
|r|
| |
| |
|_|
Название этой книги:
"Foo Bar"
Названия книг будут содержать только буквы и пробелы.
Конечный пробел разрешен
выигрыш
Это код-гольф, поэтому выигрывает самый короткий код в байтах.
Ответы:
CJam, 60 байтов
Я попытался перенести свой ответ на Python, что также похоже на подход @ RetoKoradi .
Попробуйте онлайн . Входные данные должны быть дополнены пробелами для формирования прямоугольника.
источник
Python 3, 231 байт
Просто быстрый взлом. Сжатие книг, сортировка, разархивирование, забота о столбцах,
|
пока мы на нем.Введите многострочную строку, дополненную пробелами в прямоугольник. Вывод имеет на одну пробел больше в каждой строке, чем необходимо.
Ungolfed
источник
Рубин (
209204200198 байт)transpose
Функции в этом растворе требует , чтобы все строки имеют одинаковую длину, следовательно , вход должен быть дополнен пробелами.объяснение
источник
ruby
версия требуется? В соответствии с 2.1.2 для примера ввода из вопроса я получаю «transpose»: размер элемента отличается (6 должно быть 2) (IndexError) ».gsub(?|,' ')
→tr(?|,' ')
.Python 2 - 399 байт
Ожидается, что ввод не будет завершающей новой строки.
источник
CJam,
756665 байтЭто предполагает, что ввод дополнен пробелами для формирования прямоугольника.
Попробуйте онлайн
Спасибо @ Sp3000 и @Dennis за предложения по обрезке строк в чате, а также за подсказку, что
$
оператор может принять блок в качестве аргумента.Я все еще не совсем доволен вторым циклом. Но после попытки нескольких других вариантов без лучшего успеха, я устаю.
Объяснение:
источник
Scala
359341 байтожидает, что все строки будут одинаковой длины (то есть дополнены пробелами)
Разглашен и прокомментирован:
источник