Skip to content
advanced

Review: the generator that never unchooses

This is recall. The code looks finished and is wrong. Find the defect and fix it. You are graded on tests you cannot see.

The feature-flag enumerator walks a subset skeleton to generate every valid combination of flags. It came out of a generator looking correct, its tests pass — one element, empty input — and it shipped.

/**
 * Returns every subset of `values`, each exactly once.
 */
export function subsets(values: number[]): number[][] {
  const results: number[][] = []
  const path: number[] = []

  function backtrack(start: number): void {
    results.push([...path])

    for (let i = start; i < values.length; i++) {
      path.push(values[i] as number)
      backtrack(i + 1)
    }
  }

  backtrack(0)
  return results
}
review — find the defectCtrl+↵ submits · Ctrl+Shift+↵ runsstarter code