mc_arrMoveZeroesToEnd_1K

Benchmark created on


Description

#todo написати функцію на будь-якій мові програмування, яка приймає масив чисел і повертає той самий масив, але з усіма нулями, переміщеними в кінець, зберігаючи порядок ненульових елементів. !!!повернути новий масив!!!

Наприклад: [0, 1] => [1, 0] [0, 1, 0] => [1, 0, 0] [0, 1, 0, 3, 12] => [1, 3, 12, 0, 0] [0, 12, 0, 1, 3] => [12, 1, 3, 0, 0]

Setup

const n = 1000;
const arr00000 = (argN) => new Array(argN).fill(0);
const arr00001 = (argN) => {
  const arr = new Array(argN).fill(0);
  arr[argN - 1] = 1;
  return arr;
};
const arr10000 = (argN) => {
  const arr = new Array(argN).fill(0);
  arr[0] = 1;
  return arr;
};
const arr11111 = (argN) => new Array(argN).fill(1);
const arr11110 = (argN) => {
  const arr = new Array(argN).fill(1);
  arr[argN - 1] = 0;
  return arr;
};
const arr01111 = (argN) => {
  const arr = new Array(argN).fill(1);
  arr[0] = 0;
  return arr;
};
const arr01010 = (argN) => {
  const arr = new Array(argN).fill(1);
  for (let i = 0; i < argN; i++) {
    if (i % 2 === 0) {
      arr[i] = 0;
    }
  }
  return arr;
};
const arr000 = arr00000(n);
const arr001 = arr00001(n);
const arr100 = arr10000(n);
const arr111 = arr11111(n);
const arr110 = arr11110(n);
const arr011 = arr01111(n);
const arr010 = arr01010(n);


Test runner

Ready to run.

Testing in
TestOps/sec
Volodymyr
function arrMoveZeroesToEnd(arr) {
  let res = arr.reduce((acc, el) => {
    (el !== 0) ? acc.array.push(el) : acc.zeroNum++;
    return {array: acc.array, zeroNum: acc.zeroNum};
  }, {array: [], zeroNum: 0});
  for (let i = 1; i <= res.zeroNum; i++) {
    res.array.push(0);
  }
  return res.array;
}

arrMoveZeroesToEnd(arr000);
arrMoveZeroesToEnd(arr001);
arrMoveZeroesToEnd(arr100);
arrMoveZeroesToEnd(arr111);
arrMoveZeroesToEnd(arr110);
arrMoveZeroesToEnd(arr011);
arrMoveZeroesToEnd(arr010);
ready
Volodymyr_chatGPT
function arrMoveZeroesToEnd(arr) {
    return arr.toSorted((a, b) => (a === 0 ? 1 : b === 0 ? -1 : 0));
}

arrMoveZeroesToEnd(arr000);
arrMoveZeroesToEnd(arr001);
arrMoveZeroesToEnd(arr100);
arrMoveZeroesToEnd(arr111);
arrMoveZeroesToEnd(arr110);
arrMoveZeroesToEnd(arr011);
arrMoveZeroesToEnd(arr010);
ready
MCLtd_chatGPT
function arrMoveZeroesToEnd(arr) {
    return arr.toSorted((a, b) => (a === 0) - (b === 0));

}

arrMoveZeroesToEnd(arr000);
arrMoveZeroesToEnd(arr001);
arrMoveZeroesToEnd(arr100);
arrMoveZeroesToEnd(arr111);
arrMoveZeroesToEnd(arr110);
arrMoveZeroesToEnd(arr011);
arrMoveZeroesToEnd(arr010);
ready
MCLtd_v1
function arrMoveZeroesToEnd(argArray) {
  return []
    .concat(argArray.filter((val) => val !== 0))
    .concat(argArray.filter((val) => val === 0));
}

arrMoveZeroesToEnd(arr000);
arrMoveZeroesToEnd(arr001);
arrMoveZeroesToEnd(arr100);
arrMoveZeroesToEnd(arr111);
arrMoveZeroesToEnd(arr110);
arrMoveZeroesToEnd(arr011);
arrMoveZeroesToEnd(arr010);
ready
MCLtd_v2
function arrMoveZeroesToEnd(argArray) {
	return argArray.filter((val) => val !== 0)
    .concat(argArray.filter((val) => val === 0));
}

arrMoveZeroesToEnd(arr000);
arrMoveZeroesToEnd(arr001);
arrMoveZeroesToEnd(arr100);
arrMoveZeroesToEnd(arr111);
arrMoveZeroesToEnd(arr110);
arrMoveZeroesToEnd(arr011);
arrMoveZeroesToEnd(arr010);
ready
MCLtd_v3
function arrMoveZeroesToEnd(argArray) {
  const arrResult = argArray.filter((val) => val !== 0);
  for (let i = arrResult.length; i < argArray.length; i++) {
    arrResult.push(0);
  }
  return arrResult;
}

arrMoveZeroesToEnd(arr000);
arrMoveZeroesToEnd(arr001);
arrMoveZeroesToEnd(arr100);
arrMoveZeroesToEnd(arr111);
arrMoveZeroesToEnd(arr110);
arrMoveZeroesToEnd(arr011);
arrMoveZeroesToEnd(arr010);
ready
MCLtd_v4
function arrMoveZeroesToEnd(argArray) {
  const arrNumbers = argArray.filter((val) => val !== 0);
  return arrNumbers
    .concat(new Array(argArray.length - arrNumbers.length).fill(0));
}

arrMoveZeroesToEnd(arr000);
arrMoveZeroesToEnd(arr001);
arrMoveZeroesToEnd(arr100);
arrMoveZeroesToEnd(arr111);
arrMoveZeroesToEnd(arr110);
arrMoveZeroesToEnd(arr011);
arrMoveZeroesToEnd(arr010);
ready
Yura_v1
function arrMoveZeroesToEnd(arr) {
  const res = [];
  let currIdx = 0;

  for (let i = 0; i < arr.length; i++) {
    if (arr[i] !== 0) {
      res.push(arr[i]);
      ++currIdx;
    }
  }
  for (let i = currIdx; i < arr.length; i++) {
    res.push(0);
  }
  
  return res;
}

arrMoveZeroesToEnd(arr000);
arrMoveZeroesToEnd(arr001);
arrMoveZeroesToEnd(arr100);
arrMoveZeroesToEnd(arr111);
arrMoveZeroesToEnd(arr110);
arrMoveZeroesToEnd(arr011);
arrMoveZeroesToEnd(arr010);
ready
Yura_v2
function arrMoveZeroesToEnd(arr) {
  const res = new Array(arr.length).fill(0);
  let currIdx = 0;

  for (let i = 0; i < arr.length; i++) {
    if (arr[i] !== 0) {
      res[currIdx] = arr[i];
      ++currIdx;
    }
  }

  return res;
}

arrMoveZeroesToEnd(arr000);
arrMoveZeroesToEnd(arr001);
arrMoveZeroesToEnd(arr100);
arrMoveZeroesToEnd(arr111);
arrMoveZeroesToEnd(arr110);
arrMoveZeroesToEnd(arr011);
arrMoveZeroesToEnd(arr010);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.