Учитывая строку, переверните ее чередование. Вот как это сделать для 0 abcdefghi
и abcdefghij
0:
- Отделите символы с четными индексами от символов с нечетными:
Acegi bdfh
Acegi bdfhj - Поменяйте местами символы с нечетными индексами:
Acegi hfdb
Acegi jhfdb - Снова чередовать в одну строку:
ахфедгби
айчефгдиб
правила
- Вы должны поддерживать строки как четной, так и нечетной длины.
- При 0-индексе вы должны поменять символы на нечетные, а не четные.
- Конечно, по 1 индексу вы должны поменять символы на четные, а не на нечетные.
- Ввод будет состоять из печатного ASCII (кодовые точки 32-126), без перевода строки.
- Вы можете принимать ввод либо в виде строки, либо в виде списка символов (НЕ 1-символьных строк). Например,
String
/char[]
илиchar*
разрешены, ноString[]
/char[][]
илиchar**
нет.
Контрольные примеры
Input
Output
Hello, World!
HdlroW ,olle!
Hello World!
H!llooW rlde
ABCDEFGHIJKLMNOPQRSTUVWXYZ
AZCXEVGTIRKPMNOLQJSHUFWDYB
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
}"{$y&w(u*s,q.o0m2k4i6g8e:c<a>_@]B[DYFWHUJSLQNOPMRKTIVGXEZC\A^?`=b;d9f7h5j3l1n/p-r+t)v'x%z#|!~
P
P
AB
AB
xyz
xyz
Для пустой строки верните саму пустую строку.
Ответы:
Желе , 7 байт
Это полная программа.
Попробуйте онлайн!
Как это устроено
источник
MATL , 8 байт
Попробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
источник
2L
как и «Push [2,2,1j]», и5M
«Push [2,2,1j] снова» ... И некоторые люди говорят, что языки игры в гольф не читаются!2L
производит предопределенный литерал.5M
это автоматический буфер обмена, в котором хранятся входные данные для последних вызовов функций. На самом деле его можно заменить2L
на тот же счетчик байтовАлиса , 10 байт
Попробуйте онлайн!
Половина байтов этой программы расходуется на правильное форматирование исходного кода, реальные команды просто
IYRZO
, потому что у Алисы есть только нужные встроенные функции для этой задачи.объяснение
Как я уже сказал, зеркала (
/\
), новая строка и@
там только для того, чтобы заставить IP двигаться в правильном направлении и завершить программу в конце. Фактический код, линеаризованный, выглядит следующим образом:Я бы сказал, довольно просто.
источник
Java (OpenJDK 8) ,
108969493 байтаСохранено 1 байт с помощью хитрого трюка @ Neil с использованием
s[s.length+~i|1]
Попробуйте онлайн!
источник
String f(char[]s)
сs->
.. И вы можете сохранить байты, а, поставивint
инициализации внутри для цикла:for(int a=s.length,b=0;b<a;b++)
. Попробуйте онлайн.Python 2 , 52 байта
Попробуйте онлайн! или попробуйте все тестовые случаи
источник
Октава, 32 байта
Попробуйте онлайн!
источник
JavaScript (ES6), 48 байт
источник
Желе , 9 байт
Попробуйте онлайн!
-1 байт благодаря Деннису
источник
¢
наÇ
, вам не понадобится³
ссылка в помощнике.Сетчатка ,
1713 байтПопробуйте онлайн!
Исправлена ошибка благодаря Нилу.
Сохранено 4 байта благодаря Коби.
Выбирает каждую букву, которой предшествует нечетное количество символов, и переворачивает их. Делает это с помощью
\G
которого совпадает с концом последнего совпадения.источник
$
вместо#
.\G
вместо этого на lookbehind, и вы можете удалить$
:O^`(?<=\G.).
(12 байт)$
поскольку все входные данные были в отсортированном лексикографическом порядке. Я добавил новый тестовый пример, в котором ваш код не будет работать.PHP> = 7.1, 58 байт
Онлайн версия
источник
APL (Дьялог) , 9 байт
Требуется
⎕IO←0
(по умолчанию во многих системах) для правильного определения нечетного и четного.Попробуйте онлайн!
⌽
задний ход@
на элементах, отфильтрованных по маске в результате применения{
анонимная функция2|
мод-2 из⍳
показатели≢
счет (длина)⍵
Аргумент}
на аргументисточник
Рёда , 34 байта
Попробуйте онлайн!
объяснение
Вот альтернативное решение на тот же bytecount
3634 байтаЭто анонимная функция, которая принимает ввод как строку из входного потока.
источник
Python 2 , 67 байт
Попробуйте онлайн!
источник
OCaml , 70 байт
Попробуйте онлайн!
источник
Haskell , 63 байта
Попробуйте онлайн! Использование:
f "some string"
.Для нечетных строк, например
abcdefghi
, функцияf
передает строку и ее обращение к функции!
, которая поочередно принимает символы из обеих строк. Для четных строк это не работает, и нам нужно сначала добавить фиктивный символ, чтобы получить правильное смещение.источник
C 69 байтов
Довольно просто Ходит по строке, печатая либо текущий символ, либо противоположный.
Разгромил и объяснил:
источник
Mathematica, 82 байта
источник
Джапт ,
1413 байт12 байт кода, +1 за
-P
флаг.Сохранено 1 байт благодаря @Shaggy
Объяснение:
Попробуйте онлайн!
источник
ë2,1
довольно некрасиво. Я думаю, что вы можете сделатьó o
вместо этого, возможно ...Åë
тоже работает.Japt , 8 байт
Проверь это
источник
K (ок) , 18 байт
Решение:
Попробуйте онлайн!
Примеры:
Объяснение:
Интерпретируется в основном справа налево, находит символы с нечетными индексами, переворачивает их и помещает обратно в строку
источник
J, 26 байт
ungolfed
объяснение
(0 1$~#)]`(|.@])/.]
Используйте клавишу/.
для разделения ввода на четные / нечетные группы:(0 1$~#)
создает определение группы, циклически повторяя 0 и 1 по длине ввода. Мы используем герундиальную форму Ключа для его основного глагола]`(|.@])
, который применяет идентичность к первой группе и переворачивает вторую группу:(|.@])
.,@,./
Попробуйте онлайн!
источник
(\:2|#\)({~/:)#\<.#\.
и 19 байт с[:,@,./]]
| ./. ~ 2 | # `[:,@,./]]`|./.~2|#\
, клещи были разобраны0,@|:]]`|./.~2|#\
Python 3,
9387 байтисточник
reversed(s[1::2])
с ,s[1::2][::-1]
чтобы сохранить 4 байтаf=lambda s,j="".join:j(j(t)for t in zip(s[::2],s[1::2][::-1]))+("",s[-1])[len(s)%2]
Perl 6 ,
63 5855 байтовПроверь это
Проверь это
Проверь это
Я должен был использовать
roundrobin
вместоzip
, потому чтоzip
останавливается, как только один из списков ввода исчерпан.источник
Mathematica, 62 байта
принимает в качестве входных данных строку
Попробуйте онлайн!
источник
APL (Дьялог) , 24 байта
Байты в гольфе благодаря @ Adám
Попробуйте онлайн!
источник
GNU APL 1.2, 24 байта
APL работает справа налево.
⍴R←⍞
назначает пользовательский вводR
и затем оценивает его длину. Сделайте это вдвое, умножив на.5
и применив⌊
функцию пола.⍳
возвращает все числа от 1 до аргумента.APL работает с массивами, поэтому
2×
массив, который мы только что получили,⍳
удваивает каждый элемент, давая нам только четные индексы (1-индексированный, поэтому полагается на⎕IO
1).При доступе к нескольким индексам вектора APL предоставляет элементы с этими индексами в векторе.
R[X←2×⍳⌊.5×⍴R←⍞]
дает только элементы с четным индексом.⌽
переворачивает элементы. Затем присвойте обратные значения четным индексам (присвойте этим индексамX
экономию 6 байтов).◊
является разделителем операторов. После того, как задний ход сделан, оцените,R
чтобы напечатать результат.источник
Perl 5, 46 + 3 для флага -F = 49 байт
Использует
-F
флаг для автоматического разделения ввода на массив символов,@F
. Переходит по массиву и выводит этот элемент для четного индекса или этого индекса (плюс один для строки нечетной длины) с конца для нечетного ввода.Принимает ввод с новой строки. Без завершающего символа новой строки можно просто изменить предварительное увеличение на
$x
последующее увеличение.Чуть более читабельно:
источник
05AB1E , 21 байт
Попробуйте онлайн!
Я предполагаю, что причина этого еще не была сделана в 05AB1E, потому что это грубо ...
Еще один раз, когда
zip
функция auto-drop-last-element вместо помощи помогает.PS Если у вас есть предложения по улучшению моего ответа, опубликуйте свой; вероятно, достаточно улучшения, чтобы гарантировать получение очков. Мне довольно стыдно за этот ответ.
источник
q / kdb +,
70564738352927 байтРешение:
Пример:
Объяснение:
Найдите нечетные индексы строки, переверните этот список, вытяните элементы в этих точках и затем переназначьте их на место исходной строке.
Редактирование:
-9 байт; переключение
count
для(#:)
,til
для(!)
,where
для(&:)
иreverse
для(|:)
.-3 байта; переключение
(#:)
для(#)
,(&:)
для(&)
и(|:)
для(|)
-6 байт; полное переписывание
-2 байта; используя назначение, а не применять
источник
05AB1E , 12 байтов
Попробуйте онлайн!
источник