Первые письма, двигайся! был очень популярен, но имел ограниченное участие. Этот будет легче решить, но мы надеемся привлечь некоторые уловки в гольф.
Вам дана строка только строчных букв. Для каждой буквы с положением в алфавите m переместите ее так, чтобы она стала m- й буквой с конца. Если значение m больше длины строки, переместите ее в самое начало. Выведите только полностью преобразованную строку.
Примеры:
"жирафа"
- «g» - седьмая буква в алфавите, это уже седьмая буква сзади, поэтому оставьте ее.
- «i» - это 9-я буква, так как 9 больше длины слова, оно идет вперед, поэтому строка становится
igraffe
- «r» - это 18-я буква, как и «i», она идет вперед:
rigaffe
- «а» - это первая буква, она идет до самого конца:
rigffea
- 'f' - это 6-я буква, она становится 6-й сзади:
rfigfea
- следующая буква «f» также является шестой буквой, поэтому она также идет к шестой букве сзади:
rffigea
- «е» - 5-е буквы, оно идет к 5-м сзади:
rfefiga
"цветок"
- 'f' (6) =>
flower
- 'l' (12) =>
lfower
- 'o' (15) =>
olfwer
- 'w' (23) =>
wolfer
- 'e' (5) =>
weolfr
- 'r' (18) =>
rweolf
"ананас"
- 'p' (16) =>
pineapple
- 'i' (9) =>
ipneapple
- 'n' (14) =>
nipeapple
- 'e' (5) =>
nipaepple
- 'a' (1) =>
nipepplea
- 'p' (16) =>
pnipeplea
- 'p' (16) =>
ppnipelea
- 'l' (12) =>
lppnipeea
- 'e' (5) =>
lppneipea
(убедитесь, что вы переместили e, которое еще не было перемещено! Здесь это не имеет значения, но ниже это имеет значение.)
Спасибо @Neil за улучшение тестовых случаев с этими 3 дополнениями:
"пицца"
- 'p' (16) =>
pizza
- 'i' (9) =>
ipzza
- 'z' (26) =>
zipza
- 'z' (26) =>
zzipa
(двигая второй z!) - 'a' (1) =>
zzipa
«Абракадабра»
- 'a' (1) =>
bracadabraa
- 'b' (2) =>
racadabraba
- 'r' (18) =>
racadabraba
- 'a' (1) =>
rcadabrabaa
- 'c' (3) =>
radabrabcaa
- 'a' (1) =>
rdabrabcaaa
- 'd' (4) =>
rabrabcdaaa
- 'a' (1) =>
rbrabcdaaaa
- 'b' (2) =>
rrabcdaaaba
- 'r' (18) =>
rrabcdaaaba
- 'a' (1) =>
rrbcdaaabaa
"персонажи"
- 'c' (3) =>
haractecrs
- 'h' (8) =>
arhactecrs
- 'a' (1) =>
rhactecrsa
- 'r' (18) =>
rhactecrsa
- 'a' (1) =>
rhctecrsaa
- 'c' (3) =>
rhtecrscaa
- 't' (20) =>
trhecrscaa
- 'e' (5) =>
trhcrescaa
- 'r' (18) =>
rtrhcescaa
- 's' (19) =>
srtrhcecaa
code-golf
string
permutations
geokavel
источник
источник
Python 3, 78 байт.
Сохранено 2 байта благодаря orlp.
Сохранено 7 байтов благодаря DSM.
Создает слово в виде списка, а затем присоединяется к нему.
источник
(q-p,0)[p>q]
длиннее чемmin(q-p,0)
.max(q-p,0)
.Python 2, 86 байт
Python 3, 88 байт
Примеры
Python 2:
Python 3:
источник
k.remove
удаляет первый экземпляр, так что это не удастся для чего-то вродеbaa
.Javascript ES6,
136134131 байтОбратите внимание, что я очень стараюсь не перемещать одного и того же персонажа дважды, в противном случае
pizza
превращается в то,zipza
что должно бытьzzipa
. Есть также крайний случай, касающийся недопущения преждевременного удаления символов;characters
становится возможноsrtrchaeac
илиsrtrheccaa
если вы делаете это неправильно, но это должно бытьsrtrhcecaa
. Другое хитрое слово,abracadabra
для которого выводrrabaaadcba
будет неправильным;rrbcdaaabaa
было бы правильно.Редактировать: сбрил два байта с помощью подстроки, которая автоматически приводит свои аргументы к диапазону 0 .. длины.
Редактировать: сбрил три байта, изменив первую подстроку на substr, как предложено пользователем 81665.
источник
substr
вместоsubstring
.slice
лучше (я думаю).slice
ломает его.pizza
тесте, который вы поместили на мой пост, но я исправил это.Pyth,
1817 байтовТестирование .
Выполняет итерации с использованием сокращения по входной строке, вставляя в строку пустую строку базового случая в правильной позиции.
источник
𝔼𝕊𝕄𝕚𝕟, 23 символа / 40 байтов
Try it here (Firefox only).
объяснение
источник