This commit is contained in:
jesus lopez rodriguez 2024-04-25 08:33:46 +08:00 committed by GitHub
commit 24c6b58271
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
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);
});
});