เขียนฟังก์ชันf
ที่ใช้จำนวนเต็มบวกและส่งคืนฟังก์ชัน
f
ฟังก์ชั่นใหม่กลับควรจะเหมือนกับ อย่างไรก็ตามเมื่อ "การยกเลิกการโทร" เกิดขึ้นf
ควรส่งคืนผลรวมของจำนวนเต็มทั้งหมดที่ส่งผ่านแทน
ตัวอย่างเช่นg=f(4)
(ถ้าf
เป็นฟังก์ชันแรก) ควรตั้งg
เป็นฟังก์ชั่นอื่น h=g(3)
จะทำเช่นเดียวกัน อย่างไรก็ตามเมื่อคุณโทรh
โดยไม่มีอาร์กิวเมนต์ (ดูรายละเอียดด้านล่าง) มันควรจะส่งออก 7 เนื่องจากเป็นผลรวมของอาร์กิวเมนต์ของฟังก์ชันก่อนหน้า ใส่อีกวิธีหนึ่ง, f(3)(4)() == 7
.
f(3,4)()
ไม่ทราบเรื่องนี้ไม่ได้เช่นเดียวกับ
"การยุติการโทร" เป็นหนึ่งในตัวเลือกต่อไปนี้ (ตัวเลือกของคุณ):
- เรียกอาร์กิวเมนต์ w / o
- null เป็นอาร์กิวเมนต์
- ค่าที่ไม่เป็นบวกใด ๆ
จำนวนการเรียกใช้ฟังก์ชันตามอำเภอใจควรได้รับการสนับสนุนไม่มีข้อ จำกัด ที่กำหนดไว้ล่วงหน้า
รับประกันได้ว่ายอดรวมจะไม่มากกว่า 1'000
เราสามารถสันนิษฐานได้ว่ามีการโทรอย่างน้อยหนึ่งครั้งก่อนที่จะ "ยกเลิกการโทร"
รหัสของคุณไม่ควรใช้ตัวแปรแบบคงที่ต่อโปรแกรมดังนั้นจึงควรเป็นไปได้ที่จะเรียกใช้การทดสอบหลายครั้งในรันไทม์เดียวกันและสังเกตพฤติกรรมที่เหมือนกันทุกประการ
ตัวอย่าง:
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)
จะส่งคืนฟังก์ชันใหม่ ถ้าฟังก์ชั่นใหม่นั้นถูกเรียกใช้โดยไม่มีข้อโต้แย้งมันจะส่งกลับ4
แต่ถ้ามันถูกเรียกด้วยอาร์กิวเมนต์อื่นแล้วมันจะส่งกลับฟังก์ชันใหม่ด้วยความหมายเดียวกันอีกครั้งแต่ด้วยอาร์กิวเมนต์ใหม่ที่เพิ่มเข้ามา4
และอื่น ๆ