Lipat gandakan string dengan angka!

34

Ada tantangan beberapa waktu lalu tentang mengalikan string. Ini menunjukkan kepada kita bagaimana kita dapat mengalikan bukan hanya angka, tetapi juga string. Namun, kami masih tidak dapat mengalikan angka dengan string dengan benar. Ada satu upaya untuk melakukannya tetapi ini jelas salah. Kita harus memperbaikinya!

Tugas Anda:

Tulis fungsi atau program yang mengalikan dua input, string dan integer. Untuk (dengan benar) mengalikan string dengan integer, Anda membagi string menjadi karakter, ulangi setiap karakter beberapa kali sama dengan integer, dan kemudian menempelkan kembali karakter tersebut. Jika bilangan bulat negatif, kami menggunakan nilai absolutnya di langkah pertama, dan kemudian membalikkan string. Jika inputnya 0, tidak menghasilkan apa-apa (apa pun yang dikalikan dengan 0 sama dengan tidak sama sekali).

Memasukkan:

String yang hanya terdiri dari karakter dan baris ASCII yang dapat dicetak, dan integer (mungkin negatif).

Keluaran:

String dikalikan dengan integer.

Contoh:

Hello World!, 3            --> HHHeeellllllooo   WWWooorrrlllddd!!!
foo, 12                    --> ffffffffffffoooooooooooooooooooooooo
String, -3                 --> gggnnniiirrrtttSSS
This is a fun challenge, 0 --> 
Hello
World!, 2                  --> HHeelllloo

                               WWoorrlldd!!

Mencetak:

Ini adalah , kemenangan jumlah byte terendah!

Gryphon - Pasang kembali Monica
sumber
4
Bisakah kita menganggap string hanya bisa dicetak ASCII, ditambah baris baru?
mbomb007
Bisakah kita menampilkan daftar string?
totallyhuman
Solusi parsial dalam Retina. Hanya berfungsi untuk nilai positif bilangan bulat. Saya mungkin tidak akan meluangkan waktu untuk menyelesaikannya jika seseorang mau. tio.run/##K0otycxL/P8/…
mbomb007
@ mbomb007, ya, maaf sudah terlalu lama tentang itu.
Gryphon - Reinstate Monica
@ sebenarnya manusia, tidak, Anda tidak mungkin.
Gryphon - Pasang kembali Monica

Jawaban:

31

Jelly , 6 5 4 byte

²Ɠxm

Cobalah online!

Bagaimana itu bekerja

²Ɠxm  Main link. Argument: n (integer)

²     Yield n².
 Ɠ    Read and eval one line of input. This yields a string s.
  x   Repeat the characters of s in-place, each one n² times.
   m  Takes each |n|-th character of the result, starting with the first if n > 0, 
      the last if n < 0.
Dennis
sumber
1
Oke, sekarang saya benar-benar terkesan. Saya ingin penjelasan tentang keajaiban ini dalam miniatur.
Gryphon - Reinstate Monica
Yakin. Segera setelah saya membuat test suite dan saya selesai bermain golf.
Dennis
4
OK, jika Anda dapat membuat ini lebih kecil, saya akan menyerah mencoba membuat pertanyaan yang akan membawa Anda> 10 byte.
Gryphon - Pasang kembali Monica
13
OK, itu saja. Saya belajar Jelly. Saya ingin bisa melakukan sihir juga.
Gryphon - Reinstate Monica
2
Kita semua tahu bagaimana diskusi tentang rantai Jelly berakhir berantakan ...
Erik the Outgolfer
9

JavaScript (ES6), 63 byte

Mengambil input dalam sintaks currying (s)(n).

s=>n=>[...s].reduce((s,c)=>n<0?c.repeat(-n)+s:s+c.repeat(n),'')

Uji kasus

Arnauld
sumber
3
+1 untuk reduce!
Neil
9

Python 3 , 44 byte

f=lambda s,n:s and s[0]*n+f(s[1:],n)+s[0]*-n

Cobalah online!

Dennis
sumber
Kasus dasar tampaknya mengabaikan karakter terakhir.
xnor
Tidak yakin mengapa saya melakukan itu ... Terima kasih!
Dennis
1
41 byte . tetapi idk jika fungsi panggilan seperti f(n,*s)yang dianggap valid
Felipe Nardi Batista
9

Python 2 , 59 57 50 46 byte

-2 byte berkat Anders Kaseorg. -4 byte terima kasih kepada Dennis.

