Update and rename intToRoman.md to toRomanNumeral.md

This commit is contained in:
Isabelle Viktoria Maciohsek
2020-10-06 19:56:22 +03:00
committed by GitHub
parent fbda8c206b
commit 94cff00712
2 changed files with 42 additions and 31 deletions

View File

@ -1,31 +0,0 @@
---
title: intToRoman
tags: integer,roman
---
### Convert Integer to Roman Number
Following snippet is useful for converting integer number into roman number.
***Note:-*** This code is only useful for number between 1 and 3999.
according to Wikipedia the largest number you can represent in Roman is 3999. [click here](https://en.wikipedia.org/wiki/Roman_numerals)
```js
function intToRoman(num) {
const lookup = {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};
let roman = '';
for (let i in lookup ) {
while ( num >= lookup[i] ) {
roman += i;
num -= lookup[i];
}
}
return roman;
}
```
```js
intToRoman(11); // XI
intToRoman(03); // III
intToRoman(1998) // MCMXCVIII
```

View File

@ -0,0 +1,42 @@
---
title: toRomanNumeral
tags: math,string,intermediate
---
Converts an integer to its roman numeral representation.
Accepts value between `1` and `3999` (both inclusive).
- Create a lookup table containing 2-value arrays in the form of (roman value, integer).
- Use `Array.prototype.reduce()` to loop over the values in `lookup` and repeatedly divide `num` by the value, using `String.prototype.repeat()` to add the roman numeral representation to the accumulator.
```js
const toRomanNumeral = num => {
const lookup = [
['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],
];
return lookup.reduce((acc, [k, v]) => {
acc += k.repeat(Math.floor(num / v));
num = num % v;
return acc;
}, '');
};
```
```js
toRomanNumeral(3); // 'III'
toRomanNumeral(11); // 'XI'
toRomanNumeral(1998); // 'MCMXCVIII'
```