An exercise from Amadeus interview
/* Input: number 2543 Output: index of the digit that is needed to remove to get the maximum number from the original number [0]2: 543 -> It is a maximum, so answer is 0 [1]5: 243 [2]4: 253 [3]3: 254 */ function findIndexToGetMax(n) { if (n < 10) return null; let digits = n.toString().split('').map(d => parseInt(d)); let current_n = digits[0]; let pos_n = 0; for (let i = 1; i < digits.length; i++) { if (current_n < digits[i]) { return pos_n; } else { current_n = digits[i]; pos_n = i; } } return pos_n; } let tests = { 2526: 0, 9526: 2, 19: 0, 10: 1, 12345: 0, 54321: 4 }; let expected_n; let testedValue_n; for (let key_s in tests) { if (!tests.hasOwnProperty(key_s)) continue; expected_n = tests[key_s]; testedValue_n = findIndexToGetMax(parseInt(key_s)); if (testedValue_n != expected_n) { console.log('Test %s failed, expected %s', key_s, expected_n); break; } // console.log('Test %s: value %s', key_s, expected_n); } console.log('All tests passed');
Comments
Post a Comment