แก้ไข: ฉันจะโพสต์คำถามนี้ในเวอร์ชันที่ใหม่กว่าใน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)=10
eln(e)=e
ln e
ไม่ถูกต้องคุณต้องทำln(e)
ln(eeee)^ln(ee)
สั้นกว่าln(eeeeeeeeeeeeeeee)
สำหรับ 16
ln(ee...e)
) เป็นวิธีที่ดีที่สุดในการถ่ายทอดแง่บวก แก้ไข: ไม่มันไม่ใช่ln(e^(ln(eeeee)ln(eeee)))
ดีกว่าสำหรับ 20