Compare commits
No commits in common. '89a725f664a6984eb7a4e206ccf208e2c8d0cee6' and 'b0621f7c43148d6f057e97b791a22f90de927ec8' have entirely different histories.
89a725f664
...
b0621f7c43
@ -1,32 +0,0 @@
|
||||
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
|
||||
|
||||
@ -1,31 +0,0 @@
|
||||
import type { Equal, Expect } from '@type-challenges/utils'
|
||||
|
||||
type cases = [
|
||||
Expect<Equal<ToNumber<'0'>, 0>>,
|
||||
Expect<Equal<ToNumber<'5'>, 5>>,
|
||||
Expect<Equal<ToNumber<'12'>, 12>>,
|
||||
Expect<Equal<ToNumber<'27'>, 27>>,
|
||||
Expect<Equal<ToNumber<'18@7_$%'>, never>>,
|
||||
]
|
||||
|
||||
type Digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
|
||||
|
||||
type IsNumber<
|
||||
S extends string,
|
||||
> =
|
||||
S extends `${Digit}${infer Tail}`
|
||||
? IsNumber<Tail>
|
||||
: S extends ''
|
||||
? true
|
||||
: false
|
||||
;
|
||||
|
||||
type ToNumber<
|
||||
S extends string,
|
||||
Acc extends 1[] = []
|
||||
> =
|
||||
IsNumber<S> extends true
|
||||
? `${Acc['length']}` extends S
|
||||
? Acc['length']
|
||||
: ToNumber<S, [...Acc, 1]>
|
||||
: never
|
||||
Loading…
Reference in new issue