แก้ไข: ฉันจะโพสต์คำถามนี้ในเวอร์ชันที่ใหม่กว่าในmeta-golfเร็ว ๆ นี้ อยู่ tooned!
แก้ไข # 2: ฉันจะไม่อัปเดตความท้าทายอีกต่อไป แต่จะเปิดไว้ meta-golfรุ่นสามารถใช้ได้ที่นี่: /codegolf/106509/obfuscated-number-golf
พื้นหลัง:
ตัวเลขส่วนใหญ่สามารถเขียนด้วยสัญลักษณ์ต่างกันเพียง 6 ตัว:
e(ออยเลอร์คงที่)-(การลบไม่ลบ)^(ยกกำลัง)()ln(ลอการิทึมธรรมชาติ)
ตัวอย่างเช่นคุณสามารถแปลงจำนวนจินตภาพiโดยใช้สมการนี้:
(e-e-e^(e-e))^(e^(e-e-ln(e^(e-e)-(e-e-e^(e-e)))))
เป้าหมาย:
รับจำนวนเต็มใด ๆ kใด ๆ ด้วยวิธีการที่สมเหตุสมผลเอาท์พุทการแทนค่าที่สั้นที่สุดที่เป็นไปได้ของตัวเลขนั้นโดยใช้สัญลักษณ์ 6 ตัวเท่านั้น
ตัวอย่าง:
0 => "e-e"
1 => "ln(e)"
2 => "ln(ee)"
// Since - cannot be used for negation, this is not a valid solution:
// ln(e)-(-ln(e))
-1 => "e-e-ln(e)"
หมายเหตุ:
- เครื่องหมายวงเล็บสิ้นสุดจะนับรวมตามจำนวนอักขระทั้งหมด
ln(นับเป็น 1 ตัวอักษรเท่านั้น- ทุกอย่างอื่นนับเป็น 1 ตัวอักษร
n^0=1- ลำดับของการดำเนินการใช้
- วงเล็บคูณเป็นที่ยอมรับเช่น
(2)(8)=16, และ2(5)=10eln(e)=e ln eไม่ถูกต้องคุณต้องทำln(e)
ln(eeee)^ln(ee)สั้นกว่าln(eeeeeeeeeeeeeeee)สำหรับ 16
ln(ee...e)) เป็นวิธีที่ดีที่สุดในการถ่ายทอดแง่บวก แก้ไข: ไม่มันไม่ใช่ln(e^(ln(eeeee)ln(eeee)))ดีกว่าสำหรับ 20