Split
提出詳細
type BitNum = [TNumOf<1>, TNumOf<2>, TNumOf<4>, TNumOf<8>, TNumOf<16>, TNumOf<32>, TNumOf<64>, TNumOf<128>]; type TNum = 0[]; type TNumOf<N extends number, _A extends 0[] = []> = _A["length"] extends N ? _A : TNumOf<N, [..._A, 0]>; type AddTNum<A extends TNum, B extends TNum> = [...A, ...B]; type PlusOne<N extends number> = [...TNumOf<N>, 0]["length"] extends number ? [...TNumOf<N>, 0]["length"] : never; type SplitStr<S extends string> = S extends `${infer L}${infer R}` ? [L, ...SplitStr<R>] : [] type Reverse<T extends unknown[], _Res extends unknown[] = []> = T extends [infer L, ...infer R] ? R extends unknown[] ? Reverse<R, [L, ..._Res]> : [L, ..._Res] : _Res type BinaryToDecimal_Impl<S extends string[], _Digit extends number = 0, _Res extends TNum = []> = _Digit extends S["length"] ? _Res["length"] : S[_Digit] extends "1" ? BinaryToDecimal_Impl<S, PlusOne<_Digit>, AddTNum<_Res, BitNum[_Digit]>> : BinaryToDecimal_Impl<S, PlusOne<_Digit>, _Res>; type BinaryToDecimal<S extends string> = BinaryToDecimal_Impl<Reverse<SplitStr<S>>>;
提出日時 | 2025-01-19 17:03:25 |
---|---|
問題 | Split |
ユーザー | ookkoouu |
ステータス | Wrong Answer |
import type { Equal, Expect } from '@type-challenges/utils' type cases = [ Expect<Equal<Split<'Hi! How are you?', 'z'>, ['Hi! How are you?']>>, Expect<Equal<Split<'Hi! How are you?', ' '>, ['Hi!', 'How', 'are', 'you?']>>, Expect<Equal<Split<'Hi! How are you?', ''>, ['H', 'i', '!', ' ', 'H', 'o', 'w', ' ', 'a', 'r', 'e', ' ', 'y', 'o', 'u', '?']>>, Expect<Equal<Split<'', ''>, []>>, Expect<Equal<Split<'', 'z'>, ['']>>, Expect<Equal<Split<string, 'whatever'>, string[]>>, ]