export function splitIntoChunk(arr: T[], chunkSize: number): T[][] { const resArr = []; for (let i = 0; i < arr.length; i += chunkSize) { resArr.push(arr.slice(i, i + chunkSize)); } return resArr; } export function swapElements(from: number, to: number, arr: T[]): T[] { [arr[from], arr[to]] = [arr[to], arr[from]]; return arr; } export function popElement(func: (element: T) => boolean, arr: T[]): T { const index = arr.findIndex(func); if (index === -1) { return null; } return arr.splice(index, 1)[0]; } export function removeIndex(index: number, arr: T[]): T[] { arr.splice(index, 1); return arr; } export function* enumerate(arr: T[]): Generator<[number, T]> { for (let i = 0; i < arr.length; i++) { yield [i, arr[i]]; } }