Подставь строку с собой
Ваша цель состоит в том, чтобы заменить строку самой собой, заменив каждый символ в исходной строке на предыдущий, начиная с первого символа и заканчивая переносом. Вот несколько примеров, чтобы показать, что я имею в виду:
1-й пример:
Input: program
Output: apgopra
How:
Program -> mrogram (replace p by m in program)
-> mpogpam (replace r by p in mrogram)
-> mprgpam (replace o by r in mpogpam)
-> mpropam (replace g by o in mprgpam)
-> mpgopam (replace r by g in mpropam)
-> mpgoprm (replace a by r in mpgopam)
-> apgopra (replace m by a in mpgoprm)
2-й пример:
Input: robot
Output: orbro
How:
Robot -> tobot (replace r by t in robot)
-> trbrt (replace o by r in tobot)
-> trort (replace b by o in trbrt)
-> trbrt (replace o by b in trort)
-> orbro (replace t by o in trbrt)
3-й пример:
Input: x
Output: x
How:
x -> x (replace x by x in x)
4-й пример:
Input: xy
Output: xx
How:
xy -> yy (replace x by y in xy)
-> xx (replace y by x in yy)
Sidenotes:
- Строка
x
будет содержать только строчные буквенно-цифровые символы и пробелы - Это код-гольф, поэтому выигрывает самый короткий код в байтах !
Ответы:
CJam, 11 байт
Проверьте это здесь.
объяснение
источник
TeaScript , 17 байтов
192124TeaScript - это JavaScript для игры в гольф
Хороший и короткий
Попробуйте онлайн (следите за пробелами на входе)
Ungolfed & Объяснение
источник
JavaScript ES6, 69 байт
Показать фрагмент кода
источник
F=
в вашем счетчике байтов.s.slice(i-1)[0]
не равноs.slice(i-1,i)
?i=0
Рубин,
5048 байтовТест:
источник
Mathematica,
89757457 байтисточник
""<>Fold[#/.#2&,c=Characters@#,Thread[c->RotateRight@c]]&
Transpose
и потерпел неудачу.Pyth, 13 байт
Попробуйте онлайн. Тестирование.
источник
к2 - 17 символов
Функция принимает 1 аргумент.
k2 имеет встроенную команду под названием
_ssr
для S Тринг S нить поиск и R eplace._ssr[x;y;z]
найтиy
вx
и заменить егоz
. Поэтому мы используем/
эту функциональность для каждой замены, которую мы хотим сделать. Для тех, кто не знаком со складыванием (как в функциональном программировании), по сути_ssr/[x; (y1; y2; y3); (z1; z2; z3)]
становится_ssr[_ssr[_ssr[x; y1; z1]; y2; z2]; y3; z3]
. Строки - это списки их символов, поэтому мы можем просто повернуть ввод на шаг назад, получить замены и подключиться прямо.источник
Haskell, 76 байт
Очень жаль, что в Haskell даже нет встроенной функции подстановки.
источник
PHP, 76 байт
Вот негольфированная версия:
источник
Python,
67646257 байтПростое решение, будет искать что-то, чтобы сократить это. Спасибо @RandyC за сохранение 5 байтов.
Ввод должен быть в кавычках.
источник
[:-1]
удаляя символ zip, урезая его до самой короткой итерации.Haskell, 58 байт
Очень похоже на решение Кристиана, но использует
map
и тот факт, чтоzip
игнорирует лишние элементы, если списки имеют неодинаковую длину. Он сворачивает список замен (в форме(from,to)
), обновляя строку путем сопоставления рукописной функции заменыr
на каждой букве.Выражение
flip$map.r
было получено с помощью плагина LambdaBot «Pointless».источник