parent
b0621f7c43
commit
148867f294
@ -0,0 +1,32 @@
|
||||
import type { Equal, Expect } from '@type-challenges/utils'
|
||||
|
||||
type casesPalindrome = [
|
||||
Expect<Equal<IsPalindrome<'abc'>, false>>,
|
||||
Expect<Equal<IsPalindrome<'b'>, true>>,
|
||||
Expect<Equal<IsPalindrome<'abca'>, false>>,
|
||||
Expect<Equal<IsPalindrome<'abcba'>, true>>,
|
||||
Expect<Equal<IsPalindrome<121>, true>>,
|
||||
Expect<Equal<IsPalindrome<19260817>, false>>,
|
||||
]
|
||||
|
||||
type CheckPalindrome<
|
||||
T extends string[]
|
||||
> =
|
||||
T extends [infer First, ...infer Mid, infer Last]
|
||||
? First extends Last
|
||||
? Mid extends string[] ? CheckPalindrome<Mid> : never
|
||||
: false
|
||||
: true
|
||||
;
|
||||
|
||||
type ToArr<T extends string> = T extends `${infer Head}${infer Tail}` ? [Head, ...ToArr<Tail>] : [];
|
||||
|
||||
type IsPalindrome<
|
||||
T extends string | number
|
||||
> =
|
||||
T extends number
|
||||
? IsPalindrome<`${T}`>
|
||||
: T extends string
|
||||
? CheckPalindrome<ToArr<T>>
|
||||
: never
|
||||
|
||||
Loading…
Reference in new issue