From 148867f294e0ab0906c22f186dc0357b0a53e896 Mon Sep 17 00:00:00 2001 From: MrSpoony Date: Thu, 9 Mar 2023 09:11:03 +0100 Subject: [PATCH] add is palindrome --- is-palindrome.ts | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 is-palindrome.ts diff --git a/is-palindrome.ts b/is-palindrome.ts new file mode 100644 index 0000000..10d06ad --- /dev/null +++ b/is-palindrome.ts @@ -0,0 +1,32 @@ +import type { Equal, Expect } from '@type-challenges/utils' + +type casesPalindrome = [ + Expect, false>>, + Expect, true>>, + Expect, false>>, + Expect, true>>, + Expect, true>>, + Expect, false>>, +] + +type CheckPalindrome< + T extends string[] +> = +T extends [infer First, ...infer Mid, infer Last] + ? First extends Last + ? Mid extends string[] ? CheckPalindrome : never + : false + : true +; + +type ToArr = T extends `${infer Head}${infer Tail}` ? [Head, ...ToArr] : []; + +type IsPalindrome< + T extends string | number +> = +T extends number + ? IsPalindrome<`${T}`> +: T extends string + ? CheckPalindrome> +: never +