Archive
Every puzzle so far, with its annotated solution. New one daily at midnight UTC.
48 puzzles
How to read this archive
Every puzzle stays playable forever. Once a puzzle stops being the daily, its annotated solution unlocks: the reference answer, the mistake most solvers make, and a line-by-line walkthrough of why the compiler accepts one and rejects the other. Nothing is paywalled and nothing expires.
Par is the number of check-runs a competent solver should need, and it tracks the day of the week: Monday rebuilds something from the standard library at par 2, Friday asks for arithmetic on tuple lengths at par 5. If you are new to type-level TypeScript, work down the twelve concepts first — the Friday puzzles stop looking impossible surprisingly quickly.
Concepts covered so far
- mapped types ×13
- template literal types ×11
- recursion ×9
- variadic tuples ×9
- conditional types ×4
- infer ×2
Every puzzle
- #259Get by pathPar 5recursionSeptember 11, 2026Today
- #258Which keys are optionalPar 4mapped typesSeptember 10, 2026Annotated solution
- #257Tuple to objectPar 3mapped typesSeptember 9, 2026Annotated solution
- #256InvertPar 3mapped typesSeptember 8, 2026Annotated solution
- #255FirstPar 2variadic tuplesSeptember 7, 2026Annotated solution
- #254WithoutPar 3variadic tuplesSeptember 6, 2026Annotated solution
- #253Snake casePar 4template literal typesSeptember 5, 2026Annotated solution
- #252Query stringPar 5template literal typesSeptember 4, 2026Annotated solution
- #251Optional all the way downPar 4recursionSeptember 3, 2026Annotated solution
- #250FillPar 3variadic tuplesSeptember 2, 2026Annotated solution
- #249Optional, but only thesePar 3mapped typesSeptember 1, 2026Annotated solution
- #248Is it never?Par 2conditional typesAugust 31, 2026Annotated solution
- #247Omit by typePar 3mapped typesAugust 30, 2026Annotated solution
- #246EntriesPar 4mapped typesAugust 29, 2026Annotated solution
- #245PathsPar 5recursionAugust 28, 2026Annotated solution
- #244RepeatPar 4template literal typesAugust 27, 2026Annotated solution
- #243AbsolutePar 3template literal typesAugust 26, 2026Annotated solution
- #242MergePar 3mapped typesAugust 25, 2026Annotated solution
- #241Rebuild RequiredPar 2mapped typesAugust 24, 2026Annotated solution
- #240FilterPar 3recursionAugust 23, 2026Annotated solution
- #239ChunkPar 4variadic tuplesAugust 22, 2026Annotated solution
- #238UnionToIntersectionPar 5conditional typesAugust 21, 2026Annotated solution
- #237UniquePar 4recursionAugust 20, 2026Annotated solution
- #236GettersPar 3mapped typesAugust 19, 2026Annotated solution
- #235PickByTypePar 3mapped typesAugust 18, 2026Annotated solution
- #234TupleToUnionPar 2variadic tuplesAugust 17, 2026Annotated solution
- #233StartsWithPar 3template literal typesAugust 16, 2026Annotated solution
- #232ZipPar 3variadic tuplesAugust 9, 2026Annotated solution
- #231CamelCasePar 4template literal typesAugust 8, 2026Annotated solution
- #230PermutationPar 5conditional typesAugust 7, 2026Annotated solution
- #229FlattenPar 4recursionAugust 6, 2026Annotated solution
- #228ReplacePar 3template literal typesAugust 5, 2026Annotated solution
- #227IncludesPar 3recursionAugust 4, 2026Annotated solution
- #226Rebuild ReadonlyPar 2mapped typesAugust 3, 2026Annotated solution
- #225TrimPar 3template literal typesAugust 2, 2026Annotated solution
- #224JoinPar 4template literal typesAugust 1, 2026Annotated solution
- #223Type-level SubtractPar 5variadic tuplesJuly 31, 2026Annotated solution
- #222ReversePar 4recursionJuly 30, 2026Annotated solution
- #221Return TypePar 3inferJuly 29, 2026Annotated solution
- #220Rebuild ExcludePar 3conditional typesJuly 28, 2026Annotated solution
- #219Rebuild PartialPar 2mapped typesJuly 27, 2026Annotated solution
- #218LastPar 3variadic tuplesJuly 26, 2026Annotated solution
- #217SplitPar 4template literal typesJuly 25, 2026Annotated solution
- #216Type-level AddPar 5variadic tuplesJuly 24, 2026Annotated solution
- #215Deep ReadonlyPar 4recursionJuly 23, 2026Annotated solution
- #214Route ParamsPar 3template literal typesJuly 22, 2026Annotated solution
- #213UnwrapPar 3inferJuly 21, 2026Annotated solution
- #212Rebuild PickPar 2mapped typesJuly 20, 2026Annotated solution

