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 kode-golf , kemenangan jumlah byte terendah!
sumber
Jawaban:
Jelly ,
654 byteCobalah online!
Bagaimana itu bekerja
sumber
JavaScript (ES6), 63 byte
Mengambil input dalam sintaks currying
(s)(n)
.Uji kasus
Tampilkan cuplikan kode
sumber
reduce
!Python 3 , 44 byte
Cobalah online!
sumber
f(n,*s)
yang dianggap validPython 2 ,
59575046 byte-2 byte berkat Anders Kaseorg. -4 byte terima kasih kepada Dennis.
Cobalah online!
sumber
05AB1E , 10 byte
Cobalah online!
sumber
²0‹i
bukan rute terbaik dan datang dengan 0 alternatif.²0‹i
sebelumnya dan saya selalu berpikir harus ada sesuatu yang lebih baik.Ä.D)øJ¹0‹iR
adalah yang terbaik yang bisa saya lakukan tanpa menyalin Anda, saya pikir Anda dioptimalkan.è
sini , meskipun saya tidak dapat menemukan cara untuk menerapkannya dalam skenario ini. Akan menghemat maksimal 1 byte, jika itu.SÂΛ@²Ä×J
, gunakanÎ
untuk menekan 0 dan input berfungsi jika Anda mengubah urutan. Menghemat 1 byte! (Juga diganti jika, jadi tidak perlu ditutup)MATL , 9 byte
Inputnya adalah: angka, lalu string.
String dengan baris baru adalah input menggunakan arang
10
sebagai berikut:['first line' 10 'second line']
.Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
Pertimbangkan input
-3
dan'String'
.sumber
Haskell ,
4136 byteCobalah online!
Contoh penggunaan:
f (-3) "abc"
hasil"cccbbbaaa"
.Edit: -5 byte terima kasih kepada xnor!
sumber
(<*[1..n])
untuk((<$[1..n])=<<)
.V ,
29, 23, 18, 17 byteCobalah online!
Hexdump:
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:
Pada titik ini, buffer terlihat seperti ini:
Penting untuk tidak mengikuti baris baru, dan bahwa kursor ada di sana.
sumber
0
khusus Anda di V sangat berguna.R,
837876 byteFungsi anonim.
Frederic menyelamatkan 3 byte, Giuseppe menyelamatkan
24.Penjelasan:
Tes:
sumber
rep(foo,,,3)
ataurep(foo,e=3)
(panjang yang sama) ;-)a=
. Oleh karena itu, saya menggunakan nilaia
sebagai argumen ke fungsi sebaliknya jikai<0
, dengan meminta kembali fungsi tersebut (itulah sebabnya saya membutuhkan backquote). Tapi saya perlu juga menerapkan fungsi identitas untuki>=0
kasus ini, jadi saya menggunakan(
yang cukup dekat.(
sebenarnya fungsi. R aneh.(
secara semantik setara dengan identitasfunction(x)x
05AB1E , 10 byte
Cobalah online!
Penjelasan
sumber
PHP> = 7.1, 65 byte
PHP Sandbox Online
sumber
$n<0
memiliki nilai yang sama dengan$n<0?:0
tetapi lebih pendek 3 byte :-)Brain-Flak (BrainHack) ,
154152 byteCobalah online!
Hanya di sini untuk memberikan beberapa kompetisi DJMcMayhem. ;)
Penjelasan
Inilah versi modifikasi dari penjelasan DJMcMayhem
sumber
J ,
191513 byteCobalah online!
Penjelasan
sumber
(#~|)A.~0-@>]
untuk 13 byte#~ ::(|.@#~|)
Dyalog APL, 15 byte
String sebagai argumen kiri, angka sebagai argumen kanan.
Cobalah online!
Bagaimana?
⍺/⍨
- ulangi string|⍵
- abs (jumlah) kali⌽⍣
- balikkan jika(⍵<0)
- jumlahnya di bawah 0sumber
MATLAB, 37 byte
Ini mendefinisikan dan fungsi anonim dengan input
s
: string dann
: nomor.Contoh berjalan:
sumber
repelem
ada.repelem
di Octave, untuk saat iniBrain-Flak (Haskell) ,
202192 byteCobalah 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:
sumber
Java (OpenJDK 8) ,
9998898785 byteCobalah online!
sumber
s[(n<0?-l-~i:i)/n]
i
dalam kondisis->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]);}
).Oktaf , 49 byte
Cobalah online!
Saya akan memberikan penjelasan besok.
sumber
Ruby , 59 +1 = 60 byte
Menggunakan
-n
benderaCobalah online!
sumber
eval$_
lebih pendek dari$_.to_i
1 byte.String#chars
juga dapat menerima blok dengan cara yang samaString#each_char
bisa. 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.Arang , 16 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
sumber
CJam , 9 byte
Cobalah online!
sumber
Japt , 12 byte
Cobalah online!
Penjelasan
Input string
U
dan integer tersiratV
.Peta (
®
) setiap hurufU
(secara implisit) ke dirinya sendiri berulang (p
)abs(V)
(Va
) kali.Ubah string menjadi array karakter (
¬
) dan kurangi (r
) dengan ..."!+".slice(sign(V))
- ini dikurangi dengan+
→a + b
, atau dengan!+
→b + a
.Terima kasih @Arnauld untuk ide pengurangan-mundur!
sumber
£gY*Vg)pVa
harus mengarah ke solusi yang lebih pendek tetapi otak saya telah mati untuk liburan sehingga saya tidak bisa mengetahuinya. Anda mungkin bisa melakukan sesuatu dengannya.WendyScript , 46 byte
Cobalah online!
Penjelasan (Tidak Diikat):
sumber
C89 byte
Saya melihat versi Ben Perlin dan bertanya-tanya apakah Anda masih bisa lebih pendek dan juga memiliki program lengkap; pasti,
atoi()
danputchar()
bukankah itu mahal dalam hal byte? Sepertinya saya benar!sumber
Pyth,
1311 byteCobalah!
-2 byte terima kasih kepada @jacoblaw
penjelasan
pendekatan lama, 13 byte
Cobalah!
sumber
Python 3 , 68 byte
Cobalah online!
sumber
If the integer is negative, we use its absolute value in the first step, and then reverse the string.
)
n<0 else
=>n<0else
QBIC , 32 byte
Penjelasan
sumber
Mathematica, 89 byte
memasukkan
sumber
Braingolf , 22 byte
Cobalah online!
Eeh, tidak buruk.
Mengambil input sebagai integer dan array karakter.
Kalau tidak:
Braingolf , 31 byte
Cobalah online!
Mengambil input sebagai integer dan string
sumber
C, 109 byte
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 .
}
sumber