Wyzwanie
Bierzemy trzy liczby całkowite dodatnie a
, b
i c
jako wejście. Używając tych liczb całkowitych, najpierw utwórz sekwencję w zakresie [0, c]
(włącznie na obu końcach), w krokach co b
. Na przykład a=4, b=2, c=100
sekwencją będzie [0,2,4,...,96,98,100]
.
Dla każdej liczby w tej sekwencji, która jest podzielna przez a
, zastąp ją następną literą małymi literami, zaczynając od litery „a” i zawijając z powrotem do „a” po osiągnięciu „z”.
Przykład:
Wejście: a=4, b=2, c=100
Wyjście:a2b6c10d14e18f22g26h30i34j38k42l46m50n54o58p62q66r70s74t78u82v86w90x94y98z
Zasady konkursu:
- Można założyć, że
a
,b
ic
są dodatnimi liczbami całkowitymi tylko, gdzieb ≤ a ≤ c
. - Możesz założyć, że
a
jest wielokrotnościąb
. - Możesz założyć, że
c
jest podzielny przezb
. - Preferowanym wyjściem jest pojedynczy połączony ciąg, jak wyżej, ale dopuszczalna jest również lista / tablica.
Przypadki testowe:
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
Naprawdę chciałbym zobaczyć odpowiedź w PHP , ale to wyzwanie jest otwarte na każdy język. To jest codegolf , więc odpowiedź powinna być jak najkrótsza. Obowiązują standardowe zasady dla funkcji / programów, a domyślne luki są zabronione .
[codegolf]
jest najczęściej polecany. Wspomniany również przez JoKing, dlatego nie jest zalecane, aby był on specyficzny dla danego języka. Zamiast tego najlepiej jest otworzyć go na wszystkie języki. Jeśli chodzi o samo wyzwanie, proszę podać nieco więcej i dodać kilka kolejnych przypadków testowych. Na podstawie przykładu widzę, że zakres jest[0,c]
, ale powinno to być jasne bez patrzenia na przykład.'z'
do'a'
. Czy możesz podać taki, który to robi?Odpowiedzi:
PHP , 67 bajtów
Przede wszystkim dzięki za postawienie tak fajnego wyzwania! Naprawdę podobało mi się jego rozwiązanie :) Oto moje 67-bajtowe rozwiązanie:
Aby uruchomić:
Lub wypróbuj online!
Oto to samo rozwiązanie bez golfa i komentarze wyjaśniające:
Zrobiłem rozwiązanie 60-bajtowe, ale nie zawija się :(
Wypróbuj online!
źródło
Japt , 15 bajtów
Przetestuj online!
Wyjaśnienie
źródło
c,a,b
.R ,
6563 bajtówWypróbuj online!
2 bajty zapisane dzięki JayCe!
Zwraca listę ciągów, ponieważ R zmusi liczby do ciągów. Do druku, po prostu zastąpić końcowego znaku
z
zcat(z,sep="")
.źródło
l=
to, że nie jest wymagane. TIOClojure,
847977 bajtówDając trochę miłości
Wypróbuj online!
(-7 bajtów dzięki @NikoNyrh!)
źródło
#(...)
i użyjeszfn
do wyrażenia wewnętrznej. Podczas gdy jesteś na to można zastąpićmap
zfor
konstruktem i zapisz kolejne 4 bajty.%1
można go zastąpić%
;)Java 10,
9383 bajtyWypróbuj online tutaj . Dzięki Scrooble za grę w golfa 10 bajtów.
Nie golfowany:
źródło
Perl 6 ,
6050 bajtówSprawdź to
Sprawdź to
źródło
->\a,\b,\c
: użyj po prostu$^a
itd. Ichr 97+$++%26
jest nieco krótszy niż("a".."z")[$++%26]
. Wreszcie możesz pominąć konkatenację, ponieważ wyzwanie nie wymaga tego. Pozwoliłoby to zaoszczędzić w sumie 10 bajtów, pozostawiając 50JavaScript (Node.js) , 62 bajty
Wypróbuj online!
źródło
05AB1E ,
1715 bajtów-2 bajty dzięki @MagicOctopusUrn .
Pobiera dane wejściowe w kolejności
bca
.Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
/ݹ*vyD³ÖiA¾è¼}?
ma 16, po prostu powielay
zamiast zamiastë
, co?
zignoruje, jeśli wypchnie znak alfabetu. Właściwie/ݹ*εD³ÖiA¾è¼}?
działa nawet dla 15, ponieważ przesadzamy tablicę wyjściową, możesz powiązać aktualnego zwycięzcę> :).ë
.C (gcc) ,
7472 bajtówWypróbuj online!
źródło
Python 2,
8070 bajtówZwraca listę, ponieważ PO stwierdził, że jest to dopuszczalne.
Zupełnie inne podejście od drugiej odpowiedzi w Python 2 .
Wypróbuj online!
źródło
CJam , 23 bajty
Wypróbuj online!
Odczytywanie danych wejściowych
b a c
i upuszczanie ich@
wynosi 22 bajty (nie jestem pewien, czy jest to poprawne).źródło
Python 2 ,
6563 bajtówZwraca listę, ponieważ PO stwierdził, że jest to dopuszczalne.
Wypróbuj online!
Poprzednie wersje używane podczas procesu twórczego (praca wstecz):
84 bajtów
Zwraca wyrażenie generatora.
111 bajtów
Używa generatora alfabetu i zwraca listę.
źródło
next
. Miły.PHP , 79 bajtów
Uwaga: niezbyt dobry w PHP
Wypróbuj online!
PHP , 84 bajty
To jest ten sam powyższy kod tylko w formacie funkcji (ponieważ chciałeś odpowiedzi PHP, może to jest dla ciebie lepsze)
Wypróbuj online!
źródło
Excel VBA, 76 bajtów
Staje wejściowego
a
,b
ic
z[A1]
,[B1]
i[C1]
, odpowiednio, a następnie wysyła do bezpośredniego okna VBE.źródło
Python 2 , 83 bajty
Wypróbuj online!
źródło
Kotlin,
8079 bajtów-1 dzięki OOBalance !
Wypróbuj online!
Mój pierwszy raz gra w golfa (lub cokolwiek innego) w Kotlinie! Prawdopodobnie można to poprawić.
Bardzo podobna do tej odpowiedzi Java , zdałem sobie sprawę po jej napisaniu. Oszczędzaj
return
i przegrywaj trójskładnikowy za prawie taki sam wynik.źródło
else
.Python 3 -
111,101,98, 94 bajtówPrawdopodobnie nie najkrótszy, ale jest miejsce na ulepszenia
Wypróbuj online!
źródło
next(q)if x%a==0else x for x in[y*b
Węgiel , 22 bajty
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
źródło
Haskell ,
7169 bajtówWypróbuj online!
Poprzednie 71 bajtów:
Wypróbuj online!
Wyjaśnienie:
źródło
CJam ,
6463 bajtów ( ouch )Wypróbuj online!
Wyjaśnienie
Można to zdecydowanie poprawić, więc dołącz do nas!
Zmiany
Helen odcięła bajt!
Stary:
97:Y;riri:Bri\/1+,[{B*}*]{X\_@\%0={Yc\Y):Y'{i={97:Y;}&}{X\}?}fX;
nowy:
97:Y;riri:Bri\/),[{B*}*]{X\_@\%0={Yc\Y):Y'{i={97:Y;}&}{X\}?}fX;
Zmieniając
1+
na)
, możemy odciąć bajt.źródło
Galaretka , 16 bajtów
Pełny program przyjmujący argumenty,
c b a
które wypisują wynik.Wypróbuj online!
źródło
Clojure, 117 bajtów
Taki imperatyw. : /
źródło
C (gcc / clang),
8068 bajtówPort mojej odpowiedzi Java . Wypróbuj online tutaj .
źródło
printf(L"搥挥"+!(i%a),i%a?i:i/a%26+97)
zamiasti%a?printf("%d",i):putchar(i/a%26+97)
Galaretka , 14 bajtów
Wypróbuj online!
źródło
Python 2 i 3 -
123128 bajtówMusisz postawić
f=
przed,lambda
a następnie zadzwonić,f(a,b,c)
ale jestem pewien, że jest to dozwolone.źródło
Ruby ,
59 5855 bajtówWypróbuj online!
Zwraca listę
źródło