Diberikan string s
dan bilangan bulat positif N
, secara bertahap menduplikasi setiap karakter lebih banyak dan lebih banyak hingga N
duplikat, dan kemudian tinggal di N
duplikat hingga N
karakter menjauh dari akhir, lalu mundur lagi.
Misalnya, diberikan abalone
dan 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
dan hasilnya akan menjadi abbaaalllooonne
.
Dijamin bahwa string memiliki panjang lebih besar dari 2N
dan hanya memiliki karakter dari a
hingga z
.
Lebih banyak testcases:
N string output
2 aaaaa aaaaaaaa
3 abcdabcdabcd abbcccdddaaabbbcccdddaaabbbccd
Ini adalah kode-golf . Jawaban terpendek dalam byte menang. Celah standar berlaku.
Python 2 , 57 byte
Cobalah online!
Juga 57:
Python 2 , 57 byte
Cobalah online!
sumber
len(s[:i][:n])
? Saya yakin ada cara yang lebih pendek untuk mendapatkan nomor itu tetapi saya tidak yakin bagaimana caranya.min(len(s),i,n)
. Kerja bagus!JavaScript (ES6),
6765 byte-2 byte berkat metode Chas Brown yang lebih pendek menggunakan
min()
.Mengambil input dalam sintaks currying:
f("abalone")(3)
.Cuplikan Tes
sumber
Jelly ,
87 byteCobalah online!
Bagaimana itu bekerja
-1 byte terima kasih kepada @LeakyNun
sumber
J«¥@«U$x@
untuk 9 byte.x@⁸
sama dengan⁸x
(saya gunakan di⁸
sini)Haskell ,
6160 byteTerima kasih kepada @Laikoni karena membantu mengurangi 1 byte
Cobalah online!
Tidak Disatukan:
sumber
do
blok! Simpan byte dengan menjatuhkan tanda kurung dilength(s)
.Haskell (Lambdabot), 74 byte
Cobalah online!
sumber
>>=id
J, 24 byte
Bit dalam parens -
(<.&n<./(|.,:[)>:i.#s)
- membuat1 2 ... n n n ... 2 1
array, sebagai berikut:begitu kita memilikinya,
#
operator J secara otomatis melakukan apa yang diminta, menduplikasi setiap elemen berapa kali ditentukan.Penasaran ingin melihat perbaikan pakar J tentang ini ...
sumber
[#~#@[$([:>:<:,&:i.-)@]
(mungkin ruang yang tersangkut di sana). Saya bingung mengapa kait tidak mengambilx
tetapi tidak dalam posisi yang terlalu peduli.PHP> = 7.1, 75 byte
PHP Sandbox Online
PHP> = 7.1, 78 byte
PHP Sandbox Online
PHP> = 7.1, 80 byte
PHP Sandbox Online
sumber
Japt ,
11, 10 byteMenguji
Penjelasan
Input string
U
dan integer tersiratV
.Memetakan
U
dan mengganti setiap karakter.Dapatkan minimum
V
, ...T
(awalnya0
) bertambah 1, ...Dan indeks karakter saat ini (
E
) dikurangkan dari (n
) panjang (Ê
) dariU
.Ulangi karakter saat ini yang berkali-kali.
Keluarkan string terakhir secara tersirat.
sumber
R , 87 byte
Cobalah online!
sumber
Python 2 68 byte
sumber
f=
jawabannya; fungsinya bisa anonim. Dengan mengingat hal itu, Anda dapat menghapus 3 byte denganlambda s,n:''.join(c*min(i+1,len(s)-i,n)for i,c in enumerate(s))
.Sekam ,
109 byteCobalah online!
Baris pertama adalah fungsi utama, ia mengulangi setiap huruf n kali dan kemudian memanggil baris kedua dua kali.
Baris kedua mengambil paling banyak N huruf dari setiap kelompok huruf yang diulang, di mana N adalah indeks berbasis 1 grup, kemudian membalikkan daftar.
sumber
Haskell , 68 byte
Cobalah online!
sumber
APL (Dyalog) , 15 byte
{
…}
Berfungsi di mana argumen kiri (batas) adalah ⍺ dan argumen kanan (string) adalah ⍵ :≢⍵
hitung jumlah karakter dalam string⍳
menghasilkan banyak ɩ ntegersi←
simpan di i⌽
membalikkani⌊
berpasangan minimum dengan i⍺⌊
minimal berpasangan dengan tutupnya⍵/⍨
gunakan angka-angka itu untuk mereplikasi huruf-huruf stringCobalah online!
sumber
F # , 96 byte
Cobalah online!
Port jawaban javascript Justin Mariners
sumber
Java (OpenJDK 8) ,
10197 byteCobalah online!
Begitu banyak bermain dengan indeks ...
sumber
Abalon adalah jenis ikan (yah, kerang), karena itu ...
> <> , 79 byte
Cobalah online , atau tonton di taman bermain ikan !
Membaca string dari STDIN, dan menganggap nomor tersebut sudah ada di tumpukan.
Penjelasan: Baris kedua, keempat dan keenam adalah loop utama. Detailnya adalah beberapa manipulasi tumpukan jelek, tetapi dalam goresan lebar, pertama, baris kedua mengisi tumpukan bergantian antara karakter input dan min ( i , n ), di mana n adalah tutup panjang dan i adalah indeks karakter di input: untuk "abalone", 3, susunannya terlihat seperti
Selanjutnya, baris 4 melewati tumpukan dengan cara yang sama secara terbalik, untuk mendapatkan ujung kanan tertutup dengan benar:
Kemudian baris keenam mengambil setiap pasangan karakter-angka dan mencetak karakter sebanyak jumlah tersebut.
sumber