MinusOne
提出詳細
type A = { '0': []; '1': [unknown]; '2': [unknown, unknown]; '3': [unknown, unknown, unknown]; '4': [unknown, unknown, unknown, unknown]; '5': [unknown, unknown, unknown, unknown, unknown]; '6': [unknown, unknown, unknown, unknown, unknown, unknown]; '7': [unknown, unknown, unknown, unknown, unknown, unknown, unknown]; '8': [unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown]; '9': [unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown]; }; type Times10<T extends readonly unknown[]> = [ ...T, ...T, ...T, ...T, ...T, ...T, ...T, ...T, ...T, ...T ] type BuildFromStr<S extends string, D extends unknown[] = []> = S extends `${infer B extends keyof A}${infer C}` ? BuildFromStr<C, [...Times10<D>, ...A[B]]> : D; type MinusOne<T extends number> = BuildFromStr<`${T}`> extends [infer _, ...infer Rest] ? Rest["length"] : never
提出日時 | 2025-09-15 06:26:10 |
---|---|
問題 | MinusOne |
ユーザー | balckowl |
ステータス | Accepted |
import type { Equal, Expect } from '@type-challenges/utils' type cases = [ Expect<Equal<MinusOne<1>, 0>>, Expect<Equal<MinusOne<55>, 54>>, Expect<Equal<MinusOne<3>, 2>>, Expect<Equal<MinusOne<100>, 99>>, Expect<Equal<MinusOne<1101>, 1100>>, ]