首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >补充说,老式的方式

补充说,老式的方式
EN

Code Golf用户
提问于 2012-05-28 04:10:22
回答 7查看 1K关注 0票数 8

概述

古罗马人设计了一个使用拉丁字母的数字系统,这一系统很好地为他们服务,而且现代文明仍在使用,尽管程度要小得多。在使用这些数字的时候,罗马人必须学会使用和操纵这些数字,这样才能在许多应用中发挥很大作用。例如,如果一个人拥有35头牛,他又买了27头牛,他怎么会知道新的总数,而不是把它们全部计算在内呢?(好的,用算盘.)如果罗马人能做到这一点,我们当然也能搞清楚。

目标

编写最短的算法/函数/程序,将两个罗马数字相加并输出结果,而不将输入的字符串表示转换为数字。

规则/约束

由于历史/中世纪前格式的不一致,我将概述一些非标准(按现代用法)的正字法规则。作为示例,请参阅下面的值指南。

  • 字母I、X、C和M可以连续重复四次,但不再重复。D,L,V永远不能重复。
  • 罗马表示法中的另一个字母的右边的字母与其左边的字母具有相同或较小的价值。
    • 换句话说,VIIII == 9但是IX != 9是无效的/不允许的。

  • 所有输入值都将是2,000 (MM)或更少;不需要对大于M的数字表示。
  • 根据上述规则,所有输入值都将是有效的罗马数字。
  • 作为解决方案的一部分,不得将任何数字转换为十进制、二进制或任何其他数字系统(欢迎使用这种方法验证结果)。
  • 这是密码高尔夫,所以最短的代码获胜。

值指南

代码语言:javascript
复制
Symbol        Value
I             1
II            2
III           3
IIII          4
V             5
VIIII         9
X             10
XIIII         14
XXXXIIII      44
L             50
LXXXXVIIII    99
C             100
D             500
M             1,000

示例

代码语言:javascript
复制
XII + VIII = XX (12 + 8 = 20)
MCCXXII + MCCXXII = MMCCCCXXXXIIII (1,222 + 1,222 = 2,444)
XXIIII + XXXXII = LXVI (24 + 42 = 66)

如果需要进一步澄清,请询问。

EN

回答 7

Code Golf用户

发布于 2012-05-28 07:02:24

Python,100

代码语言:javascript
复制
s="IVXLCDM"
r=raw_input()
a=""
i=2
u=0
for c in s:r+=u/i*c;i=7-i;u=r.count(c);a+=u%i*c
print a[::-1]

从输入中获取一个字符串(例如VIII + XIIVIII + XII =)。

票数 5
EN

Code Golf用户

发布于 2012-05-30 10:48:09

GNU Sed,131个字符

代码语言:javascript
复制
:;s/M/DD/;s/D/CCCCC/;s/C/LL/;s/L/XXXXX/;s/X/VV/;s/V/IIIII/;t;s/\W//g;:b;s/IIIII/V/;s/VV/X/;s/XXXXX/L/;s/LL/C/;s/CCCCC/D/;s/DD/M/;tb
票数 3
EN

Code Golf用户

发布于 2012-05-28 07:24:56

Python,174个字符

一个非常简单的算法-计数每一个数字,循环处理溢出到下一个,打印。

从标准输入读取。类似于XVI + CXX的东西会起作用(忽略除数字以外的任何东西,因此并不真正需要+ )。

代码语言:javascript
复制
x="IVXLCDM"
i=raw_input()
d=dict((c,i.count(c))for c in x)
for c in x:
    n=2+3*(c in x[::2])
    if d[c]>=n:d[c]-=n;d[x[x.find(c)+1]]+=1
print"".join(c*d[c]for c in reversed(x))
票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/6005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档