พื้นหลัง
ความท้าทายนี้ได้รับแรงบันดาลใจจากเว็บไซต์นี้ซึ่งเผยแพร่แผนภาพต่อไปนี้:
แผนภาพนี้แสดงให้เราเห็นว่าการแสดงออกของเลขโรมันที่ยาวที่สุดภายใต้ 250 คือ 188
ท้าทาย
สัญลักษณ์มาตรฐานที่ใช้ในการแสดงตัวเลขโรมันส่วนใหญ่มีดังต่อไปนี้: { I
, V
, X
, L
, C
, D
, M
} ที่ค่าตัวเลขของตัวละครที่มีM
= 1000 D
= 500 C
= 100 L
= 50 X
= 10 V
= 5 I
= 1
ในการท้าทายนี้เป้าหมายของคุณคือให้เป็นจำนวนเต็มบวกnคำนวณจำนวนตัวเลขโรมันที่ถูกต้องที่สามารถนำมาประกอบผ่านการต่อเชื่อมnของสัญลักษณ์มาตรฐาน
จากนั้นโปรแกรมของคุณจะต้องแสดงผลลัพธ์ของการคำนวณนี้!
การป้อนข้อมูล : เป็นจำนวนเต็มบวกn
เอาท์พุท : จำนวนที่ถูกต้องแสดงออกเลขโรมันของความยาวn
กฎสำหรับนิพจน์ตัวเลขโรมัน
แต่เดิมเลขโรมันมีการจับคู่แบบ "เพิ่มเติม" ซึ่งหมายความว่าตัวเลขจะถูกเขียนตามลำดับจากมากไปหาน้อยและผลรวมของค่าของตัวเลขทั้งหมดคือค่าของตัวเลข
ต่อมาต่อมาการจับคู่แบบลบการใช้การวางตัวเลขขนาดเล็กลงด้านหน้าที่ใหญ่กว่าเพื่อที่จะลบส่วนที่เล็กกว่าออกจากขนาดใหญ่ คู่ subtractive IXL
ไม่สามารถถูกล่ามโซ่เหมือนในการแสดงออกที่ไม่ถูกต้องต่อไปนี้:
ต่อไปนี้เป็นกฎวันที่ทันสมัยสำหรับการจับคู่แบบบวกและแบบลบ
- สามารถใช้ I, X และ C เพียงหนึ่งตัวเป็นตัวเลขนำหน้าในส่วนของคู่ลบ
- ฉันสามารถวางก่อน V หรือ X ในคู่ลบ
- X สามารถวางก่อน L หรือ C ในคู่ที่หักได้
- C สามารถวางไว้ก่อน D หรือ M ในคู่ของการลบ
- นอกเหนือจากคู่ที่ลบออกตัวเลขจะต้องอยู่ในลำดับถัดลงมา (หมายความว่าหากคุณวางตัวเลขนำหน้าของคู่ลบแต่ละคู่นั้นตัวเลขนั้นจะเรียงตามลำดับจากมากไปน้อย)
- M, C และ X ไม่สามารถเท่ากับหรือเกินจากหน่วยที่เล็กกว่า
- D, L และ V สามารถปรากฏได้เพียงครั้งเดียวเท่านั้น
- เฉพาะ M เท่านั้นที่สามารถทำซ้ำได้ 4 ครั้งขึ้นไป
หมายเหตุเพิ่มเติม
เราจะไม่ใช้สัญลักษณ์บาร์ ค่อนข้างเราเพียงแค่เพิ่มMเพิ่มเติมเพื่อแสดงหมายเลขใด ๆ
เหล่านี้เป็นกฎเดียวที่เราจะปฏิบัติตามสำหรับตัวเลขโรมันของเรา นั่นหมายความว่าการแสดงออกที่แปลกเช่น
IVI
จะได้รับการพิจารณาในระบบของเราเช่นกันโปรดจำไว้ว่าเราไม่นับจำนวนตัวเลขที่มีนิพจน์ความยาวnเนื่องจากบางตัวเลขมีหลายนิพจน์ แต่เรานับจำนวนนิพจน์ที่ถูกต้องเท่านั้น
กรณีทดสอบ
1
→ 7
2
→ 31
3
→ 105
ฉันตรวจสอบข้างต้นด้วยมือดังนั้นโปรดตรวจสอบอีกครั้งเพื่อตรวจสอบกรณีทดสอบและเพิ่มมากขึ้นถ้าคุณทำได้!
เกณฑ์การชนะ
นี่คือความท้าทายของรหัสกอล์ฟดังนั้นขอให้สนุก! ฉันจะยอมรับเฉพาะโซลูชันที่สามารถจัดการอินพุตอย่างน้อยจาก 1 ถึง 9 ได้อีกคือโบนัส!
แก้ไข
ตามที่ผู้วิจารณ์ร้องขอค้นหาด้านล่างหรือที่ลิงก์ pastebin นี้ 105 คอมโบที่ฉันนับสำหรับn = 3
III IVI IXI IXV IXX ปกเกล้าเจ้าอยู่หัวสิบสองสิบสี่สิบหก XVI XXI XXXV XI XLV XLX XCI XCV XCX XCD XCL XCC XCC XCC XII LII LIV LIX LIF LVI LXV LXX CII CIV CIX Cix Cix CXV CXX Cixx Cix CDV CDX CMI CMV CMX CML CMC CMD CMM DII DIV DIX DVI DXI DXX DXL DXC MDI MDV MDI MDV MDX MDI MDV MDX MDI MDV MDX MDI MDV MMX MML MMC MMD MMM
แก้ไข 2:
ใช้ที่ไม่แข็งแรงเล่นกอล์ฟต่อไปนี้รหัสเป็นมารยาทของโจนาธานอัลลันเพื่อตรวจสอบผลลัพธ์ของคุณ
แก้ไข 3:
ฉันขอโทษสำหรับข้อผิดพลาดทั้งหมดในการท้าทายนี้ ฉันจะทำให้ดีขึ้นในครั้งต่อไป!