Diberikan 2 input, string dan angka desimal, output string dikalikan dengan angka itu.
Tangkapannya adalah bahwa bilangan dapat berupa pelampung atau bilangan bulat.
Anda harus menampilkan floor(n)
waktu string dan kemudian floor((n-floor(n))*len(string))
huruf pertama lagi.
Catatan lain:
- Input tidak akan selalu berupa float, mungkin berupa int. Jadi 1,5, 1, dan 1.0 semuanya mungkin. Akan selalu ada di basis 10, dan jika Anda ingin pengecualian, silakan komentar.
- Input string dapat berisi spasi, tanda kutip dan karakter lainnya. Tidak ada baris baru atau karakter kontrol.
- Tidak ada built-in untuk pengulangan string langsung, bahkan multiplikasi string seperti python
'a'*5
diperbolehkan. Namun penambahan string diizinkan.
Kasus uji:
Koma & spasi memisahkan input.
test case, 1 -> test case
case, 2.5 -> casecaseca
(will add more later), 0.3333 -> (will(space)
cats >= dogs, 0.5 -> cats >
Catatan Akhir:
Saya melihat banyak jawaban yang menggunakan fungsi multiplikasi atau pengulangan bawaan. Ini tidak diizinkan @ Jawaban VTC ini adalah meskipun valid, karena tidak multiply string, hanya input float. Jadi aturan definitifnya adalah: Jika secara langsung mengalikan string, Anda tidak bisa melakukannya.
direct
pengulangan string (apa artinya ini?). Tapi secara keseluruhan Anda benarjoin "", ("case") x 2
vs"case" x 2
, di Perl 6[~] "case" xx 2
vs sama"case" x 2
Jawaban:
Jelly, 5 byte
Tidak menggunakan pengulangan bawaan. Cobalah online!
Bagaimana itu bekerja
sumber
Java 7, 89
mengambil char [] dan float dan output ke STDOUT. perulangan dasar.
sumber
Pyth,
98Disimpan 1 byte berkat Pietu1998
Ini mengambil
floor(n * len(string))
huruf dari string, menggunakan pengindeksan siklus. Saya percaya ini selalu setara dengan formula yang diberikan.Test Suite
sumber
s
.range
lucu seperti itu.JavaScript (ES6), 50 byte
Edit 2 byte lagi untuk memasukkan definisi fungsi
f
. 1 byte lebih sedikit menggunakan ujung @manatwork. Catatan: menggunakan~
kami memiliki lebih banyak iterasi daripada yang diperlukan, tetapi ini adalah kode golf dan bahkan 1 byte dihitungUJI
sumber
n>0
dalam kode vs.n>1
dalam test case.~n
? (Benar-benar hanya sebuah pertanyaan. Hanya mencoba test case yang diberikan.)f
didefinisikan dalam solusi Anda? Apakah kamu tidak hilangf=
?Vitsy, 9 byte
Mengharapkan kata sebagai argumen, dan angka untuk dikalikan melalui STDIN.
Cobalah online!
sumber
Grab all string argument input.
dan kemudianParse STDIN.
lagi?CJam, 10 byte
Tali dipasok pada baris pertama STDIN, float pada baris kedua.
Uji di sini.
Penjelasan
sumber
Python 2, 71 byte
Coba di sini!
Membuat lambda tanpa nama yang menggunakan string sebagai argumen pertama dan float sebagai argumen kedua. Mengembalikan string yang diulang.
Ini bisa menjadi 46 jika builtin pengulangan string diizinkan :(
sumber
Ruby,
4948 karakterContoh dijalankan:
sumber
Perl 6 ,
46 4139 bytePerl 6 memiliki operator pengulangan string
x
dan operator pengulangan daftarxx
.Karena aturan melarang pengulangan string, kami mengulanginya seolah-olah itu adalah daftar elemen tunggal. Kemudian daftar tersebut disatukan, dan substringnya dikembalikan.
Pemakaian:
sumber
substr ([~] $^a xx$^b+1),0,$a.comb*$b}
menghemat dua karakternaskah, 173 byte
Oh hari-hariku, ini lebih buruk daripada yang aku pikirkan.
Mengembalikan nilai string, jawaban lain menggunakan pengindeksan siklus. Diharapkan input sebagai
"string" "repetitions"
.sumber
Oh my days, this is worse than I thought.
Sangat benar, sangat benar.set x,y to a's items
?Haskell, 44 byte
Contoh penggunaan:
"(will add more later)" # 0.3333
->"(will "
.Cara kerjanya:
c
menyatukan salinan string yang tak terbatasx
. Berperilaku seperti built-incycle
.sum[1|a<-s]
adalah fungsi panjang kustom yang berfungsi dengan sistem tipe Haskell yang ketat karena mengembalikan aDouble
(length
pengembalian bawaanInt
yang tidak dapat dikalikan dengann
).#
mengambilfloor (n * length(s))
karakter dari string bersepedas
.sumber
PHP 5,
96879 byte disimpan berkat @manatwork
Jawaban perulangan cukup lurus ke depan.
Tidak disatukan
sumber
@
terlalu:<?for($i=$z=0;$i++<floor(strlen($a=$argv[1])*$argv[2]);$z++)echo$a[$z]?:$a[$z=0];
error_reporting
Jadi kami lebih memilih untuk mendasarkan solusi kami pada konfigurasi default dan tidak memedulikan pemberitahuan dan kebiasaan baik lainnya. Misalnya mengabaikan inisialisasi$z
dan$i
.R, 59 byte
Sebagai fungsi yang tidak disebutkan namanya. Ini menggunakan charToRaw untuk membagi string menjadi vektor mentah. Ini diisi ke dalam array dengan panjang * l, dikonversi kembali ke char dan output.
Saya akan menggunakan strsplit, tetapi akhirnya menjadi lebih lama.
Uji
sumber
Perl, 51 + 3 = 54 byte
Membutuhkan:
-n
,-l
dan-M5.010
|-E
:Penjelasan:
sumber
c (makro praprosesor), 71
Tidak terlalu rumit di sini. Hanya perlu memastikan
l*m
dilemparkan keint
sebelum membandingkanj
.Cobalah online.
sumber
Oracle SQL 11.2,
154152 byteTidak bermain golf
Saya pergi dengan cara rekursif, dengan memilih inisialisasi mengurus bagian desimal.
Disimpan 2 byte berkat @MickyT
sumber
FLOOR(FLOOR((:2-FLOOR(:2))*LENGTH(:1)))
denganMOD(:2,1)*LENGTH(:1)
LPAD
daripadaSUBSTR
Serius, 24 byte
Cobalah online!
Penjelasan:
sumber
Pyth, 9 byte
Pada dasarnya hanya melakukan
sumber