Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Toptal Codility Problem: Convert to-and-from base -2
'use strict';
function toDecimal(A) {
var sum = 0;
for (var i = 0; i < A.length; i++) {
sum += A[i] * Math.pow(-2, i);
}
return sum;
}
function toBaseNeg2(d) {
var a = [];
while (d != 0) {
var remainder = d % -2;
var d = Math.ceil(d / -2);
a.push(Math.abs(remainder));
}
return a;
}
function solution(A, B) {
var d = toDecimal(A);
return toBaseNeg2(-d);
}
console.log(toDecimal([1,0,0,1,1]) === 9);
console.log(toDecimal([1,1,0,1]) === -9);
console.log(toDecimal([1,0,0,1,1,1]) === -23);
console.log(toDecimal([1,1,0,1,0,1,1]) === 23);
console.log(JSON.stringify(toBaseNeg2(9)) == JSON.stringify([1,0,0,1,1]));
console.log(JSON.stringify(toBaseNeg2(-9)) == JSON.stringify([1,1,0,1]));
console.log(JSON.stringify(toBaseNeg2(-23)) == JSON.stringify([1,0,0,1,1,1]));
console.log(JSON.stringify(toBaseNeg2(23)) == JSON.stringify([1,1,0,1,0,1,1]));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment