4 ms·
Here's an implementation of a prime finding algorithm in pure (only type-level) Typescript. type IsPrime< MaybePrime extends number, NumAsTuple
by chana_masala 5y ago
Here's an implementation of a prime finding algorithm in pure (only type-level) Typescript.
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]>;
- janjones 5y agoCool. How large prime can it detect before it hits the recursion limit?
- deleted 5y ago[deleted]
- bsimpson 5y ago857
- deleted 5y ago[deleted]
- aastronaut 5y agothank you! here[1] it is in action in the playground. [1]: https://www.typescriptlang.org/play?#code/C4TwDgpgBAkgzgBQE4EsC2EA8AoKeoCyAhiAEYTLrQQAewEAdgCZxQMCua5SANLvgDlOAQTgAVdmAA21OoxZR2DANYMA9gHcGAbQC6UALxQ9ffFABKENERTMISUROmz6zVktWad+o0LSPJGVMoAD5DfjxiMgpUDChaVwU-AOdtACIZBgBzYAALNN0I-AB+KGTxQIh0zJz8-QT5VktrWyZ7FJlqxlqCorNS8qdOjO68gvi5NygACgBGKAAfKAAmRagAZjWAFjWAVjWANgBKPrMoAZEK1JHssfrJhTm11aXNpd2Ts6-zqGAkdggpy+AC4oAAzIhSOCA774UGDSoTRKsbS2MH2KAAfR4UDRGOxuIY6KQWJxeJJBPJpMJxOpADoGVTLHBgIVYf1YIhYlgouRKBgcQjnDjmcAQkCzqCIVCYd9Qc0bHYHFdhjU7kjGjN5ksXhttntDp92aUFa12iqqjcevdkVq9kb2T8-gCJWYpZDoa6oPKrIq2sqhi5NaiifiyaGKeHaZSI9SqTHoziGXSmRAWWzHT94PyeSQ+dzBZdAyK02KvXh3TLTqDs9zMLyYlQcdpk0KglBZroQgBubDYUCQTk5+ZGWtUTCzHv98DQMcYVajrnj5ZTgezpcYTaLnOYdarmdD7k7bd1rb7wdziD7E-j3bn9c5g6GQ-jg73l8YADsz8vmE-78vAAOH8NywQCANAgBOECd0giDhwABhgutZgQqdpwvUDdmvD8sGwqcgA https://www.typescriptlang.org/play?#code/C4TwDgpgBAkgzgBQE4...