Biorąc pod uwagę ciąg s
i dodatnią liczbę całkowitą N
, stopniowo duplikuj każdy znak coraz bardziej aż do N
duplikowania, a następnie pozostając w N
duplikatach aż do N
znaków oddalających się od końca, a następnie ponownie zejdź na dół.
Na przykład dane abalone
i 3
:
a we start with 1 copy
bb then 2 copies
aaa then 3 copies, which is our second parameter
lll so we continue using 3 copies
ooo until we reach the end
nn where we use 2 copies
e and then finally 1 copy
i wynik byłby abbaaalllooonne
.
Jest gwarantowane, że łańcuch ma długość większą niż 2N
i ma tylko znaki od a
do z
.
Więcej przypadków testowych:
N string output
2 aaaaa aaaaaaaa
3 abcdabcdabcd abbcccdddaaabbbcccdddaaabbbccd
To jest golf golfowy . Najkrótsza odpowiedź w bajtach wygrywa. Obowiązują standardowe luki .
Python 2 , 57 bajtów
Wypróbuj online!
Również 57:
Python 2 , 57 bajtów
Wypróbuj online!
źródło
len(s[:i][:n])
? Jestem przekonany, że istnieje krótszy sposób na uzyskanie tej liczby, ale nie jestem pewien, jak to zrobić.min(len(s),i,n)
. Dobra robota!JavaScript (ES6),
6765 bajtów-2 bajty dzięki krótszym sposób Chás Browna użyciem
min()
.Trwa wejście w składni currying:
f("abalone")(3)
.Test Snippet
źródło
Galaretka ,
87 bajtówWypróbuj online!
Jak to działa
-1 bajt dzięki @LeakyNun
źródło
J«¥@«U$x@
dla 9 bajtów.x@⁸
jest ekwiwalentny⁸x
(użyłem⁸
tutaj)Haskell ,
6160 bajtówDzięki @Laikoni za pomoc w goleniu 1 bajtu
Wypróbuj online!
Nie golfowany:
źródło
do
bloku! Zapisz bajt, upuszczając nawias wlength(s)
.Haskell (Lambdabot), 74 bajty
Wypróbuj online!
źródło
>>=id
J, 24 bajty
Bit w parens -
(<.&n<./(|.,:[)>:i.#s)
- tworzy1 2 ... n n n ... 2 1
tablicę w następujący sposób:gdy już to mamy,
#
operator J automatycznie robi dokładnie to, o co prosił, duplikując każdy element określoną liczbę razy.Ciekawe, jak udoskonalił się ekspert J w tym ...
źródło
[#~#@[$([:>:<:,&:i.-)@]
(być może złapano tam zbłąkane miejsce). Nie wiem, dlaczego haczyk nie bierze,x
ale nie jest w stanie za bardzo się tym przejmować.PHP> = 7,1, 75 bajtów
PHP Sandbox Online
PHP> = 7,1, 78 bajtów
PHP Sandbox Online
PHP> = 7,1, 80 bajtów
PHP Sandbox Online
źródło
Japt ,
1110 bajtówSprawdź to
Wyjaśnienie
Domniemane wprowadzanie ciągu
U
i liczby całkowitejV
.Zamapuj
U
i zamień każdą postać.Uzyskaj minimum
V
...T
(początkowo0
) zwiększany o 1, ...Indeks bieżącego znaku (
E
) odjął od (n
) długości (Ê
) zU
.Powtórz obecną postać wiele razy.
Niejawnie wyprowadza ostatni ciąg.
źródło
R , 87 bajtów
Wypróbuj online!
źródło
Python 2 68 bajtów
źródło
f=
odpowiedzi; funkcja może być anonimowa. Mając to na uwadze, możesz usunąć 3 bajty za pomocąlambda s,n:''.join(c*min(i+1,len(s)-i,n)for i,c in enumerate(s))
.Łuska ,
109 bajtówWypróbuj online!
Pierwszy wiersz jest główną funkcją, powtarza każdą literę n razy, a następnie wywołuje drugi wiersz dwukrotnie.
Drugi wiersz zajmuje najwyżej N liter z każdej grupy powtarzanych liter, gdzie N jest indeksem grupy opartym na 1, a następnie odwraca listę.
źródło
Haskell , 68 bajtów
Wypróbuj online!
źródło
APL (Dyalog) , 15 bajtów
{
…}
Funkcja, w której lewy argument (cap) to ⍺, a prawy argument (string) to ⍵ :≢⍵
policzyć liczbę znaków w ciągu⍳
wygenerować tyle liczb całkowitychi←
przechowywać w i⌽
rewersi⌊
minimum parowe z i⍺⌊
minimum w parach z czapką⍵/⍨
użyj tych liczb, aby powielić litery ciąguWypróbuj online!
źródło
F # , 96 bajtów
Wypróbuj online!
Port odpowiedzi javascript na Justin Mariners
źródło
Java (OpenJDK 8) ,
10197 bajtówWypróbuj online!
Tyle zabawy z indeksami ...
źródło
Abalone to rodzaj ryby (cóż, skorupiaki), dlatego…
> <> , 79 bajtów
Wypróbuj online lub obejrzyj na placu zabaw dla ryb !
Odczytuje ciąg ze STDIN i zakłada, że liczba jest już na stosie.
Objaśnienie: Druga, czwarta i szósta linia to główne pętle. Szczegółami są niektóre brzydkie manipulacje na stosie, ale w szerokich pociągnięciach, po pierwsze, druga linia wypełnia stos na przemian między znakiem wejścia i min ( i , n ), gdzie n jest ograniczeniem długości, a i jest indeksem znaku w wejście: dla „abalone”, 3, wygląda stos
Następnie linia 4 przechodzi przez stos w ten sam sposób w odwrotnej kolejności, aby poprawnie zakryć prawy koniec:
Następnie szósta linia pobiera każdą parę znak-liczba i wypisuje znak tyle razy, ile liczba.
źródło