บริษัท ของคุณเพิ่งเริ่มต้นโครงการและเป็นครั้งแรกที่คุณตัดสินใจที่จะใช้การเขียนโปรแกรมแบบใช้งานได้ อย่างไรก็ตามเจ้านายของคุณมีความแตกต่างและไม่ต้องการใช้ฟังก์ชันในตัวและต้องการให้คุณใช้งานฟังก์ชั่นหลัก โดยเฉพาะอย่างยิ่งที่คุณต้องเขียนฟังก์ชั่น: Map, Nest, Apply, Range, FoldและTableในภาษาที่คุณเลือก เจ้านายเป็นคนที่ยุ่งมากและเขาต้องการให้รายการสั้นที่สุดเท่าที่จะเป็นไปได้ดังนั้นเขาจึงไม่ต้องเสียเวลาอ่าน เขาไม่ต้องการให้คุณใช้ลูปดังนั้นคุณจะมีการลดลง 10% สำหรับจำนวนไบต์ที่ไม่ได้ใช้ลูป
ข้อกำหนดรายละเอียดของฟังก์ชั่นอยู่ด้านล่าง:
แผนที่
Mapฟังก์ชั่นใช้เวลาสองพารามิเตอร์fและlistที่fเป็นฟังก์ชั่นและlistเป็นรายการค่า มันควรกลับนำไปใช้กับองค์ประกอบของแต่ละf listดังนั้นมันจะทำงานเช่น:
Map(f,{a,b,c})
ผลตอบแทน
{ f(a), f(b), f(c) }
และ
Map(f, {{a,b},{b,c}})
ผลตอบแทน
{ f({a,b}), f({b,c})}
รัง
Nestฟังก์ชั่นใช้เวลาสามพารามิเตอร์เช่นกัน: f, arg, timesที่fเป็นฟังก์ชั่นargคือการเริ่มต้นการโต้แย้งของตนและtimesเป็นวิธีการที่หลายต่อหลายครั้งฟังก์ชั่นที่มีการใช้ มันควรจะกลับแสดงออกที่มีfนำมาใช้ครั้งเพื่อtimes argดังนั้นมันจะทำงานเช่น:
Nest(f, x, 3)
ผลตอบแทน
f(f(f(x)))
และ
Nest(f, {a,b}, 3)
ผลตอบแทน
f(f(f({a,b})))
ใช้
Applyฟังก์ชั่นใช้เวลาสองพารามิเตอร์fและargsที่fเป็นฟังก์ชั่นและargsรายการ มันควรจะใช้กับf argsดังนั้น:
Apply(f, {a,b,c})
ผลตอบแทน
f(a,b,c)
พิสัย
Rangeฟังก์ชั่นใช้เวลาหนึ่งจำนวนเต็มrและผลจำนวนเต็มขึ้นไปยังหมายเลขที่ ดังนั้น:
Range(5)
ผลตอบแทน
{ 1, 2, 3, 4, 5}
พับ
Foldฟังก์ชั่นใช้เวลาสามพารามิเตอร์f, arg, othersที่fเป็นฟังก์ชั่นargเป็นพารามิเตอร์ที่ง่ายและothersรายการ มันจะทำงานเช่น:
Fold(f, x, {a, b, c, d})
ผลตอบแทน
f(f(f(f(x,a),b),c),d)
ตาราง
ฟังก์ชั่นตารางควรใช้ฟังก์ชั่นfและพารามิเตอร์ที่เรียกว่าiteratorในรูปแบบ: {iMin, iMax}ที่ไหนiMinและiMaxเป็นจำนวนเต็ม คุณควรใช้fในช่วงที่ระบุ ดังนั้น:
Table(f, {0, 5})
ผลตอบแทน
{f(0), f(1), f(2), f(3), f(4), f(5)}
ฉันใช้นิยามของฟังก์ชั่นเหล่านี้จากหน้าการเขียนโปรแกรมฟังก์ชั่น Mathematicaดังนั้นมุ่งไปที่นั่นหากคุณต้องการคำแนะนำเพิ่มเติม โปรดทราบว่าคุณไม่จำเป็นต้องใช้ฟังก์ชั่นทุกรุ่นที่แสดงในหน้านั้น แต่จะมีเฉพาะฟังก์ชันที่เขียนในโพสต์นี้เท่านั้น
ช่องโหว่มาตรฐานไม่อนุญาตตามปกติ
ในกรณีที่ภาษาของคุณไม่อนุญาตให้ส่งผ่านฟังก์ชั่นเป็นอาร์กิวเมนต์คุณต้องใช้ความสามารถนี้และเพิ่มเข้าไปในคำตอบของคุณ อย่างไรก็ตามจำนวนไบต์ของการดำเนินการนี้จะไม่ถูกเพิ่มไปยังผลรวม
นี่คือรหัสกอล์ฟเพื่อให้รหัสที่สั้นที่สุดชนะ โชคดี!!!
Tableทำงานที่นี่ ตัวอย่างของคุณควรจะเป็นTable(f, {x, 0, 5})อย่างไร ฉันยังไม่ได้รับวัตถุประสงค์xเลยเพราะมันใช้ฟังก์ชันกับช่วงเท่านั้น