Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //https://stackoverflow.com/questions/12505598/get-next-key-value-pair-in-an-object
- var conversions = [
- {key: 'Xb', value: 10000},
- {key: 'Vb', value: 5000},
- {key: 'M', value: 1000},
- {key: 'D', value: 500},
- {key: 'C', value: 100},
- {key: 'L', value: 50},
- {key: 'X', value: 10},
- {key: 'V', value: 5},
- {key: 'I', value: 1},
- ];
- function convertToRoman(num) {
- var c = num;
- var o = "";
- var m1 = 50/99;
- var m2 = 5/9;
- var n1 = 10/49;
- var n2 = 10/4;
- restartLoop:
- while (true) {
- for (var i in conversions) {
- if ((conversions[i].value/c <= 1) && !(conversions[i].value/c > m1 && conversions[i].value/c < m2) &&
- !(conversions[i].value/c > n1 && conversions[i].value/c < n2)) {
- return conversions[i].value/ c;
- // c = -84 for some reason when it should be equal to 32..?
- // any ideas?
- c -= conversions[i].value;
- o += conversions[i].key;
- continue restartLoop;
- }
- else if (conversions[i].value/c > m1 && conversions[i].value/c < m2) {
- o += conversions[i + 1].key + conversions[i - 1].key;
- c -= conversions[i + 1].value + conversions[i - 1].value;
- continue restartLoop;
- }
- else if (conversions[i].value/c > n1 && conversions[i].value/c < n2) {
- o += conversions[i].key + conversions[i - 1].key;
- c -= conversions[i].value + conversions[i - 1].value;
- continue restartLoop;
- }
- else if (c === 0) {
- break restartLoop;
- }
- }
- }
- return o;
- }
- convertToRoman(32);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement