Solution
unknown
javascript
3 years ago
2.5 kB
7
Indexable
const compareAndFill = (a, b) => { let number = [[], []]; if (a.length > b.length) { const diff = a.length - b.length; for (var i = 0; i < a.length; i++) { if (i < diff) { number[1][i] = 0; } else { number[1][i] = parseInt(b[i - diff]); } number[0][i] = parseInt(a[i]); } } else if (a.length < b.length) { const diff = b.length - a.length; for (var i = 0; i < b.length; i++) { if (i < diff) { number[0][i] = 0; } else { number[0][i] = parseInt(a[i - diff]); } number[1][i] = parseInt(b[i]); } } else { for (var i = 0; i < b.length; i++) { number[0][i] = parseInt(a[i]); number[1][i] = parseInt(b[i]); } } return number; }; const fetchNeigbor = (numbers, k) => { let found = -1; for (var i = k - 1; i >= 0; i--) { const j = i; if (numbers[j] >= 1 && found == -1) { numbers[j] -= 1; found = j; break; } } if (found != -1) { for (var i = found + 1; i < k; i++) { numbers[i] += 9; } numbers[k] += 10; return { found: true, numbers }; } else { return { found: false }; } }; const subtract = (numbers, negative = false) => { let sol = new Array(numbers[0].length).fill(0); for (var i = 0; i < numbers[0].length; i++) { const j = numbers[0].length - i - 1; const a = numbers[0][j]; const b = numbers[1][j]; if (a > b) { sol[j] = a - b; numbers[0][j] = a - b; numbers[1][j] = 0; } else if (a === b) { sol[j] = 0; numbers[0][j] = 0; numbers[1][j] = 0; } else if (a < b) { if (j == 0) { let temp = numbers[1]; numbers[1] = numbers[0]; numbers[0] = temp; return subtract(numbers, true); } const { found, numbers: new_n } = fetchNeigbor(numbers[0], j); if (found) { numbers[0] = new_n; return subtract(numbers, negative); } else { let temp = numbers[1]; numbers[1] = numbers[0]; numbers[0] = temp; return subtract(numbers, true); } } } return { sol, negative }; }; const main = (a, b) => { let sol = []; const numbers = compareAndFill(a, b); if (numbers[1][0] > numbers[0][1]) { let temp = numbers[1]; numbers[1] = numbers[0]; numbers[0] = temp; sol = subtract(numbers, true); } else { sol = subtract(numbers); } console.log(sol); }; main("021431", "67911");
Editor is loading...