// Переводит римские числа в арабские
var num = prompt("Введите римское число", "ammmCMXCIX"); // default - 3999
if(num) alert(RomanToArabic(num));
function RomanToArabic() {
// объявляем переменные, инициализируем объект
var i, alph = { I:1, V:5, X:10, L:50, C:100, D:500, M:1000 };
// j - счетчик символов
// h - результат предыдущих вычислений
// n - возвращаемое число
// По буквам строки/римского числа
for(var h = 0, j = 0, n = 0; j < arguments[0].length; j++) {
// используем объект как ассоциативный массив - по римской цифре определяем арабскую
i = alph[arguments[0].charAt(j).toUpperCase()];
/* // строку ниже, в данном случае, можно записать так:
if(i != undefined) { // римская цифра?
if(h < i) { // предыдующая цифра < текущей, вычитаем
h = i - h * 2; // т.е. h = i - (h << 1)
}
else { // предыдующая цифра >= текущей, получаем эту цифру
h = i;
}
n += h; // собираем число
} */
if(i) n += h = (h < i ? i - (h << 1) : i);
}
// возвращаем число
return n;
}