Perusahaan Anda baru saja memulai suatu proyek, dan untuk pertama kalinya Anda memutuskan untuk menggunakan gaya pemrograman kode fungsional. Namun bos Anda benar-benar malu-malu dan tidak ingin menggunakan fungsi bawaan, dan mengharuskan Anda untuk menerapkan sendiri fungsi-fungsi utama. Secara khusus Anda perlu menulis fungsi: Map, Nest, Apply, Range, Folddan Tabledalam bahasa pada pilihan Anda. Bosnya orang yang sangat sibuk, dan dia ingin programnya sesingkat mungkin, jadi dia tidak membuang waktu untuk membaca. Dia juga ingin agar Anda tidak menggunakan loop, oleh karena itu Anda akan memiliki pengurangan 10% pada jumlah byte karena tidak menggunakan loop.
Persyaratan rinci fungsi di bawah ini:
Peta
The MapFungsi mengambil dua parameter: fdan listdi mana fadalah fungsi dan listmerupakan daftar nilai. Ini harus mengembalikan fditerapkan ke setiap elemen list. Karena itu akan berfungsi seperti itu:
Map(f,{a,b,c})
kembali
{ f(a), f(b), f(c) }
dan
Map(f, {{a,b},{b,c}})
kembali
{ f({a,b}), f({b,c})}
Sarang
The NestFungsi mengambil tiga parameter juga: f, arg, timesdi mana fadalah fungsi, argadalah argumen mulai, dan timesadalah berapa kali fungsi ini diterapkan. Itu harus mengembalikan ekspresi dengan waktu yang fditerapkan timeske arg. Karena itu akan berfungsi seperti itu:
Nest(f, x, 3)
kembali
f(f(f(x)))
dan
Nest(f, {a,b}, 3)
kembali
f(f(f({a,b})))
Menerapkan
The ApplyFungsi mengambil dua parameter: fdan argsdi mana fadalah fungsi dan argsdaftar. Itu harus berlaku funtuk args. Karena itu:
Apply(f, {a,b,c})
kembali
f(a,b,c)
Jarak
The RangeFungsi mengambil satu bilangan bulat rdan output bilangan bulat hingga jumlah itu. Karena itu:
Range(5)
kembali
{ 1, 2, 3, 4, 5}
Melipat
The FoldFungsi mengambil tiga parameter f, arg, othersdi mana fadalah fungsi, argadalah parameter sederhana, dan othersdaftar. Ini akan berfungsi seperti itu:
Fold(f, x, {a, b, c, d})
kembali
f(f(f(f(x,a),b),c),d)
Meja
Fungsi-fungsi tabel harus mengambil fungsi f, dan parameter yang disebut iteratordalam bentuk: {iMin, iMax}where iMinand iMaxinteger. Anda harus menerapkan frentang yang ditentukan. Karena itu:
Table(f, {0, 5})
kembali
{f(0), f(1), f(2), f(3), f(4), f(5)}
Saya telah menggunakan definisi fungsi-fungsi ini dari halaman pemrograman fungsional Mathematica , jadi pergilah ke sana jika Anda memerlukan panduan lebih lanjut. Perhatikan bahwa Anda tidak perlu mengimplementasikan semua versi fungsi yang ditampilkan di halaman itu, tetapi hanya yang ditulis dalam posting ini.
Celah Standar tidak diizinkan seperti biasa.
Jika bahasa Anda tidak memungkinkan fungsi untuk diteruskan sebagai argumen, Anda perlu menerapkan kemampuan ini, dan menambahkannya ke dalam jawaban Anda. Namun byte-count dari operasi ini tidak akan ditambahkan ke total.
Ini adalah kode golf sehingga kode terpendek menang. Semoga berhasil!!!
Tablekerjanya di sini. Apakah teladan Anda seharusnyaTable(f, {x, 0, 5})? Saya juga tidak mendapatkan tujuanxsama sekali, karena itu hanya menerapkan fungsi ke kisaran.