type-challenges / type-challenges

Collection of TypeScript type challenges with online judge
https://tsch.js.org/
MIT License
42.97k stars 4.67k forks source link

4499 - Chunk #26248

Open adoin opened 1 year ago

adoin commented 1 year ago
// your answers
type ChunkIter<A extends any[], L extends number, R extends any[] = []>
  = A extends [infer F, ...infer T] ?
    R['length'] extends L ? [R, ...ChunkIter<T, L, [F]>] : ChunkIter<T, L, [...R, F]>
    : [R]
type Chunk<A extends any[], L extends number> = A extends [] ? [] : ChunkIter<A, L>
adoin commented 1 year ago

Better: type Chunk<A extends any[], L extends number, R extends any[] = []> = A extends [infer F, ...infer T] ? R['length'] extends L ? [R, ...Chunk<T, L, [F]>] : Chunk<T, L, [...R, F]> : R extends [] ? [] : [R]