Учитывая строку в качестве входных данных, выведите новую строку с каждой буквой, сдвинутой вправо на соответствующий алфавитный указатель.
Мы все знаем, что буква A медленная, а буква Z быстрая. Это означает, что Z смещается вправо на 25 пробелов, A вообще не смещается, а B смещается на 1 пробел.
Ваша программа должна обрабатывать только заглавные буквы от AZ, и никаких других символов, ни пробелов, ни знаков препинания.
Обратите внимание, что если после сдвига две или более буквы попадают в один и тот же пробел, будет использован последний символ. (Пример: BA
-> A
)
Примеры
"AZ" -> "A Z"
"ABC" -> "A B C"
"ACE" -> "A C E"
"CBA" -> " A"
"HELLOWORLD" -> " E H DLL OLO R W"
правила
- Это код-гольф , поэтому выигрывает самый короткий код в байтах любого языка.
Стандартные лазейки запрещены.
Ввод должен быть получен в виде строки.
- Вы можете напечатать результат
stdout
или вернуть строку. - Допускается использование одного пробела и / или новой строки.
- Вы также можете использовать строчные буквы в качестве ввода или вывода, но используйте только один из них.
Ответы:
Python 2 , 81 байт
Попробуйте онлайн!
источник
MATL , 11 байт
Попробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
Индексирование MATL основано на 1. Эта игра в гольф используется здесь. Этот другой нельзя использовать, потому что нам нужна пустая строка, а не пустой числовой массив.
Рассмотрим ввод
'ACE'
в качестве примера. Содержимое стека показано снизу вверх.источник
(
: nice встроенныйǝ
? Ах, но это не похоже на векторизацию по второму / третьему входам0
s и отображает0
как пробел.R ,
14013312974 байтСохранены тонны байтов, портирующие ASCII-подход, как и все остальные. Грустно, я не думал об этом раньше :(
Попробуйте онлайн!
оригинальный ответ, 129 байт:
Попробуйте онлайн!
генерирует слишком длинный список
o
пробелов, затем перебираетs
, заменяя значенияo
на правильное значение и обновляяF
, позицию самого правого символа. Затем распечатывает первыеF
элементыo
без разделителей между ними.источник
05AB1E ,
2016 байтов-4 байта благодаря Emigna
Попробуйте онлайн!
источник
ð₄×svyAuykN+ǝ}ðÜ
крайней мере. Кроме того, есть ли гарантия, что смещение входной строки не превышает 1000 символов? Если нет,g₂+ð×
должно работать.JavaScript (ES6), 81 байт
В некоторой степени основывается на неполном ответе Рика Хичкока, но в итоге все изменилось.
Помещает символы в их соответствующий индекс пустого массива, затем использует array spread (
[...a]
), чтобы превратить отсутствующие элементыundefined
, позволяяmap
заменять пустые элементы пробелом.Тестовые случаи
Показать фрагмент кода
источник
Perl 5, 42 байта
41 байт код + 1 для
-p
. В\x1b
s в коде прописные буквы , побег.Полагается на escape-последовательности ANSI для позиционирования курсора и поэтому не работает на TIO.
использование
источник
-F
): Попробуйте онлайн!Java (OpenJDK 8) ,
207191189183178174173170 байтПопробуйте онлайн!
источник
Perl 5 , 41 + (
-F
) = 43 байтаПопробуйте онлайн!
Просто для @lynn
источник
брейкфук , 127 байт
Попробуйте онлайн!
объяснение
источник
Протон , 78 байт
Попробуйте онлайн!
69 байтов при переносе решения Линн:
x=>{t=[]i=65for k:x{t+=[' ']*26t[ord(k)-i]=k;i--}"".join(t).rstrip()}
источник
Желе , 20 байт
Попробуйте онлайн!
источник
Haskell ,
9088 байтПопробуйте онлайн!
источник
Japt , 23 байта
Проверьте это онлайн!
Первая попытка, может быть улучшена ...
источник
V
вместоU
: ethproductions.github.io/japt/…Wolfram Language (Mathematica) , 76 байт
Принимает список символов в качестве входных данных. Это генерирует некоторые сообщения об ошибках, которые безопасно игнорировать.
Я включил
Print
иCharacter
командовал в нижнем колонтитуле ссылки TIO для простоты использования. (Character
команда просто преобразует строку в список символов)Попробуйте онлайн!
источник
LetterNumber
такое встроенная функция поиска положения буквы в алфавите? Святое дерьмо, это смешно.J,
3731 байт[`]`(' '#~(1+>./)@])}(i.@#+65-~a.&i.)
-6 байт благодаря FrownyFrog
объяснение
Все дело в крючке:
Правая часть вычисляет новые индексы для всех букв.
Левая сторона использует герундий формы Изменить
}
первый , чтобы создать строку необходимого количества пробелов:(' '#~(1+>./)@])
. А затем поместить каждую букву исходной строки в соответствующий ей индекс в строке пробела.Попробуйте онлайн!
источник
(i.@#+65-~a.&i.)
->(i.@#+65-~3&u:)
->(i.@#-65-3&u:)
->(#\-66-3&u:)
(]' '#~1+>./)
Haskell , 88 байт
Попробуйте онлайн!
источник
Haskell, 88 байт
Попробуйте онлайн!
q
список конечных индексов букв входной строки (со смещением65
). Переберите все индексы (начиная с65
) и найдите для него все буквы, добавляя пробел. Возьми последний.источник
C # (.NET Core) ,
117110,84 байтаСохранено 7 байтов благодаря Ayb4tu .
Изменен тип возвращаемого значения с
string
на,char[]
чтобы сохранить 26 байтов.Попробуйте онлайн!
источник
t[i+((int)n[i]-65)]
наt[i+n[i]-65]
.char -> int
преобразования неявные.C # .NET,
89 байт87 байт-2 байта благодаря Lan H.
Попробуйте онлайн!
источник
for
-loop для -2 байтов.Котлин,
207 байтов189 байтов187 байтов177 байтовЕсли пробел останется, я бы просто позвонил,
trimEnd()
а неtrim()
.Unminified:
Возможно, Kotlin - не лучший язык для игры в код, но мне понравился этот вызов, и я хотел поближе познакомиться со стандартной библиотекой Kotlin.
источник
q / kdb +, 37 байт
Решение:
Примеры:
Объяснение:
Я думаю, что это та же идея, что и решение J, вычислить правильные индексы для входного массива, а затем присвоить их пустой строке правильной длины:
источник
Jq 1,5 , 91 байт
расширенный
Попробуйте онлайн!
источник
Древесный уголь , 16 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
источник
APL (Dyalog) , 26 байтов
Анонимный префикс lambda, который принимает входную строку в качестве аргумента и возвращает выходную строку. Предполагается
⎕IO
( я ndex O rigin)0
, который по умолчанию на многих системах.Попробуйте онлайн!
{
...}
анонимная лямбда;⍵
представляет аргумент≢⍵
подсчет аргументов⍳
чем много ɩntegers (0… LengthOfArgument-1)(
…)+
Плюс:⎕A⍳⍵
индексы аргумента в верхнем регистре A lphabeti←
strore вi
(для я ndices)⌈/
максимум (уменьшение)1+
добавить один''↑⍨
возьмите столько символов из пустой строки, добавив пробелы по мере необходимости⊢
приносить это (служит для отделенияi
от''
)⍵@i
изменить , что с аргументами буквы в техi
индексовисточник
SOGL V0.12 , 10 байт
Попробуй здесь!
Объяснение:
источник
Pyth ,
4438 байтВычеркнул 44, все еще 44 :(
Кровавый Пиф начинающий.
Сохранено 6 байтов благодаря @Mr. Xcoder.
Попробуйте онлайн!
Как?
источник
K*d+lz26Vlz K=XK-C@zN-65N@zN;.WqeHdPZK
.WqeKd K=PK;K
заменяется на.W
(функциональное время) и его аргументы, конечно, иFNrZlz
может быть замененоVrZlz
, ноrZ...
означаетU...
, иU
генерируется автоматическиV
. ТакFNrZlz
становитсяVlz
Пакет,
418331 байтРаботает только с заглавными буквами и займет несколько секунд для более длинных строк.
Здесь вы узнаете новые трюки, используя преобразование символов в ASCII
%=exitcodeAscii%
. Такжеif defined
и «массив» доступа используютcall
. Кроме того, игра в гольф почти на 100 байтов была хорошей тренировкой в гольф.Обратите внимание на пробел в
set z=set
.источник
Рубин , 68 байт
Попробуйте онлайн!
источник
IBM PC DOS 8088 в сборе ,
3433 байтаUngolfed (в разобранном виде):
Это полный исполняемый файл PC DOS, который берет строку ввода из командной строки и выводит новую «более быструю» версию на экран. Требуется минимум DOS 1.0 ... надеюсь, у вас есть хотя бы это.
Выход
источник
PHP,
127123 байтаПопробуйте онлайн
Пришлось исправлять ошибку, которая не выводила бы 'A' ...
источник