lambda s,n:''.join(i*n**2for i in s)[::n or 1]

Cobalah online!

benar-benar manusiawi
sumber
6

05AB1E , 10 byte

S²Ä×J²0‹iR

Cobalah online!

S          # Split the string into characters
 ²Ä×       # Repeat each character abs(integer) times
    J      # Join into a string
     ²0‹i  # If the integer is less than 0...
         R #   Reverse the string
Riley
sumber
TFW Anda menghabiskan 30 menit untuk mencoba menemukan sesuatu untuk membuktikan kepada @Riley itu ²0‹ibukan rute terbaik dan datang dengan 0 alternatif.
Magic Gurita Guci
@ MagicOctopusUrn Saya telah menggunakan sesuatu seperti ²0‹isebelumnya dan saya selalu berpikir harus ada sesuatu yang lebih baik.
Riley
Saya pikir saya sudah mencoba mencari alternatif sekitar 10 kali sekarang ... membuang 3 jam kumulatif hidup saya ._. Ä.D)øJ¹0‹iRadalah yang terbaik yang bisa saya lakukan tanpa menyalin Anda, saya pikir Anda dioptimalkan.
Magic Gurita Guci
Jika Anda peduli, Emigna digunakan di è sini , meskipun saya tidak dapat menemukan cara untuk menerapkannya dalam skenario ini. Akan menghemat maksimal 1 byte, jika itu.
Magic Gurita Guci
SÂΛ@²Ä×J, gunakan Îuntuk menekan 0 dan input berfungsi jika Anda mengubah urutan. Menghemat 1 byte! (Juga diganti jika, jadi tidak perlu ditutup)
kalsowerus
5

MATL , 9 byte

y|Y"w0<?P

Inputnya adalah: angka, lalu string.

String dengan baris baru adalah input menggunakan arang 10sebagai berikut: ['first line' 10 'second line'].

Cobalah online! Atau verifikasi semua kasus uji .

Penjelasan

Pertimbangkan input -3dan 'String'.

y      % Implicitly take two inputs. Duplicate from below
       % STACK: -3, 'String', -3
|      % Absolute value
       % STACK: -3, 'String', 3
Y"     % Run-length decoding
       % STACK: -3, 'SSStttrrriiinnnggg'
w      % Swap
       % STACK: 'SSStttrrriiinnnggg', -3
0<     % Less than 0?
       % STACK: 'SSStttrrriiinnnggg', 1
?      % If so
  P    %   Flip
       %   STACK: 'gggnnniiirrrtttSSS'
       % End (implicit). Display (implicit)
Luis Mendo
sumber
5

Haskell , 41 36 byte

f n|n<0=reverse.f(-n)|1<3=(<*[1..n])

Cobalah online!

Contoh penggunaan: f (-3) "abc"hasil "cccbbbaaa".

Edit: -5 byte terima kasih kepada xnor!

Laikoni
sumber
1
Ada (<*[1..n])untuk ((<$[1..n])=<<).
xnor
@ Terima kasih! Senang mendengarnya.
Laikoni
5

V , 29, 23, 18 , 17 byte

æ_ñÀuñÓ./&ò
ÀäëÍî

Cobalah online!

Hexdump:

00000000: e65f f1c0 75f1 d32e 2f26 f20a c0e4 ebcd  ._..u.../&......
00000010: ee                                       .

Terima kasih kepada @ nmjcman101 untuk menghemat 6 byte, yang mendorong saya untuk menyimpan 5 byte lagi!

Revisi asli cukup mengerikan, tetapi sekarang saya sangat bangga dengan jawaban ini karena ternyata angka negatifnya sangat baik. (V tidak memiliki dukungan numerik dan tidak ada dukungan untuk angka negatif)

Penjelasan:

æ_          " Reverse the input
  ñ  ñ      " In a macro:
   À        "   Run the arg input. If it's positive it'll give a count. If it's negative
            "   running the '-' will cause V to go up a line which will fail since we're
            "   on the first line, which will break out of this macro
    u       "   (if arg is positive) Undo the last command (un-reverse the line)
      Ó./&ò " Put every character on it's own line

Pada titik ini, buffer terlihat seperti ini:

H
e
l
l
o

w
o
r
l
d
!
<cursor>

Penting untuk tidak mengikuti baris baru, dan bahwa kursor ada di sana.

