Вызов
Для каждого символа строки, кроме последнего, выполните следующие действия:
Выведите текущий символ.
Затем следует случайный вывод из следующего списка случайного числа раз от 1 до 5 (включительно):
- Текущий персонаж
- Следующий символ строки
- Версия переключателя персонажа, на котором вы сейчас находитесь
- Версия switchcase следующего символа строки.
Тестовые случаи
String
-> SSSTSStrTrIiinIIngn
, . , . , . Hello world!
-> ,,, .. , ,, .... , , .. .. . HHH HHEeelLlLllooO wwOworOOrrrRllDd!!D
Programming Puzzles and Code Golf
-> PrPPrRrOooooogggRgGraAraaaMMMmmmimMIiininGGgG PPPPuZzZZzZzzZzllLLEEeEsEsssS a aANnNddD C COCoooOOdeDe E GGGoOllFFf
Примечания
- Вам нужно только применить версию символа переключения, если символ является частью алфавита (AZ и az).
- Ваша случайная функция не обязательно должна быть однородной, но она все же должна иметь шанс вернуть любой элемент в указанном списке.
- Вам разрешено использовать любой стандартный формат ввода / вывода.
- Вы можете предположить, что длина ввода больше или равна двум.
- Вы можете предположить, что ввод состоит только из символов ASCII.
- Заголовок не является контрольным примером (он непреднамеренный, если он является допустимым контрольным примером).
- Switchcase означает переводить символ в нижний регистр, если он является прописным, и переводить его в верхний регистр, если он строчный.
String
производитSSSTSStrTrIiinIIngn
[S]SSTSS [t]rT, [r]I, [i]inII, [n]gn
где символы между блоками являются первыми точками маркера (« Вывести текущий символ »), а другие символы случайным образом 1-5 раз один из четырех вариантов для этого персонаж. Но я согласен, некоторые более четкие объяснения были бы уместны. Помимо тестового примера, было не совсем понятно, нужно ли выбирать случайный выбор 1-5 раз. Вместо того, чтобы выбирать случайный выбор, повторяемый 1-5 раз (как в настоящее время делает ответ Gaia).Ответы:
Gaia , 25 байт
Попробуйте онлайн!
Спасибо Кевину Круйссену за указание на 2 ошибки!
Обратите внимание, что
4ṛ
это потому, чтоṛ
реализовано для целого числаz
как Pythonrandom.randint(1,z+1)
, которое возвращает целое число,N
такое что1<=N<=z+1
.источник
SSSTSStrTrIiinIIngn
([SSSTSS, trT, rI, iinII, ngn]
), кажется, отражает это, и в настоящее время не является возможным выводом в вашей программе (я думаю).5ṛ
может привести6
по какой-то причине Попробуйте онлайн ? PS: Разве в Gaia нет целочисленного или ранжированного списка?for
конструкция типа, но я почти уверен,ₓ
что это даже не задокументировано на вики-странице.APL (dzaima / APL) , 23 байта
Функция анонимного молчаливого префикса.
Попробуйте онлайн!
2(
…)/
Применить следующую инфиксную молчаливую функцию между каждой парой символов:-
switchcase⍤
из,
конкатенации пары,,
присоединить конкатенацию пары к этому{
…}⊇
Выберите из этого следующие элементы:?5
случайное число в диапазоне 1… 54⍴⍨
что много четверок?
случайные индексы для тех∊
ε NLIST (Flatten)источник
Perl 6 , 60 байт
Попробуйте онлайн!
Строчная / прописная часть немного раздражает.
источник
$/
и$0
вместе и использовать.lc
в этой строке, а затем создать копию этой строки и использовать.uc
и объединить эти два вместе? Не уверен , если это вообще возможно, или короче , чем ток$/.lc,$/.uc,$0.lc,$0.uc
, но это означало бы , вы бы использовать$/
,$0
,.lc
и.uc
один раз.(.lc~.uc for $0~$/).comb
дольше. Perl 6 действительно хочет различать строки и списки, поэтому"abc"[0] eq "abc"
(он претендует на то, чтобы быть списком из одного элемента).{.lc,|.uc}($/,|$0)
для -5 байтов, и просто используйте список совпадений{.lc,|.uc}(@$/)
для -8 байтов. tio.run/…Желе , 12 байт
Попробуйте онлайн!
источник
Баш , 121 байт
-20 байт благодаря Науэлю
-9 байт благодаря roblogic
Попробуйте онлайн!
Оригинальный ответ
удар , 150 байт
Сделали очень мало ударов по гольфу и пытались улучшить мой удар, поэтому любые комментарии приветствуются.
Попробуйте онлайн!
Код - это простой цикл по символам, задающий текущий
c
и следующийn
символ, затем создающий массив из 4-х возможностей, повторяя одну из них, чтобы получилось ровно 5. Затем мы перетасовываем этот массив, а затем выбираем из него n элементов, где само n случайно между 1 и 5.источник
printf %s "$c"
do
иdone
могут быть заменены недокументированными{
и}
Python 2 , 107 байт
Попробуйте онлайн!
источник
05AB1E ,
1817 байтВдохновленный ответом Gaia @Giuseppe .
-1 байт благодаря @Shaggy .
Попробуйте онлайн 10 раз или проверьте все тесты 10 раз .
Объяснение:
источник
INè
вы могли бы сохранить что-либо, нажав первый символy
?¨vNUy5LΩFy¹X>è«D.š«Ω?
t
,T
илиs
для ввода"String"
в вашей программе, в то время как он должен всегда начинаться сS
.Древесный уголь , 27 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Цикл по всем индексам входной строки.
За исключением первого индекса, переберите случайное число от 1 до 5 включительно ...
... извлечь из строки предыдущий и следующий символы, взять версии в верхнем и нижнем регистре и выбрать случайный символ из четырех.
Распечатать символ по текущему индексу.
источник
Perl 5 (
-p
), 77 байтTIO
источник
$&
вместо$1
, иchop
+-l
вместоs/.$//
Japt
-P
, 14 байтПопытайся
источник
Python 3 , 167 байт
Попробуйте онлайн!
источник
Желе , 14 байт
Попробуйте онлайн!
объяснение
источник
C (GCC)
175162 байта-12 байт от LambdaBeta
Попробуйте онлайн
источник
0
в первой строке.S
в качестве параметра и добавив переменные в список аргументов: попробуйте онлайн!0
, что сделало его#define
болееPowerShell ,
1541051039587 байт-67 байт благодаря маззи, которого невозможно остановить
Попробуйте онлайн!
Не фантастический метод, но он работает.Теперь это довольно хорошо. Вводит через сплаттингисточник
Scala 2.12.8, 214 байт
Гольф версия:
Гольф с новыми строками и отступами:
Ungolfed:
источник
a :: b :: Nil
вa::b::Nil
? То же самое дляa :+
,a:+()
илиa.:+()
может работатьa::b::Nil
вызывает ошибку компиляции.+:
метод определен в списке, так что он может сэкономить место, избавившись от внешних паренов?Perl 5
-n
, 61 байтПопробуйте онлайн!
источник
C # (интерактивный компилятор Visual C #) ,
236213209 байтПопробуйте онлайн!
источник
char b=a[0]
->var b=a[0]
, дополнительное пространство в объявлении циклаd
forЗапрос T-SQL, 286 байт
Попробуйте онлайн, к сожалению, онлайн-версия всегда показывает один и тот же результат для одного и того же varchar, в отличие от MS SQL Server Management Studio
источник
C # (интерактивный компилятор Visual C #) , 156 байт
Попробуйте онлайн!
источник
Japt
-P
,4316 байтУкорочено много сейчас!
Попытайся
источник
ä
описании говорится, что он дает три аргумента, с последнимx+y
. Но, как вы можете видеть здесь , он просто возвращает 1. Это ошибка?C (gcc) ,
110109 байтовПопробуйте онлайн!
-1 благодаря потолку
Количество напечатанных символов (на входной символ) не является случайным:
источник
Зш,
113107 байтС большой помощью
man zshexpn
иman zshparam
. Попробуйте онлайн!источник