2016-07-30 9 views
0

ローマ数字をJavascriptでアラビア語に変換するアルゴリズムを実装したいと思います。以下の推奨方法を使用してください。Javascriptでローマ数字を変換するアルゴリズム

  1. Array.prototype.splice()
  2. Array.prototype.indexOf()
  3. Array.prototype.join()

私はすでに、このタスクを解くアルゴリズム

function convertToRoman(num) { 

    var numeric = [ 5000,4000,1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 ]; 
    var roman = [ 'V\u0305','I\u0305V\u0305','M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I' ]; 

    var output = '', i, len = numeric.length; 

    for (i = 0; i < len; i++) { 
    while (numeric[i] <= num) { 
     output += roman[i]; 
     num -= numeric[i]; 
    } 
    } 

    return output; 
} 

convertToRoman(4999); 

それにもかかわらず、私は上記でアルゴリズムを実装する方法好奇心を発見しました上記の方法。

ありがとう、私は厳しく判断しないでください、私は初心者プログラマーです。

+0

を明示的にあなたの現在のソリューションは、おそらく(罰金だとき、これらの関数を使用したいのはなぜ関連しない関数をいくつかshoehorningするよりも良いでしょうか?)この宿題ですか? – str

+0

私はこれらのメソッドをどのように適用するのか理解したいので。いいえ、それはフリーコードキャンプのアルゴリズムである家庭の仕事ではありません。 – NZMAI

答えて

1

私は質問が既に回答されていると思う:ローマ数字に
https://stackoverflow.com/a/9083857/4269495

数:

Number.prototype.toRoman= function() { 
    var num = Math.floor(this), 
     val, s= '', i= 0, 
     v = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1], 
     r = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']; 

    function toBigRoman(n) { 
     var ret = '', n1 = '', rem = n; 
     while (rem > 1000) { 
      var prefix = '', suffix = '', n = rem, s = '' + rem, magnitude = 1; 
      while (n > 1000) { 
       n /= 1000; 
       magnitude *= 1000; 
       prefix += '('; 
       suffix += ')'; 
      } 
      n1 = Math.floor(n); 
      rem = s - (n1 * magnitude); 
      ret += prefix + n1.toRoman() + suffix; 
     } 
     return ret + rem.toRoman(); 
    } 

    if (this - num || num < 1) num = 0; 
    if (num > 3999) return toBigRoman(num); 

    while (num) { 
     val = v[i]; 
     while (num >= val) { 
      num -= val; 
      s += r[i]; 
     } 
     ++i; 
    } 
    return s; 
}; 
+3

次に、質問を重複としてマークします。 – christopher

関連する問題