Mari kita mendefinisikan "delta multiplikatif" dari nilai sebagai:
Operasi terbalik - yaitu "undelta multiplikatif" - mengembalikan nilai sedemikian rupa sehingga operasi di atas menghasilkan nilai yang diberikan.
Contoh
Nilai yang diberikan solusi umum untuk operasi " multiplicative undelta " adalah:
Solusi tertentu dapat diperoleh dengan menetapkan ke nilai selain nol, misalnya dengan menetapkan kita akan mendapatkan:
Tantangan
Tugas Anda untuk tantangan ini adalah mengimplementasikan operasi " undelta multiplikatif " sebagaimana didefinisikan di atas.
Aturan
Inputnya adalah:
- nilai bukan nol
- daftar non-kosong / array / vektor / ... non-zero " delta perkalian "
Output adalah daftar / array / vektor / ... dari nilai-nilai sedemikian rupa sehingga elemen pertama adalah dan untuk itu " delta multiplikatif " adalah input.
Catatan: Jika bahasa Anda tidak memiliki dukungan bilangan bulat negatif, Anda dapat mengganti bukan-nol dengan positif .
Uji kasus
2 [21] -> [2,42]
1 [1,5,3,2] -> [1,1,5,15,30]
-1 [1,5,3,2] -> [-1,-1,-5,-15,-30]
7 [1,-5,3,2] -> [7,7,-35,-105,-210]
2 [-12,3,-17,1311] -> [2,-24,-72,1224,1604664]
-12 [7,-1,-12,4] -> [-12,-84,84,-1008,-4032]
1 [2,2,2,2,2,2,2,2] -> [1,2,4,8,16,32,64,128,256]
Jawaban:
Haskell, 8 byte
Cobalah online!
sumber
APL (Dyalog), 3 byte
Cobalah online!
Jika saya harus mengambil nomor di sebelah kiri dan array di sebelah kanan:
-2 terima kasih kepada @ H.PWiz
753 byte×\,
sumber
⊣,⊢
bisa saja,
×\,
mengevaluasi ke suatu fungsi.f←×\
bekerja, misalnya. Btw,(-12 3 -17 1311)
permalink Anda seharusnya(¯12 3 ¯17 1311)
.R , 15 byte
Cobalah online!
Program lengkap. Fungsinya lebih lama (kecuali kami diizinkan untuk "merekatkan" input bersama, sehingga
cumprod
bawaan akan cukup sebagai jawaban yang lengkap):R , 28 byte
Cobalah online!
sumber
MATL , 3 byte
Cobalah online!
The
hYp
e tentang MATL adalah nyata.sumber
JavaScript (ES6), 27 byte
Mengambil input sebagai
(m)(a)
.Cobalah online!
sumber
Japt, 3 byte
Cobalah
Penjelasan
sumber
Python 3, 39 byte
Pendekatan alternatif. Mengembalikan generator.
Cobalah online!
sumber
Jelly , 3 byte
Cobalah online!
sumber
Bahasa Wolfram (Mathematica) , 14 byte
Cobalah online!
FoldList[Times, a0, {x1, x2, ..., xn}]
menghasilkan output yang diinginkan.FoldList[Times]
adalah bentuk kari yang menghasilkan fungsi murni yang masih menunggua0
dan{x1, x2, ..., xn}
.sumber
Perl 6 , 9 byte
Cobalah online!
sumber
ML standar , 32 byte
Cobalah online!
Tidak Disatukan:
sumber
J ,
65 byte-1 byte terima kasih kepada Bubbler
Cobalah online!
Penjelasan:
Sebuah kata kerja diadik, argumen kiri adalah
a0
, yang kuat - vektorsumber
*/\@,
bekerja persis sama.Batch, 69 byte
sumber
Gangguan Umum, 67 byte
Cobalah online!
sumber
Sekam , 2 byte
Cobalah online!
Ini sama dengan jawaban nimi di Haskell :,
scanl(*)
yang berarti mengurangi dari kiri menggunakan perkalian, dan mengembalikan semua hasil parsial.sumber
05AB1E ,
53 byte-2 byte terima kasih kepada @BMO .
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
s
sana untuk mendapatkan input lainnya. :)s
adalah swap, danš
diawali di awal daftar. Either way, terima kasih untuk -2Pyth, 6 byte
Uji yang di sini!
Atau, 7 byte:
Uji di sini!
Yang pertama mengambil input sebagai tuple, yang kedua mengambil input sebagai dua baris terpisah.
Terima kasih kepada @Sok untuk membantu saya dalam memetakan dan menghemat 1 byte.
sumber
R
, seperti dalam*FR._s
- demonstrasiM
menganggap itu akan berhasil, kemudian mengalami kegagalan penguraian gula - terutama karena saya tidak ingat bagaimana penguraian untukF <pf2>
bekerja.M
,F
,L
, danR
bekerja, saya hanya mencoba a bunch sampai satu bekerja: o)Python 2 , 40 byte
Cobalah online!
Anehnya, pindah ke Python 3 dan penggunaan generator di sana hanya menghemat 1 byte dari solusi rekursif.
sumber
PowerShell , 29 byte
Cobalah online!
Ini mengasumsikan hanya mengeluarkan nilai-nilai saja.
Jika itu tidak baik, ini sebenarnya membangun daftar dan kemudian mendorongnya ke toString yang mencetak dengan cara yang sama.
sumber
Output is a list/array/vector/
. Jadi, yang pertama baik-baik saja.MathGolf ,
65 byteCobalah online!
Saya pikir ini bisa menjadi 5 byte (Ini sekarang diperbaiki dalam versi terbaru.\{\o*
) tetapi\
instruksi tampaknya sedikit mati ketika berhadapan dengan input.Penjelasan:
sumber
Python 2 , 47 byte
Cobalah online!
sumber
Arang , 12 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
sumber
K (oK) , 9 byte
Cobalah online!
Bergabung dengan angka pertama ke input kedua sebagai daftar, dan kemudian mengembalikan hasil perkalian berturut-turut
Uji Kasus
Masukkan input Anda setelah fungsi seperti di bawah ini dan kemudian jalankan, karena saya tidak yakin bagaimana menggunakan input dengan benar untuk bahasa ini di TiO
sumber
dc , 13 byte
Cobalah online!
sumber