chana_masala
Joined 5 years ago
Karma
550
Submissions
342
Member since
Jul 7
Joined 5 years ago
Puny aur punarjanm
Maybe look at it in a different situation. Imagine someone punched you in the face and when you confront them about it they saying that you're holding to silly semantics about what it means or does not mean to get punched in the face.
type IsPrime<
MaybePrime extends number,
NumAsTuple extends unknown[] = [],
RemainderAsTuple extends unknown[] = NumAsTuple,
> =
MaybePrime extends NumAsTuple["length"]
? NumAsTuple["length"] extends RemainderAsTuple["length"]
? NumAsTuple["length"] extends (1 | 2 | 3 | 4 | 5 | 6)
? NumAsTuple["length"] extends (1 | 2 | 3 | 5)
? true
: false
: NumAsTuple extends [infer _, infer _, infer _, infer _, infer _, infer _, ...infer Rest]
? IsPrime<MaybePrime, NumAsTuple, Rest>
: false
: RemainderAsTuple["length"] extends (1 | 2 | 3 | 4 | 5 | 6)
? RemainderAsTuple["length"] extends (1 | 5)
? true
: false
: RemainderAsTuple extends [infer _, infer _, infer _, infer _, infer _, infer _, ...infer Rest]
? IsPrime<MaybePrime, NumAsTuple, Rest>
: false
: IsPrime<MaybePrime, [...NumAsTuple, 1]>;