(arr: T[], k: number)
| 109 | ]; |
| 110 | |
| 111 | function combos<T>(arr: T[], k: number): T[][] { |
| 112 | if (k === 0) return [[]]; |
| 113 | if (arr.length < k) return []; |
| 114 | const [first, ...rest] = arr; |
| 115 | return [ |
| 116 | ...combos(rest, k - 1).map((c) => [first!, ...c]), |
| 117 | ...combos(rest, k), |
| 118 | ]; |
| 119 | } |
| 120 | |
| 121 | for (const k of [1, 2, 3]) { |
| 122 | for (const c of combos(trickyChars, k)) { |