Binary gap
From https://codility.com/programmers/lessons/1-iterations/binary_gap/ My decision without "toString" function. Theoretically, it works faster.
by evgkch
JavaScript
const quotient = (val) => (val - val % 2) / 2;
const reminder = (val) => val % 2;
const maximum = (a, b) => a > b ? a : b;
const zerosNumber = (val) => { //binary gap
let valCopy = val;
let zeros, counter = 0;
while (reminder(valCopy) !== 1) {
valCopy = quotient(valCopy)
}
while (quotient(valCopy) >= 1) {
if (reminder(valCopy) === 0) {
counter++;
} else {
zeros = maximum(zeros, counter);
counter = 0;
}
valCopy = quotient(valCopy);
}
zeros = maximum(zeros, counter);
return zeros;
}
function maxZerosNumber(arr) { //return a number with max binary gap from array
let max = 0;
let index = 0;
arr.map((val, i) => {
if (max !== maximum(zerosNumber(val), max)) {
index = i;
max = maximum(zerosNumber(val), max);
}
});
return arr[index];
}