创建最短函数以将罗马数字字符串转换为整数。
每个字母的规则可以在Wikipedia页面上找到。大于1,000的字母将带有括号,以表示其较高的价值。
要求:
- 必须将罗马数字1转换为500,000
- 必须在一分钟内完成
- 不使用可能提供优势的内置函数(例如:将罗马数字转换为整数的函数)
- 是功能
该函数不需要支持分数。任何无效的输入都应返回数字0。
最短的函数获胜。如果是平局,则得票最多的人获胜。
测试用例
输入值
III
输出量
3
输入值
IIII
输出量
0
输入值
XVI
输出量
16
输入值
(C)(D)(L)MMI
输出量
452001
不当对我来说意味着非法的,因此应返回0
—
马丁纽约
@Anon:从我更改原始的第三个测试用例起,该数字是错误的类型。它不需要支持不正确的格式,因为它将被视为无效输入。
—
凯文·布朗
标准做法(以及该问题的重复说明)是将无效输入视为未定义的行为。由于这个问题已有四年之久,而且只有一个答案,我们是否应该更改要求?
—
lirtosiast
@KevinBrown我没有看到带括号的字母的来源或解释。我认为您应该更改规范以匹配codegolf.stackexchange.com/q/16254/43319,然后可以将此处的答案迁移到此处。
—
亚当
(C)(D)(L)MMI
将是452,001。您是如何获得价值的?另外,这是否需要支持“不正确的”形式(例如IC
而不是XCIX
)?