Tulis fungsi,, f
yang mengambil bilangan bulat positif dan mengembalikan fungsi.
Fungsi baru yang dikembalikan harus identik dengan f
. Namun, ketika "panggilan terminasi" terjadi, f
seharusnya mengembalikan jumlah semua bilangan bulat yang dilewati.
Misalnya, g=f(4)
(jika f
fungsi pertama) harus diatur g
ke fungsi lain. h=g(3)
akan melakukan hal yang sama. Namun, ketika Anda memanggil h
tanpa argumen (lihat di bawah untuk perincian), itu harus menghasilkan 7, karena itu adalah jumlah dari argumen fungsi sebelumnya. Dengan kata lain f(3)(4)() == 7
,.
Perhatikan bahwa ini tidak sama dengan f(3,4)()
.
"Panggilan pemutusan" adalah salah satu opsi berikut (pilihan Anda):
- panggilan tanpa argumen
- null sebagai argumen
- nilai non-positif
Jumlah panggilan fungsi yang sewenang-wenang harus didukung, tidak ada batasan yang telah ditentukan.
Dijamin bahwa jumlah total tidak akan lebih besar dari 1'000.
Kita dapat berasumsi bahwa setidaknya ada satu panggilan dilakukan sebelum "panggilan penghentian".
Kode Anda tidak boleh menggunakan variabel statis, per-program, sehingga harus dimungkinkan untuk menjalankan percobaan beberapa kali dalam runtime yang sama dan mengamati perilaku yang persis sama.
Contoh:
f(1)() == 1
f(4)(2)(7)() == 13
f(4)(2)(7)(5)(2)() == 20
q = f(2)(3); b = f(1)(2)(3); q(); b()
?
f(4)
mengembalikan fungsi baru. Jika fungsi baru itu disebut tanpa argumen, ia kembali4
, tetapi jika itu disebut dengan argumen lain maka ia akan kembali mengembalikan fungsi baru dengan semantik yang sama tetapi dengan argumen baru ditambahkan ke4
dan seterusnya.