Triangular Number
Less than 1 minuteTC-Medium
Triangular Number
Problem
Given a number N, return the N-th triangular number: T(N) = 1 + 2 + ... + N.
type T0 = TriangularNumber<0> // 0
type T1 = TriangularNumber<1> // 1
type T2 = TriangularNumber<3> // 6 (1+2+3)
type T3 = TriangularNumber<10> // 55Solution
type TriangularNumber<
N extends number,
Count extends unknown[] = [],
Acc extends unknown[] = []
> =
Count['length'] extends N
? Acc['length']
: TriangularNumber<
N,
[...Count, unknown],
[...Acc, ...Count, unknown] // add (Count.length + 1) each iteration
>How it works:
Counttracks how many steps have been taken (0, 1, 2, …).- Each step, we add
Count.length + 1toAccby spreadingCountand appending one more element. - When
Count.length === N,Acc.lengthis1 + 2 + ... + N.
Example for N = 3:
- Step 0 → Acc length = 0, add 1 → 1
- Step 1 → Acc length = 1, add 2 → 3
- Step 2 → Acc length = 3, add 3 → 6 ✓
Key Takeaways
- Tuple length arithmetic lets you accumulate sums without string-based parsing.
- The key insight: at iteration
i(0-indexed),Count.lengthisi, so[...Acc, ...Count, unknown]addsi+1elements. - This approach cleanly computes
sum(1..N)in exactlyNrecursive steps.
