Hướng dẫn roman numeral converter javascript freecodecamp - công cụ chuyển đổi chữ số la mã javascript freecodecamp

Sự mô tả

Chuyển đổi số đã cho thành một chữ số La Mã.Tất cả các câu trả lời về chữ số La Mã nên được cung cấp trong trường hợp trên.

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 

Bài Viết Liên Quan

Chủ Đề