การป้อนข้อมูล:
จำนวนเต็ม
เอาท์พุท:
- ก่อนอื่นแปลงจำนวนเต็มเป็นตัวเลขโรมันที่เทียบเท่ากัน
- จากนั้นแปลงตัวอักษรพิมพ์ใหญ่ของตัวเลขโรมันแต่ละตัวให้เป็นค่าทศนิยม 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
นอกจากนี้ผมเห็นด้วยกับ