Skip to content

Instantly share code, notes, and snippets.

@ConnorAndersonLarson
Created June 9, 2021 12:54
Show Gist options
  • Save ConnorAndersonLarson/d860824e35b41d4913f7d1c1f2c137d2 to your computer and use it in GitHub Desktop.
Save ConnorAndersonLarson/d860824e35b41d4913f7d1c1f2c137d2 to your computer and use it in GitHub Desktop.
Roman Numeral Tech Challenge

Problem - Roman Numerals

What are Roman Numerals?

Write a function that converts an integer into a string such that the number is represented in Roman Numerals in the most efficient way.

For example, the number 4 could be written as IIII but it's more efficient to use IVsince that's a shorter string.

Assume no number is greater than 4,000.

Here are the Roman Numeral equivalents you'll need to know:

  • 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

JS Starter Code

function toRoman(num) {
  // your code goes here
}

console.log(toRoman(128));  // should return "CXXVIII"
console.log(toRoman(2000)); // should return "MM"
console.log(toRoman(2017)); // should return "MMXVII"
console.log(toRoman(1999)); // should return "MCMXCIX"

Instructions

  1. Copy this markdown and paste in your own, privte gist
  2. In your private gist, fill out the questions below
  3. Submit by the due time as instructed in Zoom

Do not publish your code on a public repl.it or repo or other public means.

Rewrite the question in your own words:

Convert numbers into a string of roman numerals.

What assumptions will you make about this problem if you cannot ask any more clarifying questions? What are your reasons for making those assumptions?

Any prototype method is valid to use, should be dynamic.

What are your initial thoughts about this problem? (high level design, 2-3 sentences)

There needs to be some algorithmic way of converting without a long if/else statement. Could probably be converted to an array and reversed before being iterated through to covert each number. Could also create a helper function that takes in the pertinent letters and change them based on the place the number is in, combine using a reduce statement?

How would you identify the elements of this problem?

  • Searching of Data
  • Sorting of Data
  • Pattern Recognition
  • Build/Navigate a Grid
  • Math
  • Language API knowledge
  • Optimization

Which data structure(s) do you think you'll use? What pros/cons do you see with that choice?

Array

Write out a few lines of initial pseudocode: (mid-level design, NOT REAL CODE)

make helper function to determine structure of roman numerals for that number, with argument number that pertains to the letters being used (and number being converted), return a string create variable of number parameter being split and reversed iterate through new variable, passing in index to helper function and number being converted return conversion string

Write out any implementation code OR link to repl

Incomplete

What is the Big O complexity of your solution?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment