Compare commits

...

2 Commits

Author SHA1 Message Date
jesus lopez rodriguez
24c6b58271
Merge 2876c14c0e into 2c67b48c21 2024-04-25 08:33:46 +08:00
bullcodeProgramacion
2876c14c0e new algorithm that move the array to left according the numbers of position provided 2022-08-15 13:46:37 +01:00
2 changed files with 43 additions and 0 deletions

View File

@ -0,0 +1,27 @@
import Comparator from '../../../utils/comparator/Comparator';
/**
* Give an array of integers numbers, the task is rotate the array elements to the left
* according to the number of positions provided
*
* @param {*[]} array
* @param {*} seekElement
* @param {function(a, b)} [comparatorCallback]
* @return {number[]}
*/
export default function arrayRotation(arr,d,comparatorCallback){
const comparator = new Comparator(comparatorCallback);
if(d>arr.length-1) return false;
let p = 1;
while(p<=d){
let first = arr[0];
for(let i=0;i<=arr.length-1;i++){
if(comparator.equal(i,arr.length-1)) arr[i] = first
else arr[i] = arr[i+1];
}
p = p+1;
}
return arr;
}

View File

@ -0,0 +1,16 @@
import arrayRotation from '../ArrayRotation';
describe('arrayRotation', () => {
it('should move to left all numbers according to the number of positions provided', () => {
const array =[1,2,3,4,5,6,7,8];
expect(arrayRotation(array,4)).toEqual([5,6,7,8,1,2,3,4]);
expect(arrayRotation(array,2)).toEqual([3,4,5,6,7,8,1,2]);
expect(arrayRotation(array,3)).toEqual([,4,5,6,7,8,1,2,3]);
});
it('should return false if the number of positions to move greater than the size of the array', () => {
const array =[1,2,3,4,5,6,7,8];
expect(arrayRotation(array,10)).toEqual(false);
});
});