1
4
如果你不想重复,你可以从我的作品中得到启发 Code Golf New Year Edition - Integer to Roman Numeral contribution .
出于好奇,您的代码在字节码中比我的快5%,在本机中慢5%。它在Intel(R)Core(TM)2 Duo CPU T7500@2.20GHz上以1.2us字节码和370ns本机执行一次转换。 编辑 :我没有使用尾部递归版本,因为递归的深度非常小。所以我很好奇是否有任何表现上的损失或从中获益。我无法用字节码衡量我的算法中的任何内容,即使是原生的,但有趣的事情发生在原始代码中。如果我以直接的方式编写原始算法(不针对尾部调用进行优化),它比我在本机代码中的速度快40%左右(一次转换大约需要250ns)。字节码之间没有可测量的差异。这是一个有趣的例子,尾部调用优化不值得做。
附笔。
:展平列表不是Erlang代码的常见行为。上述示例中的返回结构众所周知为
编辑2
|
2
6
|
3
5
我已经把这个添加到 rosettacode.org 之前,在这里重新发布。
|
4
2
重复部分是累加和函数调用。把它们搬到一个地方,事情就会好得多。
同样的错误告诉你9和11是相等的,40和60,90和110。。。。 |
5
2
这个过程有三个部分,一个规则列表,其中哪些符号代表哪些数字,搜索这些规则以找到下一个符号,以及一个将数字减少到零的迭代。每个部分都有一个函数,我们有:
|
6
1
通过定义宏,可以进一步保存一些字符。我确实讨厌宏,但你可能会喜欢它们:)。
|
7
1
in Excel 但基本上,您的代码仍然是一系列大小写/模式匹配头。。。 |
8
-1
在任何语言中,使用查找表都应该使其更短更快。 |