Sự mô tả
Xét nghiệm
tests:
- text:
convertToRoman[2]
should return "II".
testString: assert.deepEqual[convertToRoman[2], "II"];
- text: convertToRoman[3]
should return "III".
testString: assert.deepEqual[convertToRoman[3], "III"];
- text: convertToRoman[4]
should return "IV".
testString: assert.deepEqual[convertToRoman[4], "IV"];
- text: convertToRoman[5]
should return "V".
testString: assert.deepEqual[convertToRoman[5], "V"];
- text: convertToRoman[9]
should return "IX".
testString: assert.deepEqual[convertToRoman[9], "IX"];
- text: convertToRoman[12]
should return "XII".
testString: assert.deepEqual[convertToRoman[12], "XII"];
- text: convertToRoman[16]
should return "XVI".
testString: assert.deepEqual[convertToRoman[16], "XVI"];
- text: convertToRoman[29]
should return "XXIX".
testString: assert.deepEqual[convertToRoman[29], "XXIX"];
- text: convertToRoman[44]
should return "XLIV".
testString: assert.deepEqual[convertToRoman[44], "XLIV"];
- text: convertToRoman[45]
should return "XLV"
testString: assert.deepEqual[convertToRoman[45], "XLV"];
- text: convertToRoman[68]
should return "LXVIII"
testString: assert.deepEqual[convertToRoman[68], "LXVIII"];
- text: convertToRoman[83]
should return "LXXXIII"
testString: assert.deepEqual[convertToRoman[83], "LXXXIII"];
- text: convertToRoman[97]
should return "XCVII"
testString: assert.deepEqual[convertToRoman[97], "XCVII"];
- text: convertToRoman[99]
should return "XCIX"
testString: assert.deepEqual[convertToRoman[99], "XCIX"];
- text: convertToRoman[400]
should return "CD"
testString: assert.deepEqual[convertToRoman[400], "CD"];
- text: convertToRoman[500]
should return "D"
testString: assert.deepEqual[convertToRoman[500], "D"];
- text: convertToRoman[501]
should return "DI"
testString: assert.deepEqual[convertToRoman[501], "DI"];
- text: convertToRoman[649]
should return "DCXLIX"
testString: assert.deepEqual[convertToRoman[649], "DCXLIX"];
- text: convertToRoman[798]
should return "DCCXCVIII"
testString: assert.deepEqual[convertToRoman[798], "DCCXCVIII"];
- text: convertToRoman[891]
should return "DCCCXCI"
testString: assert.deepEqual[convertToRoman[891], "DCCCXCI"];
- text: convertToRoman[1000]
should return "M"
testString: assert.deepEqual[convertToRoman[1000], "M"];
- text: convertToRoman[1004]
should return "MIV"
testString: assert.deepEqual[convertToRoman[1004], "MIV"];
- text: convertToRoman[1006]
should return "MVI"
testString: assert.deepEqual[convertToRoman[1006], "MVI"];
- text: convertToRoman[1023]
should return "MXXIII"
testString: assert.deepEqual[convertToRoman[1023], "MXXIII"];
- text: convertToRoman[2014]
should return "MMXIV"
testString: assert.deepEqual[convertToRoman[2014], "MMXIV"];
- text: convertToRoman[3999]
should return "MMMCMXCIX"
testString: assert.deepEqual[convertToRoman[3999], "MMMCMXCIX"];
Dung dịch
Soln chính thức:
function convertToRoman[num] { var ref = [['M', 1000], ['CM', 900], ['D', 500], ['CD', 400], ['C', 100], ['XC', 90], ['L', 50], ['XL', 40], ['X', 10], ['IX', 9], ['V', 5], ['IV', 4], ['I', 1]]; var res = []; ref.forEach[function[p] { while [num >= p[1]] { res.push[p[0]]; num -= p[1]; } }]; return res.join['']; }
Soln của tôi:
function convertToRoman[num] { //Break the number into Thousands, Hundreds, Tens and Ones, and write down each in turn. //get the digits const numStr=num.toString[]; const len=numStr.length; let Thousands=0,Hundreds= 0,Tens= 0; if[len>=2]{Tens=parseInt[numStr[len-1-1]];} if[len>=3]{Hundreds=parseInt[numStr[len-1-2]];} if[len==4]{Thousands=parseInt[numStr[0]];} const Ones=num%10; const lookup=[ ["","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 lookup[3][Thousands]+lookup[2][Hundreds]+ lookup[1][Tens]+lookup[0][Ones]; } convertToRoman[36];
Giải pháp của tôi là giải pháp đơn giản và cơ bản nhất.Dưới đây là các giải pháp tiến bộ hơn được đưa ra bởi Hướng dẫn Freecodecamp: Soln 1:
Below are the more advance solutions given by the freecodecamp guide:
Soln 1:
var convertToRoman = function[num] { var decimalValue = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]; var romanNumeral = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']; var romanized = ""; for [var index = 0; index