2013年10月21日月曜日

開発環境

『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の12章(新しいクラスのオブジェクト), 12.6(練習問題の続き)、roman_to_integer 'mcmxcix'!をDartで解いてみる。

その他参考書籍

romanToInteger

コード

sample.dart

int romanToInteger(String roman){
  var num = 0,
      pre = 0,
      i;
  Map<String, int> r_n = {'m': 1000,
                          'd': 500,
                          'c': 100,
                          'l': 50,
                          'x': 10,
                          'v': 5,
                          'i': 1};
  for(i = roman.length - 1; i >= 0; i -= 1){
    var c = roman[i],
        d = c.toLowerCase(),
        n;
    if(!r_n.containsKey(d)){
      throw '有効なローマ数字になっていない!';
    }
    n = r_n[d];
    if (n >= pre){
      num += n;
      pre = n;
    } else {
      num -= n;
    }
  }
  return num;
}

void main(){
  for(var roman in ['abcde', 'mcmxcix']){
    try{
      print('${roman}: ${romanToInteger(roman)}');
    }catch(e){
      print('$e');
    }
  }
}

入出力結果

有効なローマ数字になっていない!
mcmxcix: 1999

0 コメント:

コメントを投稿