РЕДАКТИРОВАТЬ Я изменил формулировку правил, чтобы сделать некоторые вещи, которые были неявными, более явными. Я также добавил некоторые акценты, чтобы прояснить некоторые моменты кажущейся путаницы, и явно определил возможность создания отдельной программы вместо функции.
Целью здесь является создание функции, которая принимает текстовый файл (или строку) и транспонирует его так, чтобы строки становились столбцами, и наоборот.
Пример:
Я текст. Транспонировать меня. Ты можешь сделать это?
Результаты в:
ITC ра аан Миннесота сы апо ОУ Т.С. ПЕД XO тм .ei .t ?
Правила:
- Вы можете предположить, что используются только пробельные символы
" "
и"\n"
что ни в одной строке нет пробельных символов . - Вы можете предположить, что файл ASCII. Какой конечный маркер вы хотите использовать, зависит от вас (CRLF или LF). Он должен работать правильно на примере, но он также должен работать на любом входе, который удовлетворяет вышеуказанным предположениям.
- Возможно, вам придется вставить пробелы (как в примере), где их не было, чтобы столбцы были в строке.
- Ваш результат не должен содержать пробелы в конце строки .
- Последний символ новой строки (для последней строки) является необязательным.
- Это должна быть либо функция, либо полная программа. Если ваша функция принимает строку, то она должна возвращать результаты в виде строки. Если он принимает имя файла, вы возвращаете имя файла, в котором вы сохранили результат. Вам также разрешено написать полную программу, которая принимает входные данные из STDIN и выводит правильный результат в STDOUT; если вы сделаете это, вы не должны ничего выводить в STDERR.
- Кратчайшая процедура выигрывает, но я буду одобрять любой ответ, который мне нравится.
Исходя из правил, выходные данные в примере имеют длину 53 или 52 байта (для новых строк LF) в зависимости от того, включен последний заключительный символ или нет.
Примечание. Это не является конкретным требованием, но если ваша функция при двухкратном последовательном запуске не идентична оригиналу (последний символ новой строки может отличаться, и любые пустые строки в конце файла будут удалены), тогда вы возможно нарушая одно из правил.