เขียนฟังก์ชัน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และอื่น ๆ