À           " Run arg again. If it's negative, we will move up a line, and then give the 
            " absolute value of the count. If it's positive (or 0) it'll just give the
            " count directly (staying on the last line)
 ä          " Duplicate... (count times)
  ë         "   This column. 
   Íî       " Remove all newlines.
DJMcMayhem
sumber
Beberapa byte untukmu. Coba online! Saya selalu membenci "Angka negatif berarti sesuatu yang lain!" case tepi juga. Ini adalah kasus di mana kasing 0khusus Anda di V sangat berguna.
nmjcman101
Maaf tentang angka negatif spesial. Namun, banyak jawaban berhasil memasukkannya ke dalam jawaban utama mereka. Mengesankan pada V yang satu ini.
Gryphon - Reinstate Monica
@ nmjcman101 Oh wow, itu sudah sangat jelas, saya tidak tahu bagaimana saya tidak memikirkannya. Terima kasih!
DJMcMayhem
@Gryphon Oh saya tahu. Tantangannya baik-baik saja, saya hanya tidak suka bahasa saya sendiri karena begitu buruk pada apa yang seharusnya menjadi baik. : P
DJMcMayhem
5

R, 83 78 76 byte

function(s,i)cat('if'(i<0,rev,`(`)(rep(el(strsplit(s,'')),e=abs(i))),sep='')

Fungsi anonim.

Frederic menyelamatkan 3 byte, Giuseppe menyelamatkan 2 4.

Penjelasan:

     el(strsplit(s,''))                      # split string into list characters
 rep(                  ,e=abs(i)))           # repeat each character abs(i) times


    'if'(i<0,rev,   ){...}                 # if i>0, reverse character list
                 `(`                       # otherwise leave it alone: `(` is the identity function
cat(                      ,sep='')         # print the result

Tes:

> f('Hello World!', 3 )
HHHeeellllllooo   WWWooorrrlllddd!!!
> f('foo', 12)
ffffffffffffoooooooooooooooooooooooo
> f('String', -3)
gggnnniiirrrtttSSS
> f('This is a fun challenge', 0)
> f('Hello
+ World!', 2)
HHeelllloo

WWoorrlldd!!
BLT
sumber
2
Sudah selesai dilakukan dengan baik ! Anda dapat menyimpan beberapa byte dengan menulis rep(foo,,,3)atau rep(foo,e=3)(panjang yang sama) ;-)
Frédéric
@ Frédéric Anda mengalahkan saya untuk itu, saya akan mengatakan hal yang sama!
Giuseppe
1
ya, tidak masalah! Pada dasarnya, saya ingin menyingkirkan kawat gigi, jadi saya harus menyingkirkannya a=. Oleh karena itu, saya menggunakan nilai asebagai argumen ke fungsi sebaliknya jika i<0, dengan meminta kembali fungsi tersebut (itulah sebabnya saya membutuhkan backquote). Tapi saya perlu juga menerapkan fungsi identitas untuk i>=0kasus ini, jadi saya menggunakan (yang cukup dekat. (sebenarnya fungsi. R aneh.
Giuseppe
1
Namun, dokumen untuk Paren mengatakan bahwa (secara semantik setara dengan identitasfunction(x)x
Giuseppe
1
76 byte
Giuseppe
4

05AB1E , 10 byte

0‹FR}ʒ¹Ä×?

Cobalah online!

Penjelasan

0‹F         # input_1 < 0 times do:
   R        # reverse input_2
    }       # end loop
     ʒ      # filter
      ¹Ä×   # repeat current char abs(input_1) times
         ?  # print without newline
Emigna
sumber
4

PHP> = 7.1, 65 byte

for([,$s,$n]=$argv;$i<strlen($s)*abs($n);)echo$s[$i++/$n-($n<0)];

PHP Sandbox Online

Jörg Hülsermann
sumber
1
Dalam konteks bilangan bulat, $n<0memiliki nilai yang sama dengan $n<0?:0tetapi lebih pendek 3 byte :-)
axiac
4

Brain-Flak (BrainHack) , 154 152 byte

([(({})(<()>))]<>)<>{({}()<([{}]()<([{}])>)<>({}<>)<>>)<>}{}<>{}<>({}<([][()]){{}({<({}<(({}<>)<>)>())>[()]}<{}{}>)([][()])}{}{}<>>){{}{({}<>)<>}(<>)}{}

Cobalah online!

Hanya di sini untuk memberikan beberapa kompetisi DJMcMayhem. ;)

Penjelasan

Inilah versi modifikasi dari penjelasan DJMcMayhem

