Skip to content

Commit e26d6ff

Browse files
committed
Complete roman numeral converter algorithm
1 parent 4249848 commit e26d6ff

File tree

3 files changed

+55
-0
lines changed

3 files changed

+55
-0
lines changed

src/fcc-course-projects/fcc_course_projects.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
From the Freecodecamp Javascript Certification Algorithms Projects module
66

77
- [Palindrome Checker](#palindrome-checker)
8+
- [Roman Numeral Converter](#roman-numeral-converter)
9+
- [Caesars Cipher](#caesars-cipher)
810

911
#### Palindrome Checker
1012

@@ -25,3 +27,27 @@ export function palindrome(str) {
2527
return normalizedStr === normalizedStr.split('').reverse().join('');
2628
}
2729
```
30+
31+
#### Roman Numeral Converter
32+
33+
Convert the given number into a roman numeral.
34+
35+
All roman numerals answers should be provided in upper-case.
36+
37+
```javascript
38+
export function convertToRoman(num) {
39+
var number = [ 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 ];
40+
var numerals = [ 'M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I' ];
41+
42+
var romanNumeral = '';
43+
44+
for (var index = 0; index < number.length; index++) {
45+
while (number[index] <= num) {
46+
romanNumeral += numerals[index];
47+
num -= number[index];
48+
}
49+
}
50+
51+
return romanNumeral;
52+
}
53+
```
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
export function convertToRoman(num) {
2+
var number = [ 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 ];
3+
var numerals = [ 'M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I' ];
4+
5+
var romanNumeral = '';
6+
7+
for (var index = 0; index < number.length; index++) {
8+
while (number[index] <= num) {
9+
romanNumeral += numerals[index];
10+
num -= number[index];
11+
}
12+
}
13+
14+
return romanNumeral;
15+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { convertToRoman, getValues, getHighestPowerOfTen } from "../../src/fcc-course-projects/roman_numeral_converter";
2+
3+
test('should convert numbers to roman numerals', () => {
4+
expect(convertToRoman(2)).toBe('II');
5+
expect(convertToRoman(4)).toBe('IV');
6+
expect(convertToRoman(12)).toBe('XII');
7+
expect(convertToRoman(45)).toBe("XLV");
8+
expect(convertToRoman(76)).toBe('LXXVI');
9+
expect(convertToRoman(100)).toBe('C');
10+
expect(convertToRoman(123)).toBe('CXXIII');
11+
expect(convertToRoman(778)).toBe('DCCLXXVIII');
12+
expect(convertToRoman(1023)).toBe('MXXIII');
13+
expect(convertToRoman(3999)).toBe('MMMCMXCIX');
14+
});

0 commit comments

Comments
 (0)