ข้อความรส
สต็อก esolang Underloadมีความสัมพันธ์ที่น่าสนใจกับการเขียนโปรแกรมการทำงาน หนึ่งในนั้นคือการรักษาประเภทข้อมูลที่เป็นตัวเลข - เช่นแคลคูลัสแลมบ์ดาคุณเป็นตัวแทนของจำนวนธรรมชาติ N โดยฟังก์ชั่นที่ดำเนินการแอ็คชั่น N ครั้ง
เพื่อให้ง่ายขึ้นเราจะพิจารณาเฉพาะชุดย่อยของคำสั่ง Underload เท่านั้น:
:- คำสั่งนี้ทำซ้ำรายการบนสุดในสแต็ก*- คำสั่งนี้ต่อสองไอเท็มบนสุดของสแต็กเข้ากับไอเท็มเดี่ยว
เรากำหนดUnderload numeral Nเป็นสตริง:และ*เมื่อดำเนินการใช้รายการบนสุดในสแต็กและสร้างสำเนา N ของรายการนั้นต่อกัน ตัวอย่างบางส่วน:
- ไม่มีตัวเลข Underload 0, -1, 1/2, π
- สตริงว่าง
คือ Underload ตัวเลข 1 เนื่องจากปล่อยให้สแต็กไม่ถูกแตะต้อง :*เป็น underload เลข 2 เพราะมันซ้ำรายการด้านบนแล้วเชื่อมทั้งสองเล่มด้วยกันเป็นรายการเดียว:(A):*= =(A)(A)*(AA)::**เป็น underload เลขที่(A)::**3:(A)(A):**=(A)(AA)*=(AAA)=:::***เป็น Underload ตัวเลข 4:*:*นอกจากนี้ยังเป็น underload เลขที่(A):*:*4:(AA):*=(AA)(AA)*=(AAAA)=
โดยทั่วไปแล้วคุณจะพบว่าหากMและNเป็น Underload numerals M และ N ก็:N*จะเป็นตัวเลข N + 1 และMNเป็นตัวเลข M × N
ความท้าทาย
งานของคุณคือการเขียนโปรแกรมที่สั้นที่สุด (รับอินพุตบน STDIN) หรือฟังก์ชั่น (รับอินพุตผ่านอาร์กิวเมนต์) ซึ่งสร้างการแสดงที่สั้นที่สุดของตัวเลข Underload สำหรับอินพุตเป็นสตริง กล่าวคือถ้าอินพุตเป็นจำนวนธรรมชาติบวก N> 1 คุณต้องสร้างตัวเลข Underload N ที่มีความยาวเป็นอักขระน้อยกว่าหรือเท่ากับของตัวเลขอื่น ๆ Underload N ทั้งหมด
ตัวอย่างอินพุตและเอาต์พุต: ("อินพุต - OUTPUT.")
- 1 -
. - 2
:*- - 5 -
::*:**(2 × 2 + 1) - 7 -
::*::***(2 × 3 + 1) หรือ:::**:**(3 × 2 + 1) - 33 -
::*:*:*:*:**(2 × 2 × 2 × 2 × 2 + 1) - 49 -
::*:*:*:*::***(16 × 3 + 1, ความยาว 14) แต่ไม่::*::***::*::***(7 × 7, ความยาว 16)
หากอินพุตไม่ใช่จำนวนบวกคุณมีอิสระที่จะส่งคืนข้อผิดพลาดสร้างพฤติกรรมที่ไม่ได้กำหนดหรือแม้แต่ล้มเหลวในการยกเลิก คำอธิบายเกี่ยวกับวิธีการของการส่งคำตอบในการค้นหาคำตอบนั้น
ข้อ จำกัด ช่องโหว่มาตรฐานใช้: ไม่มีการป้อนข้อมูลเพิ่มเติมไม่มีคำขอเว็บค่าส่งออก / คืนจะต้องเป็นคำตอบที่แน่นอนและไม่กระแสสุ่มที่ไม่มีที่สิ้นสุดของ:และ*อื่น ๆ
xคือ2*A117498(x)ที่A117498ให้การผสมผสานที่ดีที่สุดของวิธีการแบบไบนารีและปัจจัยสำหรับการค้นหาสายโซ่นอกจากนี้