#Compute the sign and negative absolute value 
([(({})<(())>)]<>)<>{({}()<([{}]()<([{}])>)<>({}<>)<>>)<>}{}<>{}<>

#Keep track of the sign
({}<

    #For each char in the input string:
    ([][()])
    {
        {}

        #Push n copies to the alternate stack
        ({<({}<(({}<>)<>)>())>[()]}<{}{}>)

        #Endwhile
        ([][()])
    }{}{}<>

#Push the sign back on
>)

#If so...
{{}

    #Reverse the whole stack
    {({}<>)<>}

    #And toggle over, ending the loop
    (<>)
}

#Pop the counter off
{}
Wisaya Gandum
sumber
4

J , 19 15 13 byte

(#~|)A.~0-@>]

Cobalah online!

Penjelasan

        0-@>]      NB. first or last index depending on sign of right arg
     A.~           NB. get first or last Anagram of left arg
(#~|)              NB. copy left arg, absolute-value-of-right-arg times
Tikkanz
sumber
2
(#~|)A.~0-@>]untuk 13 byte
mil
@Miles sangat bagus!
Tikkanz
Tidak masalah. Anda juga tidak perlu menghitung tanda kurung yang digunakan untuk memanggil kata kerja.
mil
1
Juga 13 byte:#~ ::(|.@#~|)
FrownyFrog
3

Dyalog APL, 15 byte

{⌽⍣(⍵<0)⊢⍺/⍨|⍵}

String sebagai argumen kiri, angka sebagai argumen kanan.

Cobalah online!

Bagaimana?

⍺/⍨ - ulangi string

|⍵ - abs (jumlah) kali

⌽⍣ - balikkan jika

(⍵<0) - jumlahnya di bawah 0

Uriel
sumber
Umm, alangkah baiknya jika TIO suka bekerja?
Gryphon - Reinstate Monica
@Gryphon dan ini dia byte ...
Uriel
Yap, saya baru menyadari itu dan sedang mengetik komentar saya untuk memberi tahu Anda.
Gryphon - Reinstate Monica
3

MATLAB, 37 byte

@(s,n)flip(repelem(s,abs(n)),(n<0)+1)

Ini mendefinisikan dan fungsi anonim dengan input s: string dan n: nomor.

Contoh berjalan:

>> @(s,n)flip(repelem(s,abs(n)),(n<0)+1)
ans = 
    @(s,n)flip(repelem(s,abs(n)),(n<0)+1)

>> f = ans;

>> f('String', 3)
ans =
SSStttrrriiinnnggg

>> f('String', -3)
ans =
gggnnniiirrrtttSSS

>> f('String', 0)
ans =
   Empty matrix: 1-by-0
Luis Mendo
sumber
Memilih dimensi mana untuk dibalik adalah jauh lebih baik daripada kekacauan yang saya tulis 😛 +1. dan aku selalu lupa repelemada.
Stewie Griffin
@StewieGriffin Baiklah, Anda bisa memasukkannya dalam jawaban Anda juga :-) (sudah +1). Saya pikir tidak ada repelemdi Octave, untuk saat ini
Luis Mendo
3

Brain-Flak (Haskell) , 202 192 byte

(({})<(([({})]<>)){({}()<([{}])<>({}<>)<>>)<>}{}([{}]<><{}>)([][()]){{}({<({}<(({}<>)<>)>[()])>()}<{}{}>)([][()])}{}{}<>>)([({}<(())>)](<>)){({}())<>}{}{((<{}>))<>{}}{}<>{}{{}{({}<>)<>}(<>)}{}

Cobalah online!

Ini mungkin bahasa yang paling buruk untuk melakukannya, tapi sudah selesai. Terima kasih kepada @Wheatwizard karena menyediakan juru bahasa Haskell, yang memungkinkan format input campuran. Ini akan menjadi sekitar 150 byte lebih lama tanpanya.

Penjelasan:

#Keep track of the first input (n)
(({})<

    #Push abs(n) (thanks WheatWizard!)
    (([({})]<>)){({}()<([{}])<>({}<>)<>>)<>}{}([{}]<><{}>)

    #For each char in the input string:
    ([][()])
    {
        {}

        #Push n copies to the alternate stack
        ({<({}<(({}<>)<>)>[()])>()}<{}{}>)

        #Endwhile
        ([][()])
    }{}{}<>

#Push the original n back on
>)

#Push n >= 0
([({}<(())>)](<>)){({}())<>}{}{((<{}>))<>{}}{}<>{}

#If so...
{{}

    #Reverse the whole stack
    {({}<>)<>}

    #And toggle over, ending the loop
    (<>)
}

#Pop the counter off
{}
DJMcMayhem
sumber
Anda bisa menggunakan abs 52 byte saya untuk menyimpan 2 byte, Anda juga bisa menggunakan 50 byte -ab yang saya berikan kepada Anda dan menambahkan bukannya mengurangi untuk menyimpan 6 byte.
Wheat Wizard
3

Java (OpenJDK 8) , 99 98 89 87 85 byte

s->n->{for(int i=s.length*(n<0?n:-n),r=n<0?0:~i;i++<0;)System.out.print(s[(i+r)/n]);}

Cobalah online!

  • -2 byte terima kasih kepada @Xanderhall
  • -2 byte berkat @Nevay
Olivier Grégoire
sumber
Gagasan yang tidak berfungsi (lebih lama): balikkan string sebelumnya, gunakan aliran,
Olivier Grégoire
1
Simpan 2 byte dengans[(n<0?-l-~i:i)/n]
Xanderhall
@Xanderhall Terima kasih! Saya sudah mencari yang begitu lama sampai mata saya berdarah. Saya tahu itu mungkin, saya hanya mengacaukan semuanya ketika mengimplementasikannya.
Olivier Grégoire
1
@ user902383 Ya, itu wajib . Jika itu opsional, banyak hal yang tidak dapat dibaca. Juga, fungsi saya bukan "pernyataan tunggal", tetapi untuk-loop, yang mencakup beberapa pernyataan.
Olivier Grégoire
1
Anda dapat menghemat 1 byte dengan menambahkan i dalam kondisi s->n->{for(int l=s.length*(n<0?-n:n),i=0;i++<l;)System.out.print(s[(n<0?i-l:i-1)/n]);}. Byte lain dapat disimpan dengan beralih dari -l ke 0 sebagai gantinya ( s->n->{for(int i=s.length*(n<0?n:-n),r=n<0?0:~i;i++<0;)System.out.print(s[(i+r)/n]);}).
Nevay
2

Oktaf , 49 byte

@(s,n){t=repmat(s,abs(n),1)(:)',flip(t)}{2-(n>0)}

Cobalah online!

Saya akan memberikan penjelasan besok.

Stewie Griffin
sumber
2

Ruby , 59 +1 = 60 byte

Menggunakan -nbendera

n=eval$_
a=$<.read
a.reverse!if n<0
a.chars{|i|$><<i*n.abs}

Cobalah online!

Pavel
sumber
1
eval$_lebih pendek dari $_.to_i1 byte. String#charsjuga dapat menerima blok dengan cara yang sama String#each_charbisa. Terakhir, balikkan input sebelum memproses masing-masing karakter sehingga Anda dapat mencetaknya secara langsung (mengalihkan bendera Anda ke -n). Semua ini bergabung menjadi 55 +1 = 56 byte.
Nilai Tinta
2

Arang , 16 byte

Fθ¿‹η0F±Iη←ιFIηι

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:

Fθ              For each character in the input string
  ¿‹η0          If the input number is less than zero
      F±Iη      Repeat the negation of the input number times
          ←ι    Print the character leftwards (i.e. reversed)
      FIη       Otherwise repeat the input number times
         ι      Print the character
Neil
sumber
2

Japt , 12 byte

®pVaìr!+sVg

Cobalah online!

Penjelasan

Input string Udan integer tersirat V.

®pVaÃ

Peta ( ®) setiap huruf U(secara implisit) ke dirinya sendiri berulang ( p) abs(V)( Va) kali.

¬r

Ubah string menjadi array karakter ( ¬) dan kurangi ( r) dengan ...

!+sVg

"!+".slice(sign(V))- ini dikurangi dengan +a + b, atau dengan !+b + a.
Terima kasih @Arnauld untuk ide pengurangan-mundur!

Justin Mariner
sumber
Saya merasa £gY*Vg)pVaharus mengarah ke solusi yang lebih pendek tetapi otak saya telah mati untuk liburan sehingga saya tidak bisa mengetahuinya. Anda mungkin bisa melakukan sesuatu dengannya.
Shaggy
2

WendyScript , 46 byte

<<f=>(s,x){<<n=""#i:s#j:0->x?x>0n+=i:n=i+n/>n}

f("Hello World", -2) // returns ddllrrooWW  oolllleeHH

Cobalah online!

Penjelasan (Tidak Diikat):

let f => (s, x) {
  let n = ""
  for i : s
    for j : 0->x
      if x > 0 n += i
      else n = i + n
  ret n
}
Felix Guo
sumber
2

C89 byte

main(int c,char**v){for(;*v[1];v[1]++)for(c=atoi(v[2]+(*v[2]=='-'));c--;)putchar(*v[1]);}

Saya melihat versi Ben Perlin dan bertanya-tanya apakah Anda masih bisa lebih pendek dan juga memiliki program lengkap; pasti, atoi()dan putchar()bukankah itu mahal dalam hal byte? Sepertinya saya benar!

Andrea
sumber
2

Pyth, 13 11 byte

*sm*.aQdz._

Cobalah!

-2 byte terima kasih kepada @jacoblaw

penjelasan

*sm*.aQdz._   
  m     z     # map onto the input string (lambda var: d)
   *.aQd      # repeat the char d as often as the absolute value of the input number 
 s            # sum the list of strings into a single string
*        ._Q   # Multiply with the sign of the implicit input value: reverse for negative Q 

pendekatan lama, 13 byte

_W<Q0sm*.aQdz

Cobalah!

KarlKastor
sumber
Anda dapat menyimpan dua byte dengan logika pembalikan ini
jacoblaw
2

Python 3 , 68 byte

h=lambda s,n:h(s[::-1],-n)if n<0 else s[0]*n+h(s[1:],n)if s else s*n

Cobalah online!

Kavi
sumber
Halo, dan selamat datang di situs ini! Sayangnya, jawaban ini tidak valid saat ini, karena tidak mendukung angka Negatif . Tantangannya mengatakan:If the integer is negative, we use its absolute value in the first step, and then reverse the string.
DJMcMayhem
Terima kasih telah memperbaikinya! BTW, Anda bisa melepas dua byte dengan menghapus spasi setelah tanda kurung)
DJMcMayhem
Diedit, terima kasih atas kontribusi
Kavi
n<0 else=>n<0else
Zacharý
1

QBIC , 32 byte

g=sgn(c)[_l;||[:*g|?_sA,b*g,1|';

Penjelasan

            Takes inputs A$ ('Hello'), and c (-3) from the cmd line
g=sgn(c)    Save the sign of c          -1
[_l;||      FOR each char in A$
[:*g|       FOR the number of repetitions wanted    (ie: -3 * -1)
            Note that : reads a number from the cmd line, and c is the first 
            available variable to save it in after a and b got used as FOR counters.
            Also note that a negative value times the sign becomes positive.
?_s         PRINT a substring
  A         of A$
 ,b*g       startng at char n, where n is the first FOR loop counter times the sign
                That means that when c is negative, so is this. A negative starting index
                on Substring instructs QBIC to take from the right.
 ,1|        taking 1 char.
';          This bit injects a literal ; in the output QBasic, to suppress newlines om PRINT
steenbergh
sumber
1

Mathematica, 89 byte

(T=Table;t=""<>T[s[[i]]~T~Abs@#2,{i,Length[s=Characters@#]}];If[#2>0,t,StringReverse@t])&


memasukkan

["Hello World!", 3]

J42161217
sumber
1

Braingolf , 22 byte

1-v{R.[v.R]v}R[v>R]v&@

Cobalah online!

Eeh, tidak buruk.

Mengambil input sebagai integer dan array karakter.

Kalau tidak:

Braingolf , 31 byte

l1->[M]1-v&,{R.[v.R]v}R[v>R]v&@

Cobalah online!

Mengambil input sebagai integer dan string

Skidsdev
sumber
1

C, 109 byte

char *f(int n, char *s){char *o=calloc(n,strlen(s)+1),*t=o;while(*s){for(int i=n;i--;)*t++=*s;s++;}return o;}

Dimulai dengan deklarasi fungsi yang mengambil int dan string dan menghasilkan string (tampaknya tersirat bahwa memori tidak dialokasikan dan harus dibuat) tampaknya pendekatan lurus ke depan lebih pendek daripada upaya untuk menjadi golok yang telah saya coba .

char *f(int n, char *s){
  char *o=calloc(n, strlen(s)+1),
    *t=o;

  while (*s) {
    for(int i=n; i--; )
      *t++=*s;
    s++;
  }

 return o;

}

Ben Perlin
sumber
Ini sepertinya tidak berfungsi untuk negatif n.
gastropner