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];
}