правила
Программа должна получить строку / массив слов в качестве входных данных. Для каждого слова в строке / массиве оно будет реконструировать слово, поочередно принимая символы из передней и задней части слова.
12345 678 9 -> 15243 687 9.
Затем он будет переставлять слова поочередно между самым ранним и самым последним словом в строке.
15243 687 9 -> 15243 9 687
Наконец, он восстановит строку, поместив пробелы, табуляции и новые строки в индексах, где они были первоначально расположены, прежде чем выводить результат.
12345 678 9-> 15243 687 9 -> 15243 9 687 -> 15243 968 7
Выходные данные должны совпадать с типом данных.
Стандартные лазейки запрещены
Примеры
Вход:
быстрая коричневая лиса перепрыгивает через ленивую собаку.
Выходные данные:
d.ogq kucil yaz bnrwo tehf xoo rvej supmВход:
быстрая коричневая лиса перепрыгивает
через ленивую собаку.
Выходные данные:
d.ogq kucil yaz bnrwo
tehf xoo rvej supmВход:
Aflack
Выход:
Akfcla
Это код-гольф, поэтому выигрывает самый короткий код
источник
Ответы:
Желе ,
15 148 байтКолоссальные 6 байт спасти от Dennis (перемещая сглаживаются и плесени внутри линии 1 нет необходимости разделения на две части и головы, и Flatten там уже , чтобы они стали одним!)
(из двух строк:
żṚFœs2Ḣ
иÇ€ÇFṁ⁸
)Попробуйте онлайн!
Принимает массив слов и возвращает массив новых слов. (Нижний колонтитул в TIO вызывает это и объединяет массив с пробелами, поэтому он хорошо печатается.)
Примечание - обработка одной строки, разделение на пробелы и символы новой строки, а затем повторная сборка на самом деле оказались довольно сложными; как только я увидел, что список слов был опцией, все стало намного проще!
Как?
источник
JavaScript (ES6), 89 байт
Принимает и выводит массив слов.
Тестовое задание
Показать фрагмент кода
Струнная версия, 112 байт
Принимает и выводит строку.
Тестовое задание
Показать фрагмент кода
источник
Perl , 77 байт
74 байта кода + 3 байта для
-0pa
флагов.Попробуйте онлайн!
Сохраненный 8 байт благодаря старой @Ton Hospel «s пост , где я„украл“
s/../chop/reg
. (У меня раньше было$c=y///c/2,s/.{$c}$//
)источник
Perl 6 , 84 байта
Вводит и выводит список слов.
Как это устроено
Внутри лямбды я определил другую лямбду, которая будет выполнять скручивание « взятие символов поочередно спереди и сзади »:
Это работает, потому что
xx
оператор больше похож на макрос, чем на функцию, поскольку он обеспечивает волшебную ленивую оценку.Тогда в основной лямбде:
Perl 6 , 87 байт
Это вариант выше, который вводит и выводит строку, сохраняя различные пробельные символы.
источник
Haskell ,
115 95 93 9895 байтПозвони с
(!)=<<(f=<<).f.words $ "some string"
. Попробуйте онлайн!Спасибо @nimi за то, что указал, что я неправильно прочитал вызов ранее.
Функция
f
выполняет скручивание списка, поэтому ее можно использовать со строками (списком символов) и списком строк.a!b
вставляет пробел строкиb
в строкуa
.(!)=<<(f=<<).f.words
эквивалентно\s0 -> (concatMap f . f . words $ s0) ! s0
:источник