Open seakingxc opened 5 years ago
function convert(num) {
var a=[["","I","II","III","IV","V","VI","VII","VIII","IX"],
["","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"],
["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"],
["","M","MM","MMM"]];
var i=a[3][Math.floor(num/1000)];
var j=a[2][Math.floor(num%1000/100)];
var k=a[1][Math.floor(num%100/10)];
var l=a[0][num%10];
return i+j+k+l;
}
function convert(num) {
var a=[
["","I","II","III","IV","V","VI","VII","VIII","IX"], //个位
["","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"], //十位
["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"], //百位
["", "M", "MM", "MMM"],//千位
];
return num.toString().split('').reverse().map((cur, i) => {
return a[i][cur];
}).reverse().join('');
}
convert(10);
function convert(num) { var nnum=num.toString().split(""); var fir=[["","I","II","III","IV","V","VI","VII","VIII","IX"], ["","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"], ["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"], ["0","M","MM","MMM"]]; for(var i=0;i<num.toString().length;i++){ nnum.splice(nnum.length-i-1,1,fir[i][nnum[nnum.length-i-1]]); } return nnum.join(""); }
convert(891);
var romanNumberObj = {
"0": ["I","V"],
"1": ["X","L"],
"2": ["C","D"],
"3": ["M"]
};
var numLength = 0;
var arr = [];
var newArr = [];
//判断用户传入是否是一个数字,是一个数字的话,算出数字的长度;
if(!isNaN(num) || num < 4999 && num > 0){
var strnum = num + "";
arr = strnum.split("");
numLength = arr.length;
}else{
return "请输入一个 小于5000 的正整数;";
}
for(var i = 0; i < numLength; i ++){
var diff = arr[i];
var index = numLength - i -1;
if(diff == 9){
var a = romanNumberObj[index][0] + romanNumberObj[index + 1][0];
newArr.push(a);
}else if(diff > 5){
var b = romanNumberObj[index][1];
while(diff > 5){
diff--;
b += romanNumberObj[index][0];
}
newArr.push(b);
}else if(diff == 5){
var c = romanNumberObj[index][1];
console.log("c--" + c);
newArr.push(c);
}else if(diff == 4){
var d = romanNumberObj[index][0] + romanNumberObj[index][1];
newArr.push(d);
}else{
var e = "";
while(diff > 0){
diff--;
e += romanNumberObj[index][0];
}
newArr.push(e);
}
}
return newArr.join("");
}
convert(12);
Challenge Roman Numeral Converter has an issue. User Agent is:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
. Please describe how to reproduce this issue, and include links to screenshots if possible.function convert(num) { //I/V/X/L/C/D/M //1/5/10/50/100/500/1000
//分析数字有多少位,比如有3个就是百位、2个就是十位、1个就是个位 var numlength = String(num).length; var arr = String(num).split(""); var result="";
switch(numlength){ case 4: //千位 var count = Number(arr[0]); while(count){ result+=getRomanByNum(1000); count--; } result+=bai(arr,1); result+=shi(arr,2); result+=ge(arr,3); break; case 3: result+=bai(arr,0); result+=shi(arr,1); result+=ge(arr,2); break; case 2: result+=shi(arr,0); result+=ge(arr,1); break; case 1: result+=ge(arr,0); break; } return result; } function bai(arr,index){ var result=""; var count = Number(arr[index]); if(count >0){ //百位 if(count < 5){ if(count ===4){ result+=getRomanByNum(100); result+=getRomanByNum(500); }else{ while(count){ result+=getRomanByNum(100); count--; } } }else if(count == 5){ result+=getRomanByNum(500); }else{ if(count === 9){ result+=getRomanByNum(100); result+=getRomanByNum(1000); }else{ result+=getRomanByNum(500); count = count-5; while(count){ result+=getRomanByNum(100); count--; } } } } return result; }
function shi(arr,index){ var result=""; //十位 var count = Number(arr[index]); if(count >0){ if(count < 5){ if(count ===4 ){ result+=getRomanByNum(10); result+=getRomanByNum(50); }else{ while(count){ result+=getRomanByNum(10); count--; } } }else if(count == 5){ result+=getRomanByNum(50); }else{ if(count === 9){ //9x result+=getRomanByNum(10); result+=getRomanByNum(100); }else{ result+=getRomanByNum(50); count = count-5; while(count){ result+=getRomanByNum(10); count--; } } } } return result; }
function ge(arr,index){ var result=""; //个位 var count = Number(arr[index]); if(count >0){ if(count < 5){ if(count === 4){ result+=getRomanByNum(1); result+=getRomanByNum(5); }else{ while(count){ result+=getRomanByNum(1); count--; } } }else if(count == 5){ result+=getRomanByNum(5); }else{ if(count === 9){ result+=getRomanByNum(1); result+=getRomanByNum(10); }else{ result+=getRomanByNum(5); count = count-5; while(count){ result+=getRomanByNum(1); count--; } } } } return result; } function getRomanByNum(num){ var roman=""; switch(num){ case 1: roman = "I"; break; case 5: roman = "V"; break; case 10: roman = "X"; break; case 50: roman = "L"; break; case 100: roman = "C"; break; case 500: roman = "D"; break; case 1000: roman = "M"; break;
} return roman; }
convert(1004);