พื้นหลัง
ภาษาโปรแกรมลึกลับหลายภาษาไม่มีตัวเลขในตัวดังนั้นคุณต้องคำนวณมันในขณะใช้งานจริง และในหลายกรณีเหล่านี้การแสดงตัวเลขอาจน่าสนใจทีเดียว เรามีความท้าทายเกี่ยวกับการแสดงตัวเลขสำหรับ Underload ความท้าทายนี้เป็นเรื่องเกี่ยวกับที่เป็นตัวแทนของตัวเลขในModular SNUSP (โปรดทราบว่าคุณไม่จำเป็นต้องเรียนรู้ SNUSP เพื่อให้การท้าทายนี้เสร็จสมบูรณ์ - ข้อมูลทั้งหมดที่คุณต้องการอยู่ในข้อกำหนด - แต่คุณอาจพบว่าพื้นหลังน่าสนใจ)
งาน
สำหรับวัตถุประสงค์ของการท้าทายนี้เป็นจำนวน Modular SNUSP คือสตริงที่เกิดขึ้นจากตัวละคร@, +และ=ยกเว้นว่าตัวอักษรตัวสุดท้ายเป็น#และที่ตัวละครสุดท้ายจะต้องเป็น+หรือ=(มันไม่สามารถเป็น@) ยกตัวอย่างเช่นตัวเลขที่ถูกต้อง ได้แก่@+#, ==#และ@@+@=#; ตัวอย่างของตัวเลขที่ไม่ถูกต้อง ได้แก่+=, และ@@#+?+#
ค่าของหมายเลข Modular SNUSP ถูกคำนวณแบบเรียกซ้ำดังนี้:
#มีค่าเป็น 0 (นี่คือกรณีพื้นฐาน)- ถ้าตัวเลขมีรูปแบบ
=xสำหรับสตริงมูลค่าเท่ากับมูลค่าของxx - หากตัวเลขมีรูปแบบ
+xสำหรับสตริงใด ๆxค่าของมันจะเท่ากับค่าของxบวก 1 - ถ้าตัวเลขมีแบบฟอร์ม
@cxสำหรับอักขระตัวเดียวcและสตริงxมูลค่าเท่ากับมูลค่าของแถมมูลค่าของxcx
สำหรับความท้าทายนี้คุณต้องเขียนโปรแกรมที่ใช้จำนวนเต็มไม่ใช่ค่าลบเป็นอินพุตและเอาต์พุตสตริงที่เป็นหมายเลข Modular SNUSP ที่สั้นที่สุดที่เป็นไปได้ที่มีค่าเท่ากับอินพุต
ชี้แจง
- เป็นไปได้ทั้งหมดที่จะมีมากกว่าหนึ่งสตริงที่มีค่าเท่ากันและโดยเฉพาะอย่างยิ่งสำหรับจำนวนเต็มบางตัวจะมีการผูกสำหรับหมายเลข Modular SNUSP ที่สั้นที่สุดด้วยค่านั้น ในกรณีเช่นนี้คุณสามารถส่งออกตัวเลขใด ๆ ที่เกี่ยวข้องกับการผูก
- ไม่มีข้อ จำกัด เกี่ยวกับอัลกอริทึมที่คุณใช้เพื่อค้นหาหมายเลข ตัวอย่างเช่นการบังคับใช้สตริงที่โหดร้ายและการประเมินพวกเขาเป็นชั้นเชิงทางกฎหมาย แต่ก็ทำสิ่งที่ฉลาดกว่าเพื่อลดพื้นที่การค้นหา
- ตามปกติใน PPCG การส่งของคุณอาจเป็นโปรแกรมเต็มรูปแบบหรือฟังก์ชั่น (เลือกภาษาใดก็ได้ที่กระชับยิ่งขึ้น)
- นี่ไม่ใช่ปัญหาเกี่ยวกับการจัดการรูปแบบอินพุตและเอาต์พุตดังนั้นคุณสามารถใช้วิธีการที่สมเหตุสมผลในการป้อนจำนวนเต็มที่ไม่ใช่ค่าลบและส่งออกสตริง มีคู่มือฉบับเต็มเกี่ยวกับเมตาแต่วิธีการทางกฎหมายที่ใช้กันมากที่สุด ได้แก่ ข้อโต้แย้งฟังก์ชัน / คืน, อาร์กิวเมนต์บรรทัดคำสั่งและอินพุต / เอาต์พุตมาตรฐานมาตรฐาน
กรณีทดสอบ
ต่อไปนี้เป็นตัวแทนที่สั้นที่สุดของตัวเลขสองสามตัวแรก:
- 0 :
# - 1 :
+# - 2 :
++# - 3 :
+++#หรือ@++# - 4 :
++++#หรือ+@++#หรือ@=++# - 5 :
@+++#หรือ@@++# - 6 :
+@+++#หรือ+@@++#หรือ@=+++#หรือ@=@++#หรือ@@=++# - 7 :
@++++#หรือ@+@++# - 8 :
@@+++#หรือ@@@++# - 9 :
+@@+++#หรือ+@@@++#หรือ@+++++#หรือ@++@++#หรือ@+@=++#หรือ@@=+++#หรือ@@=@++# - 10 :
@=@+++#หรือ@=@@++#หรือ@@@=++#( นี่เป็นกรณีทดสอบที่สำคัญที่ควรตรวจสอบเนื่องจากมีคำตอบทั้งหมดที่เป็นไปได้=) - 11 :
@+@+++#หรือ@+@@++#หรือ@@++++#หรือ@@+@++# - 12 :
+@+@+++#หรือ+@+@@++#หรือ+@@++++#หรือ+@@+@++#หรือ@=+@+++#หรือ@=+@@++#หรือ@=@=+++#หรือ@=@=@++#หรือ@=@@=++#หรือ@@=++++#หรือ@@=+@++#หรือ@@=@=++# - 13 :
@@@+++#หรือ@@@@++# - 14 :
+@@@+++#หรือ+@@@@++#หรือ@=@++++#หรือ@=@+@++#หรือ@@+++++#หรือ@@++@++#หรือ@@+@=++# - 15 :
@+@++++#หรือ@+@+@++#หรือ@@=@+++#หรือ@@=@@++#หรือ@@@=+++#หรือ@@@=@++#
เป็นกรณีการทดสอบใหญ่ออกจากการป้อนข้อมูลที่40ควรจะ@@@=@@+++#, @@@=@@@++#, หรือ@@@@=@+++#@@@@=@@++#
เงื่อนไขชัยชนะ
ในฐานะที่เป็นความท้าทายรหัส - กอล์ฟผู้ชนะคือรายการที่สั้นที่สุดวัดเป็นไบต์
=จะเกิดขึ้นได้อย่างเหมาะสมเท่านั้น@=ใช่ไหม