JavaScript
// ------------------------------------------
// FILL IN YOUR ANSWERS HERE AND CLICK RUN!
// TIME TAKEN: x MINUTES
// ------------------------------------------
function addOne(arr, base) {
const sign = arr[0] < 0 ? -1 : 1
const positive = arr.map((el)=>{
const result = el< 0 ? -el : el;
return result
})
const int = parseInt(positive.join(""), base)
const total = int + sign
const numbers = total.toString(base).split("");
const result = numbers.map((el)=>{
let intVersion = Number.parseInt(el,base)
if (intVersion < 10) {
return Number.parseInt(el,base) * sign
} else {
return stringToHex(el, sign)
}
})
return result
}
function stringToHex (hexString, sign) {
if (sign > 0) {
return hexString.toUpperCase()
} else {
return `-${hexString.toUpperCase()}`
}
}
// --------------------------------------------
// TESTS BELOW - PLEASE ADD YOUR OWN TEST CASES
// --------------------------------------------
expect('addOne([5, 1, 2])', addOne([5, 1, 2]), [5, 1, 3]);
expect('addOne([0])', addOne([0]), [1]);
expect('addOne([9, 9])', addOne([9, 9]), [1, 0, 0]);
expect('addOne([1, 9, 9])', addOne([1, 9, 9]), [2, 0, 0]);
expect('addOne([-3, -7])', addOne([-3, -7]), [-3, -6]);
expect('addOne([-1, 0, 0])', addOne([-1, 0, 0]), [-9, -9]);
expect('addOne([1, 0, 1], 2)', addOne([1, 0, 1], 2), [1, 1, 0]);
expect('addOne([1, 1, 1], 2)', addOne([1, 1, 1], 2), [1, 0, 0, 0]);
expect('addOne([B, 3, 9], 16)', addOne(['B', 3, 9], 16), ['B', 3, 'A']);
expect('addOne([B, 3, F], 16)', addOne(['B', 3, 'F'], 16), ['B', 4, 0]);
expect('addOne([-3, -F], 16)', addOne([ -3, '-F'], 16), [-3, '-E']);
// ------------------------------------------
function compareArrays(arr1, arr2) {
return $(arr1).not(arr2).length == 0 && $(arr2).not(arr1).length == 0;
}
function expect(name, a, b) {
if (a !== b && !(a instanceof Array && b instanceof Array && compareArrays(a, b))) {
$('ul').append('<li class="error">Testing <code>' + name + '</code>...