Skip to content

Instantly share code, notes, and snippets.

@JaymesKat
Created December 27, 2019 02:23
Show Gist options
  • Select an option

  • Save JaymesKat/5f52918f9b7ec29942f5b870b2491c47 to your computer and use it in GitHub Desktop.

Select an option

Save JaymesKat/5f52918f9b7ec29942f5b870b2491c47 to your computer and use it in GitHub Desktop.

Revisions

  1. JaymesKat created this gist Dec 27, 2019.
    105 changes: 105 additions & 0 deletions roman-numeral-converter.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,105 @@
    const symbols = {
    '1': 'I',
    '5' : 'V',
    '10' : 'X',
    '50' : 'L',
    '100' : 'C',
    '500' : 'D',
    '1000' : 'M'
    };

    function convertToRoman(num) {
    const digits = num.toString().split('').reverse();
    const numLength = digits.length;

    let romanNum = [];
    for(let i = 0; i < numLength; i += 1){
    if(digits[i] == 0){
    continue;
    }
    switch(i){
    case 0:
    romanNum.push(convertSingleDigit(digits[i]));
    break;

    case 1:
    romanNum.push(convert2DigitNum(digits[i]));
    break;
    case 2:
    romanNum.push(convert3DigitNum(digits[i]));
    break;
    default:
    romanNum.push(convert4DigitNum(digits[i]));
    break;
    }

    }
    return romanNum.reverse().join('');
    }

    function convertSingleDigit(num){
    if(num > 0 && num < 4){
    return symbols['1'].repeat(num);
    }
    if(num == 4){
    return symbols['1']+symbols['5'];
    }
    if(num == 5){
    return symbols['5'];
    }
    if(num == 6){
    return symbols['5']+symbols['1'];
    }
    if(num > 5 && num < 9){
    return symbols['5'] + (symbols['1'].repeat(num%5));
    }
    if(num == 9){
    return symbols['1']+ symbols['10']
    }
    }

    function convert2DigitNum(num){
    if(num > 0 && num < 4){
    return symbols['10'].repeat(num);
    }
    if(num == 4){
    return symbols['10']+symbols['50'];
    }
    if(num == 5){
    return symbols['50'];
    }
    if(num == 6){
    return symbols['50']+symbols['10'];
    }
    if(num > 5 && num < 9){
    return symbols['50'] + (symbols['10'].repeat(num%5));
    }
    if(num == 9){
    return symbols['10']+ symbols['100']
    }
    }

    function convert3DigitNum(num){
    if(num > 0 && num < 4){
    return symbols['100'].repeat(num);
    }
    if(num == 4){
    return symbols['100']+symbols['500'];
    }
    if(num == 5){
    return symbols['500'];
    }
    if(num == 6){
    return symbols['500']+symbols['100'];
    }
    if(num > 5 && num < 9){
    return symbols['500'] + (symbols['100'].repeat(num%5));
    }
    if(num == 9){
    return symbols['100']+ symbols['1000']
    }
    }

    function convert4DigitNum(num){
    return symbols['1000'].repeat(num);
    }