Создайте программу, которая берет слово, которое вы вводите, и добавляет это слово на обороте минус его первую букву, а затем повторяется до тех пор, пока все буквы не исчезнут. Например, cat
стало бы catatt
, и hello
стал бы helloellolloloo
.
Введите
любую из 26 букв английского алфавита. Может быть несколько слов, разделенных пробелами, и изменение должно применяться к каждому слову.
Выходные данные Вводимое
слово (слова), каждое слово ставится после него, пропущена первая буква, затем пропущена вторая буква и т. Д., Пока не останется больше букв для добавления.
Больше примеров:
ill eel
выходы illlll eelell
laser bat
выходы laserasersererr batatt
darth vader
выходы dartharthrththh vaderaderdererr
Это код гольф, поэтому выигрывает самый короткий код.
Пояснение:
Вы можете рассматривать ввод или вывод как список. Вы можете разделить слова, используя новую строку вместо пробела. Вы можете добавить завершающий пробел для ввода.
1.
Пожалуйста, обновите спецификацию новыми допусками (массив ввода / вывода, завершающий пробел и т. Д.).2.
Пожалуйста, сообщите существующим решениям на случай, если кто-либо может сохранить байты, воспользовавшись ими.Ответы:
Japt
-m
,63 байтаВвод и вывод - это массивы слов.
Попробуй
объяснение
источник
£
в UTF-8 нет двух байтов?брейкфук ,
6056 байтПопробуйте онлайн!
Требуется завершающий пробел и печать начального пробела. Оба из них могут быть обойдены, но это заканчивается в 112 байтов .
объяснение
источник
Haskell,
3621 байтПопробуйте онлайн!
Изменить: -15 байт из-за нового формата ввода-вывода (список слов вместо слов, разделенных пробелом)
источник
scanr (:) ""
наtails
.import Data.List
добавить 17 байт к партитуре.Perl
-p
,362523 байтаПопробуйте онлайн!
Это единственный regsub. Во-первых, он соответствует всем границам слов или непробельным символам:
Обратите внимание, что каждое из этих совпадений должно быть заменено остальной частью слова:
Мы можем сделать это с помощью специальной переменной
$'
, которая хранит часть строки после совпадения. Однако нам нужно применить к нему вложенную regsubs/ .*//
, которая удаляет все, что находится за первым пробелом в$'
, чтобы избавиться от оставшихся слов во входных данных.Спасибо @nwellnhof за 2 байта.
источник
[^ ]
на\S
.Python 3 , 49 байт
Попробуйте онлайн!
Это использует тот факт, что
"".split()
возвращает пустой массив, чтобы он служил проверкой базового случая в рекурсии.источник
Желе , 3 байта
Попробуйте онлайн!
Больше не нужны
K
s, так как теперь разрешен ввод / вывод массива.источник
ḊƬẎ)
(илиḊƬF)
, если вы предпочитаете).APL (Dyalog),
199 байтов{⌽∊,\⌽⍵}¨
спасибо @ H.PWiz за пробежку по мозгу
Это работает, потому что все строки в APL являются символьными массивами.
TIO
источник
JavaScript (ES6), 33 байта
Сохранено 1 байт благодаря @ShieruAsakoto
Формат ввода / вывода: массив слов.
Попробуйте онлайн!
JavaScript (ES6), 35 байт
Формат ввода / вывода: массив слов.
Попробуйте онлайн!
источник
s=>s.replace(/\S+/g,g=s=>s&&s+g(s.slice(1)))
$'
(или$<backtick>
).R ,
827567 байтПопробуйте онлайн!
Несколько байтов сохранено благодаря JayCe
Разделяет вывод символами новой строки.
sapply(...)
Выражение генерирует матрицу / вектор - столбец соответствующих подстрок, дополняя с по""
мере необходимости.write
затем печатает элементы матрицы вy
каждой строке, разделяя их с помощью""
.источник
...substring,1:1e6,1e6)...
или схожим значениембрейкфук ,
9493 байтаПопробуйте онлайн!
.[-]>[.>]<[<]>
в гольф[.>]<[<]>[-]>
.объяснение
Попробуйте онлайн!
приписывание
Константная коллекция Эзоланга использовалась для начальной космической нагрузки.
источник
05AB1E , 5 байтов
Попробуйте онлайн!
объяснение
источник
í€ηJí
байтовая альтернатива: (поскольку префиксы являются встроенными 1-байтовыми, а не 2-байтовыми, как суффиксы; все же требуется дополнительный обратный-каждый, однако в начале, поэтому количество байтов остается 5).Vim , 47 байт (38 нажатий клавиш)
Начните с ввода в качестве единственной строки в буфере Vim.
объяснение
Это помещает каждое слово в отдельную строку, перебирает каждую строку, а затем объединяет их все. Разрывы, если слова длиннее 99 символов или если ваш ввод содержит более 99 слов.
:s/<Space>/\r/g<CR>
заменяет пробелы новыми строками (\r
)gg
позиционирует курсор в начале первой строкиqa
начинает запись макроса A :yw
дергает остальное словоP
помещает его за курсорlx
удаляет первую букву последнего словаq
останавливает запись макроса Aqb
начинается запись макроса б :99@a
выполняет макрос девяносто девять раз (вводит ограничение на количество символов)j0
позиционирует курсор в начале следующей строкиq
останавливает запись макроса b99@b
выполняет макрос b девяносто девять раз (вводит ограничение по слову)gg
позиционирует курсор на первой строке99J
объединяет следующие девяносто девять строк с пробелами (снова ограничение по числу слов)Для других 2 байтов (2 нажатия клавиш) вы можете расширить ограничение по словам до 999. Еще 4 байта, 9999 и т. Д.
источник
Шелуха ,
64 байта-2 байта благодаря Джонатану Аллану (принимая входные данные в виде списка)!
Попробуйте онлайн!
объяснение
Принимает ввод как список строк и отображает следующую функцию:
источник
Сетчатка 0.8.2 , 15 байт
Попробуйте онлайн! Примечание: завершающие пробелы. Объяснение:
Сплит на пространствах.
Добавьте его суффикс к каждой букве. Это
%
означает, что мы получаем только суффикс слова.Присоединяйтесь с пробелами.
источник
Пепе ,
167153 байтаПопробуйте онлайн!
источник
16-битный код сборки x86, 24 байта
Вызов с si = указатель на исходную строку, di = указатель на выходной буфер.
Исходная строка требует нулевого байта для ее завершения.
Код одинаков в 16-, 32- или 64-битном формате (si / di становится либо esi / edi, либо rsi / rdi).
32-битный код на два байта больше из-за расширенного вызова.
64-битный код еще на три байта больше, потому что inc / dec rsi / rdi привлекает префикс (но если известно, что они находятся в пределах 32-битного пространства памяти, то они могут быть снова esi / edi, чтобы избежать этого штрафа) ,
источник
MATL ,
1816 байтовВвод представляет собой массив слов. Попробуйте онлайн!
объяснение
источник
K4 / K (ок) , 9 байт
Решение:
Попробуйте онлайн!
Объяснение:
источник
C ++ (лязг) , 174 байта
Попробуйте онлайн!
Это мое первое представление, и я не знаю, нормально ли возвращать строку вместо печати :)
источник
return w!=""?
может бытьreturn""!=w?
.Stax , 3 байта
Запустите и отладьте его
Объяснение:
источник
Древесный уголь , 14 байтов
Попробуйте онлайн! Примечание: место в конце. Ссылка на подробную версию кода. Объяснение:
источник
C (gcc) , 79 байтов
Попробуйте онлайн!
источник
Пип
-s
, 11 байтПринимает разделенный пробелами список слов из stdin. Попробуйте онлайн!
объяснение
источник
Рубин , 42 байта
Попробуйте онлайн!
источник
Python 2 , 63 байта
Попробуйте онлайн!
источник
Холст , 6 байтов
Попробуй это здесь!
5 байтов с сумасшедшим форматом вывода
источник
C #,
11190 байтовПопробуйте онлайн!
Изменяя ввод и вывод в массивы, я сохранил несколько байтов:
Попробуйте онлайн!
источник
K (ок) ,
1713 байтПопробуйте онлайн!
Префикс анонимной функции; Ввод принимается как список строк, которые в свою очередь являются списками символов.
Спасибо @streetster за 4 байта.
Как:
источник
{|,/,\|x}'
Common Lisp , 179 байт
Попробуйте онлайн!
Это моя первая попытка игры в гольф. Любые изменения приветствуются.
источник
car
вместоfirst
иcdr
вместо того,rest
чтобы продолжить игру.Луа , 70 байт
Попробуйте онлайн!
объяснение
Аргументы в Lua хранятся в таблице,
arg
начиная с индекса 1. Унарный оператор#
возвращает размер таблицы, а функцияs:sub(a,b)
возвращает подстроку на основе строки,s
разделенной целыми числами,a
иb
, если b не передано, она возвращает остальную часть строки.Я должен был использовать
io.write()
вместо того,print()
чтобы избежать разрыва строки, и добавилprint()
в конце по противоположной причине.источник