首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Code Golf新年版-从整数到罗马数字

Code Golf新年版-从整数到罗马数字
EN

Stack Overflow用户
提问于 2008-12-27 02:21:03
回答 31查看 3.9K关注 0票数 17

编写一个带有单个命令行参数N的程序,并打印出相应的Roman Numeral

例如N= 2009应打印MMIX。

假设这应该适用于0

(用Christmas edition打我的第一轮代码高尔夫很有趣,我想这可以用来迎接新年。我谷歌了一下,看看以前是否在其他地方出现过这个问题,看起来没有,但请让我知道这是太难还是太容易,或者规则是否需要改变。)

MMIX快乐!

EN

回答 31

Stack Overflow用户

发布于 2009-01-14 21:46:32

Perl: 69个笔划(数一数!)

69个笔划,包括首先调用perl:

代码语言:javascript
复制
$ perl -ple's!.!($#.=5x$&*8%29628)=~y$IVCXL4620-8$XLMCDIXV$d!eg;last}{'
3484
MMMCDLXXXIV

  • 读取一行,写入一行。
  • 的工作范围为0到3999 (包括0和3999)。(打印0的空字符串。)
  • 在Perl高尔夫比赛中,通常得分为62杆= 58 (代码)+4(开关)。
  • 为什么,是的,这些是不匹配的大括号。谢谢你的关心。=)

字幕:最初归功于Ton Hospel。涉及不匹配的大括号的技巧来自this post中的rev.pl (顺便说一句,这很巧妙)。

票数 17
EN

Stack Overflow用户

发布于 2008-12-27 02:49:21

在C#中,作为Int32的扩展方法

代码语言:javascript
复制
public static class Int32Extension {
    public static string ToRomanNumeral(this int number) {
        Dictionary<int, string> lookup = new Dictionary<int, string>() {
            { 1000000, "M_" },
            { 900000, "C_D_" },
            { 500000, "D_" },
            { 400000, "C_D_" },
            { 100000, "C_" },
            { 90000, "X_C_" },
            { 50000, "L_" },
            { 40000, "X_L_" },
            { 10000, "X_" },
            { 9000, "MX_"},
            { 5000, "V_" },
            { 4000, "MV_" },
            { 1000, "M" },
            { 900, "CM" },
            { 500, "D" },
            { 400, "CD" },
            { 100,"C" },
            { 90, "XC" },
            { 50, "L" },
            { 40, "XL" },
            { 10, "X" },
            { 9, "IX" },
            { 5, "V" },
            { 4, "IV" },
            { 1, "I" }
        };

        StringBuilder answer = new StringBuilder();
        foreach (int key in lookup.Keys.OrderBy(k => -1 * k)) {
            while (number >= key) {
                number -= key;
                answer.Append(lookup[key]);
            }
        }
        return answer.ToString();
    }
}

下划线应在相应字母上方加下划线,以使其为真正的罗马数字。

票数 14
EN

Stack Overflow用户

发布于 2008-12-27 02:55:21

通用lisp (SBCL)。通过"wc -c“统计63个字符。

代码语言:javascript
复制
(format t "~@R~%" (parse-integer (elt *posix-argv* 1)))
(quit)

这只适用于3999以下的数字。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/394574

复制
相关文章

相似问题

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