EDIT Я змінив формулювання правил, щоб зробити явніші деякі речі. Я також додав деякий акцент, щоб усунути деякі моменти явної плутанини, і чітко визначив варіант створення окремої програми замість функції.
Мета полягає в тому, щоб зробити функцію, яка приймає текстовий файл (або рядок) і переміщує його, щоб рядки стали стовпцями і навпаки.
Приклад:
Я текст. Перекладіть мене. Ви можете зробити це?
Призводить до:
ІТЦ ра аан мн си апо ун ц eed xo тм .ei .t ?
Правила:
- Ви дозволили припустити , що тільки пробільні символи використовуються
" "і"\n"і що немає завершальних пропусків в будь-якому рядку. - Ви можете припустити, що файл ASCII. Який маркер кінцевої лінії ви хочете використовувати, залежить від вас (CRLF або LF). Він повинен правильно працювати на прикладі, але він також повинен працювати на будь-якому вкладі, який задовольняє наведеним вище припущенням.
- Можливо, вам доведеться вставити пробіли (як у прикладі) там, де їх не було, щоб стовпці були у рядку.
- У вашому результаті не повинно бути пробілів пробілу в жодному рядку .
- Остаточний символ нового рядка (для останнього рядка) необов’язковий.
- Це повинна бути або функція, або повна програма. Якщо ваша функція приймає рядок, вона повинна повертати результати у вигляді рядка. Якщо він приймає ім'я файлу, то ви повертаєте ім'я файлу, де ви зберегли результат. Вам також дозволено написати повну програму, яка приймає вхід від STDIN і видає правильний результат в STDOUT; якщо ви це зробите, ви не повинні нічого виводити на STDERR.
- Найкоротша процедура виграє, але я підтримаю будь-яку відповідь, яка мені подобається.
Виходячи з правил, результат на прикладі має тривалість 53 або 52 байти (для нових рядків LF) залежно від того, включений чи ні останній рядок.
Примітка. Це не конкретна вимога, але якщо ваша функція, коли виконується двічі послідовно, не ідентична оригіналу (остаточний новий рядок може відрізнятися, і будь-які порожні рядки в кінці файлу будуть видалені), то ви ймовірно, порушуючи одне з правил.