Вызов
Возьмем три положительных целых чисел a
, b
и в c
качестве входных данных. Используя эти целые числа, сначала создайте последовательность в диапазоне [0, c]
(включительно на обоих концах), с шагом b
. Например, для a=4, b=2, c=100
последовательности будет [0,2,4,...,96,98,100]
.
Для каждого числа в этой последовательности, которое делится на a
, замените его следующей буквой в строчном алфавите, начиная с буквы «а» и возвращая к «а» после того, как вы достигнете «z».
Пример:
Вход: a=4, b=2, c=100
Выход:a2b6c10d14e18f22g26h30i34j38k42l46m50n54o58p62q66r70s74t78u82v86w90x94y98z
Правила вызова:
- Вы можете предположить, что
a
,b
иc
только положительные целые числа, гдеb ≤ a ≤ c
. - Вы можете предположить,
a
что это кратноеb
. - Вы можете предположить,
c
что делится наb
. - Предпочтительным выводом является одна конкатенированная строка, как указано выше, но список / массив также приемлем.
Тестовые случаи:
Input: a=4, b=2, c=100
Output:
a2b6c10d14e18f22g26h30i34j38k42l46m50n54o58p62q66r70s74t78u82v86w90x94y98z
Input: a=9, b=3, c=174
Output:
a36b1215c2124d3033e3942f4851g5760h6669i7578j8487k9396l102105m111114n120123o129132p138141q147150r156159s165168t174
Input: a=10, b=2, c=50
Output:
a2468b12141618c22242628d32343638e42444648f
Input: a=25, b=1, c=25
Output:
a123456789101112131415161718192021222324b
Input: a=6, b=6, c=48
Output:
abcdefghi
Input: a=6, b=3, c=48
Output: a3b9c15d21e27f33g39h45i
Input: a=2, b=1, c=100
Output: a1b3c5d7e9f11g13h15i17j19k21l23m25n27o29p31q33r35s37t39u41v43w45x47y49z51a53b55c57d59e61f63g65h67i69j71k73l75m77n79o81p83q85r87s89t91u93v95w97x99y
Я бы очень хотел увидеть ответ в PHP , но этот вызов открыт для любого языка. Это Codegolf , поэтому ответ должен быть максимально коротким. Стандартные правила применяются для функций / программ, и лазейки по умолчанию запрещены .
[codegolf]
я бы рекомендовал самый распространенный. Также упомянуто JoKing, делать это специфичным для языка не рекомендуется. Лучше всего открыть его для всех языков. Что касается самой задачи, пожалуйста, укажите немного больше и добавьте еще несколько тестов. На основании примера я вижу диапазон[0,c]
, но это должно быть ясно, не глядя на пример.'z'
до'a'
. Не могли бы вы включить тот, который делает?Ответы:
PHP , 67 байт
Прежде всего, спасибо за размещение такого крутого соревнования! Мне очень понравилось ее решение :) Вот мое 67-байтовое решение:
Чтобы запустить это:
Или попробуйте онлайн!
Вот одно и то же решение без гольфа и с пояснениями к комментариям:
Я сделал 60-байтовое решение, но оно не оборачивается :(
Попробуйте онлайн!
источник
Japt , 15 байт
Проверьте это онлайн!
объяснение
источник
c,a,b
.R ,
6563 байтаПопробуйте онлайн!
2 байта сохранены благодаря JayCe!
Возвращает список строк, так как R будет приводить числа к строкам. Для печати просто замените трейлинг
z
наcat(z,sep="")
.источник
l=
, не требуется. TIOClojure,
847977 байтДарим Лисп немного любви
Попробуйте онлайн!
(-7 байт благодаря @NikoNyrh!)
источник
#(...)
и используетеfn
для выражения внутренней. В то время как вы на него , вы можете заменитьmap
сfor
конструкцией и сохранить еще 4 байта.%1
может быть заменен%
;)Java 10,
9383 байтаПопробуйте это онлайн здесь . Спасибо Скрублу за игру в гольф 10 байтов.
Ungolfed:
источник
Perl 6 ,
6050 байтПопробуй это
Попробуй это
источник
->\a,\b,\c
: используйте просто$^a
и т. Д. Иchr 97+$++%26
немного короче, чем("a".."z")[$++%26]
. Наконец, вы можете опустить конкатенацию, потому что задача не требует этого. Это позволит сэкономить 10 байт, в результате чегоJavaScript (Node.js) , 62 байта
Попробуйте онлайн!
источник
05AB1E ,
1715 байт-2 байта благодаря @MagicOctopusUrn .
Принимает ввод в порядке
bca
.Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
источник
/ݹ*vyD³ÖiA¾è¼}?
16, просто дублируетy
вместо использованияë
, которое?
будет игнорироваться, если оно выдвигает алфавитный символ. На самом деле,/ݹ*εD³ÖiA¾è¼}?
работает даже на 15, потому что мы перезаписываем выходной массив, тогда вы можете связать текущего победителя> :).ë
.C (gcc) ,
7472 байтаПопробуйте онлайн!
источник
Python 2,
8070 байтВозвращает список, так как ОП сказал, что это приемлемо.
Совсем другой подход от другого ответа на Python 2 .
Попробуйте онлайн!
источник
CJam , 23 байта
Попробуйте онлайн!
Чтение ввода как
b a c
и отбрасывание@
будет 22 байта (не уверен, что это правильно).источник
Python 2 ,
6563 байтаВозвращает список, так как ОП сказал, что это приемлемо.
Попробуйте онлайн!
Предыдущие версии, использованные в творческом процессе (работающие задом наперед):
84 байта
Возвращает выражение генератора.
111 байт
Использует генератор для алфавита и возвращает список.
источник
next
. Ницца.PHP , 79 байт
Примечание: не слишком хорош в PHP
Попробуйте онлайн!
PHP , 84 байта
Это тот же самый код, приведенный выше, только в формате функции (поскольку вы хотели получить ответ PHP, возможно, это лучше для вас)
Попробуйте онлайн!
источник
Excel VBA, 76 байт
Принимает входной сигнал,
a
,b
, иc
из[A1]
,[B1]
и[C1]
, соответственно , затем выводит к немедленному окне VBE.источник
Python 2 , 83 байта
Попробуйте онлайн!
источник
Котлин,
8079 байтов-1 благодаря OOBalance !
Попробуйте онлайн!
Я впервые играю в гольф (или занимаюсь чем-нибудь еще) в Котлине! Вероятно, может быть улучшено.
Очень похоже на этот Java-ответ , я понял после его написания. Экономьте на
return
и теряйте на троичном для почти того же счета.источник
else
.Python3 -
111,101,98, 94 байтаВероятно, не самый короткий, но есть возможности для улучшения
Попробуйте онлайн!
источник
next(q)if x%a==0else x for x in[y*b
Древесный уголь , 22 байта
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
источник
Haskell ,
7169 байтПопробуйте онлайн!
Предыдущие 71 байт:
Попробуйте онлайн!
Объяснение:
источник
CJam ,
6463 байта ( ай )Попробуйте онлайн!
объяснение
Это, безусловно, можно сделать лучше, так что не стесняйтесь присоединиться!
изменения
Хелен отрезала байт!
Старый:
97:Y;riri:Bri\/1+,[{B*}*]{X\_@\%0={Yc\Y):Y'{i={97:Y;}&}{X\}?}fX;
Новый:
97:Y;riri:Bri\/),[{B*}*]{X\_@\%0={Yc\Y):Y'{i={97:Y;}&}{X\}?}fX;
Изменяя
1+
на)
мы можем отрезать байт.источник
Желе , 16 байт
Полная программа, принимающая аргументы,
c b a
которые выводят результат.Попробуйте онлайн!
источник
Clojure, 117 байт
Такой императив. : /
источник
C (gcc / clang),
8068 байтовПорт моего Java ответа . Попробуйте это онлайн здесь .
источник
printf(L"搥挥"+!(i%a),i%a?i:i/a%26+97)
вместоi%a?printf("%d",i):putchar(i/a%26+97)
Желе , 14 байт
Попробуйте онлайн!
источник
Python 2 и 3 -
123128 байтВам нужно будет поставить
f=
передlambda
и затем позвонить,f(a,b,c)
но я уверен, что это разрешено.источник
Рубин ,
59 5855 байтПопробуйте онлайн!
Возвращает список
источник