if (skip) { skip = false;
}else {
if (nextValue > romanValue) {
if (romanValue == 5 romanValue == 50 romanValue == 500){
return "Invalid";
}
arabicNumber = arabicNumber + nextValue - romanValue;
skip = true;
var nextnextValue = dict[romanNumber[i+2]];
if (nextnextValue == romanValue)
return "Invalid";
} else { arabicNumber = arabicNumber + romanValue;
}
} UMM so IV returns as invalid XLI also comes out invalid and also MDC and MCD returns as invalid, i think there are VERY minor things going on function RomanToArabic(romanNumber){ var dict = { "I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000 };
romanNumber = romanNumber.toUpperCase();
var romanValue = "";
var duplicateCheck = false;
var previousValue = 0;
var consecutiveNumbers = 0;
var skip = false;
var arabicNumber = 0;
for(var i = 0; i < romanNumber.length; i++) { romanValue = dict[romanNumber[i]];
if (romanValue == 5 romanValue == 50 romanValue == 500) {
duplicateCheck = true;
if (duplicateCheck && romanValue == 5 romanValue == 50 romanValue == 500) {
return "Invalid";
}
}
if (previousValue == romanValue) { consecutiveNumbers = consecutiveNumbers + 1;
if (consecutiveNumbers >= 3 && (romanValue == 1 romanValue == 10 romanValue == 100 romanValue == 1000)) {
return "Invalid";
}
}
else {
consecutiveNumbers = 0;
}
var nextValue = dict[romanNumber[i+1]];
if (skip) {
skip = false;
}else {
if (nextValue > romanValue) {
if (romanValue == 5 romanValue == 50 || romanValue == 500){
return "Invalid";
}
arabicNumber = arabicNumber + nextValue - romanValue;
skip = true;
var nextnextValue = dict[romanNumber[i+2]];
if (nextnextValue == romanValue)
return "Invalid";
} else { arabicNumber = arabicNumber + romanValue;
}
}