การป้อนข้อมูล:
จำนวนเต็ม
เอาท์พุท:
- ก่อนอื่นแปลงจำนวนเต็มเป็นตัวเลขโรมันที่เทียบเท่ากัน
- จากนั้นแปลงตัวอักษรพิมพ์ใหญ่ของตัวเลขโรมันแต่ละตัวให้เป็นค่าทศนิยม ASCII / UNICODE
- และเอาท์พุทผลรวมของสิ่งเหล่านั้น
ตัวอย่าง:
1991 -> MCMXCI -> 77+67+77+88+67+73 -> 449
^ input ^ output
ตัวเลขโรมัน:นี่คือตัวแปลงตัวเลขโรมันที่มีประโยชน์

กฏท้าทาย:
- มีการใช้กฎตัวเลขโรมันมาตรฐานดังนั้นจึงไม่มีรูปแบบอื่นที่เหมือน
IIIIหรือVIIIIแทนIVและIX* - บรรทัด Macron ด้านบนตัวเลขโรมันที่ผ่าน 1,000 คือ
¯(UNICODE nr. 175) ดังนั้นนับเป็นหนึ่งบรรทัดและสองเป็น+175+350 - คุณได้รับอนุญาตให้ใช้ประเภทอินพุตและเอาต์พุตชนิดใดก็ได้ตราบใดที่มันแสดงถึงจำนวนเต็ม
1 - 2,147,483,647กรณีทดสอบจะอยู่ในช่วงของ
* กฎตัวเลขโรมัน (อ้างอิงจาก Wikipedia):
ตัวเลขเกิดขึ้นจากการรวมสัญลักษณ์และการเพิ่มค่าดังนั้นจึง
IIเป็นสอง (สองคน) และXIIIเป็นสิบสาม (สิบและสามคน) เนื่องจากแต่ละตัวเลขมีค่าคงที่แทนที่จะเป็นตัวแทนทวีคูณของสิบหนึ่งร้อยและต่อ ๆ ไปตามตำแหน่งไม่จำเป็นต้องมี "การเก็บรักษา" เป็นศูนย์เช่นเดียวกับในจำนวน 207 หรือ 1,066; ตัวเลขเหล่านั้นถูกเขียนเป็นCCVII(สองร้อย, ห้าและสอง) และMLXVI(หนึ่งพัน, ห้าสิบ, สิบ, ห้าและหนึ่ง)สัญลักษณ์จะถูกวางจากซ้ายไปขวาตามลำดับของค่าเริ่มต้นที่ใหญ่ที่สุด อย่างไรก็ตามในบางกรณีเพื่อหลีกเลี่ยงอักขระสี่ตัวที่ถูกทำซ้ำอย่างต่อเนื่อง (เช่น
IIIIหรือXXXX) มักใช้สัญกรณ์การลบดังนี้
Iวางไว้ก่อนหน้าVหรือXบ่งชี้หนึ่งน้อยกว่าดังนั้นสี่คือIV(หนึ่งน้อยกว่าห้า) และเก้าคือIX(หนึ่งน้อยกว่าสิบ)Xวางไว้ก่อนหน้าLหรือCบ่งชี้ว่าน้อยกว่าสิบดังนั้นสี่สิบXL(สิบน้อยกว่าห้าสิบ) และเก้าสิบคือXC(สิบน้อยกว่าหนึ่งร้อย)Cวางไว้ก่อนหน้าDหรือMระบุน้อยกว่าหนึ่งร้อยดังนั้นสี่ร้อยคือCD(หนึ่งร้อยน้อยกว่าห้าร้อย) และเก้าร้อยคือCM(หนึ่งร้อยน้อยกว่าหนึ่งพัน)
ตัวอย่างเช่นMCMIVหนึ่งพันเก้าร้อยสี่ 1904 (Mเป็นหนึ่งพันCMคือ เก้าร้อยและIVสี่)ตัวอย่างของการใช้ตัวเลขโรมันสมัยใหม่ ได้แก่ :
1954 เป็นMCMLIV; 2533 เป็นMCMXC; 2014 เป็นMMXIV
แหล่งที่มา
กฎทั่วไป:
- นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ
อย่าปล่อยให้ภาษาโค้ดกอล์ฟกีดกันคุณจากการโพสต์คำตอบด้วยภาษาที่ไม่ได้เข้ารหัส พยายามหาคำตอบสั้น ๆ ที่เป็นไปได้สำหรับภาษาโปรแกรม 'ใด ๆ ' - กฎมาตรฐานจะใช้สำหรับคำตอบของคุณดังนั้นคุณจึงได้รับอนุญาตให้ใช้ STDIN / STDOUT ฟังก์ชัน / เมธอดพร้อมพารามิเตอร์ที่เหมาะสมโปรแกรมเต็มรูปแบบ การโทรของคุณ
- ช่องโหว่เริ่มต้นเป็นสิ่งต้องห้าม
- หากเป็นไปได้โปรดเพิ่มลิงค์พร้อมทดสอบรหัสของคุณ
- นอกจากนี้โปรดเพิ่มคำอธิบายหากจำเป็น
กรณีทดสอบ:
100 -> 67
1 -> 73
4 -> 159
22 -> 322
5000 -> 261
2016 -> 401
1000000000 -> 427
1991 -> 449
9999 -> 800
1111111111 -> 2344
2147483647 -> 5362
9999-> M(X)CMXCIX-> 77+263+67+77+88+67+73+88-> 800และ2147483647-> ((MMCXLV)MMCDLXXX)MMMDCXLVII-> ->427+427+417+438+426+436 + 252+252+242+243+251+263+263+263 + 77+77+77+68+67+88+76+86+73+73 5362ดังนั้นฉันจึงแก้ไขครั้งที่สอง แต่9999ถูกต้อง
2222222222ไม่อยู่ในช่วงที่กำหนด 5362นอกจากนี้ผมเห็นด้วยกับ