mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-05 16:26:47 +08:00
chore: merge "Added DecimalToRoman" (#707)
* Added DecimalToRoman * add explanation * added test
This commit is contained in:
52
Conversions/DecimalToRoman.js
Normal file
52
Conversions/DecimalToRoman.js
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
Decimal To Roman
|
||||
|
||||
This algorithm take decimal number and convert to roman numeral according to standard form (https://en.wikipedia.org/wiki/Roman_numerals#Description)
|
||||
|
||||
Algorithm & Explanation : https://www.rapidtables.com/convert/number/how-number-to-roman-numerals.html
|
||||
*/
|
||||
|
||||
const values = {
|
||||
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
|
||||
}
|
||||
|
||||
const orders = [
|
||||
'M',
|
||||
'CM',
|
||||
'D',
|
||||
'CD',
|
||||
'C',
|
||||
'XC',
|
||||
'L',
|
||||
'XL',
|
||||
'X',
|
||||
'IX',
|
||||
'V',
|
||||
'IV',
|
||||
'I'
|
||||
]
|
||||
|
||||
function decimalToRoman (num) {
|
||||
let roman = ''
|
||||
for (var symbol of orders) {
|
||||
while (num >= values[symbol]) {
|
||||
roman += symbol
|
||||
num -= values[symbol]
|
||||
}
|
||||
}
|
||||
return roman
|
||||
}
|
||||
|
||||
export { decimalToRoman }
|
13
Conversions/test/DecimalToRoman.test.js
Normal file
13
Conversions/test/DecimalToRoman.test.js
Normal file
@ -0,0 +1,13 @@
|
||||
import { decimalToRoman } from '../DecimalToRoman'
|
||||
|
||||
describe('decimalToRoman', () => {
|
||||
it('expects to return correct roman numeral of given number', () => {
|
||||
expect(decimalToRoman(34)).toBe('XXXIV')
|
||||
})
|
||||
it('expects to return correct roman numeral of given number', () => {
|
||||
expect(decimalToRoman(28)).toBe('XXVIII')
|
||||
})
|
||||
it('expects to return correct roman numeral of given number', () => {
|
||||
expect(decimalToRoman(2021)).toBe('MMXXI')
|
||||
})
|
||||
})
|
Reference in New Issue
Block a user