Advertisement
Guest User

Untitled

a guest
Jun 29th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //https://stackoverflow.com/questions/12505598/get-next-key-value-pair-in-an-object
  2.  
  3. var conversions = [
  4.   {key: 'Xb', value: 10000},
  5.   {key: 'Vb', value: 5000},
  6.   {key: 'M', value: 1000},
  7.   {key: 'D', value: 500},
  8.   {key: 'C', value: 100},
  9.   {key: 'L', value: 50},
  10.   {key: 'X', value: 10},
  11.   {key: 'V', value: 5},
  12.   {key: 'I', value: 1},
  13. ];
  14.  
  15. function convertToRoman(num) {
  16.   var c = num;
  17.   var o = "";
  18.   var m1 = 50/99;
  19.   var m2 = 5/9;
  20.   var n1 = 10/49;
  21.   var n2 = 10/4;
  22.   restartLoop:
  23.   while (true) {
  24.     for (var i in conversions) {
  25.       if ((conversions[i].value/c <= 1) && !(conversions[i].value/c > m1 && conversions[i].value/c < m2) &&
  26.          !(conversions[i].value/c > n1 && conversions[i].value/c < n2)) {
  27.        
  28.        
  29.        
  30.            return conversions[i].value/ c;
  31.            // c = -84 for some reason when it should be equal to 32..?
  32.            // any ideas?
  33.        
  34.        
  35.             c -= conversions[i].value;
  36.            o += conversions[i].key;
  37.            continue restartLoop;
  38.       }
  39.       else if (conversions[i].value/c > m1 && conversions[i].value/c < m2) {
  40.            o += conversions[i + 1].key + conversions[i - 1].key;
  41.            c -= conversions[i + 1].value + conversions[i - 1].value;
  42.            continue restartLoop;
  43.          }
  44.        else if (conversions[i].value/c > n1 && conversions[i].value/c < n2) {
  45.             o += conversions[i].key + conversions[i - 1].key;
  46.             c -= conversions[i].value + conversions[i - 1].value;
  47.             continue restartLoop;
  48.           }
  49.       else if (c === 0) {
  50.       break restartLoop;
  51.       }
  52.        }
  53.       }
  54.     return o;
  55.    }
  56.  
  57.  
  58. convertToRoman(32);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement