Type Challenges Judge

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>>, ]