Solution
unknown
javascript
3 years ago
2.5 kB
9
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...