ised: 72 46 ตัวอักษร
นี้เกือบจะเป็นแบบที่สมบูรณ์แบบ ... มี "ภาษา" ออกมีที่ดูเหมือนว่าจะมีความหมายอย่างแม่นยำสำหรับการเล่นกอล์ฟคณิตศาสตร์: ised ไวยากรณ์ที่ยุ่งเหยิงของมันทำให้โค้ดสั้นมาก (ไม่มีตัวแปรที่ระบุชื่อเพียงแค่สล็อตหน่วยความจำจำนวนเต็มและตัวดำเนินการถ่านหลายตัว) การกำหนดฟังก์ชั่นแกมม่าโดยใช้อินทิกรัลฉันทำได้ถึง 80 ตัวอักษรที่ดูเหมือนสุ่ม
@4{:.1*@+{@3[.,.1,99]^x:*exp-$3}:}@6{:@{$4::@5avg${0,1}>$2}$5:}@0,0@1,99;$6:::.
ในที่นี้สล็อตหน่วยความจำ $ 4 เป็นฟังก์ชั่นแฟกทอเรียลสล็อตหน่วยความจำ $ 6 ฟังก์ชั่นการแบ่งส่วนและสล็อตหน่วยความจำ $ 2 คาดว่าจะถูกตั้งค่าให้ป้อนข้อมูล สล็อต $ 0 และ $ 1 เป็นขอบเขตแบ่งออกเป็นสองส่วน ตัวอย่างการโทร (สมมติว่ามีโค้ดข้างต้นอยู่ในไฟล์inversefactorial.ised
)
bash> ised '@2{556}' --f inversefactorial.ised
556
5.86118
แน่นอนคุณสามารถใช้ builtin! โอเปอเรเตอร์ซึ่งในกรณีนี้คุณจะได้รับไม่เกิน 45 อักขระ
@6{:@{{@5avg${0,1}}!>$2}$5:}@0,0@1,99;$6:::.
ระวังการกระทำของผู้ประกอบการบางครั้งก็แปลก
แก้ไข: จำได้ว่าต้องอินไลน์ฟังก์ชั่นแทนการบันทึก เอาชนะ Mathematica ด้วยตัวละคร 72 ตัว!
@0,0@1,99;{:@{{:.1*@+{@3[.,.1,99]^x:*exp-$3}:}::@5avg${0,1}>$2}$5:}:::.
และใช้! ในตัวคุณได้รับ 41
การอัปเดตเกินเวลาหนึ่งปี:
ฉันเพิ่งรู้ว่านี่ไม่มีประสิทธิภาพสูง Golfed-down ถึง 60 ตัวอักษร:
@0#@1,99;{:@{.1*@3[.,.1,99]^@5avg${0,1}@:exp-$3>$2}$5:}:::.
ถ้าใช้ utf-8 (Mathematica ก็ทำเช่นกัน) เราจะได้ 57:
@0#@1,99;{:@{.1*@3[.,.1,99]^@5avg${0,1}·exp-$3>$2}$5:}∙.
การเขียนที่แตกต่างกันเล็กน้อยสามารถลดได้ถึง 46 (หรือ 27 หากใช้ builtin!):
{:x_S{.5@3[.,.1,99]^avgx·exp-$3*.1<$2}:}∙∓99_0
สามารถลบอักขระสองตัวสุดท้ายได้หากคุณตกลงที่จะพิมพ์คำตอบสองครั้ง