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