Sum
提出詳細
type Digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' type CarryDigit = "0" | "1" type LUT = { '0': { '0': { '0': ['0', '0'], '1': ['1', '0'] }, '1': { '0': ['1', '0'], '1': ['2', '0'] }, '2': { '0': ['2', '0'], '1': ['3', '0'] }, '3': { '0': ['3', '0'], '1': ['4', '0'] }, '4': { '0': ['4', '0'], '1': ['5', '0'] }, '5': { '0': ['5', '0'], '1': ['6', '0'] }, '6': { '0': ['6', '0'], '1': ['7', '0'] }, '7': { '0': ['7', '0'], '1': ['8', '0'] }, '8': { '0': ['8', '0'], '1': ['9', '0'] }, '9': { '0': ['9', '0'], '1': ['0', '1'] } }, '1': { '0': { '0': ['1', '0'], '1': ['2', '0'] }, '1': { '0': ['2', '0'], '1': ['3', '0'] }, '2': { '0': ['3', '0'], '1': ['4', '0'] }, '3': { '0': ['4', '0'], '1': ['5', '0'] }, '4': { '0': ['5', '0'], '1': ['6', '0'] }, '5': { '0': ['6', '0'], '1': ['7', '0'] }, '6': { '0': ['7', '0'], '1': ['8', '0'] }, '7': { '0': ['8', '0'], '1': ['9', '0'] }, '8': { '0': ['9', '0'], '1': ['0', '1'] }, '9': { '0': ['0', '1'], '1': ['1', '1'] } }, '2': { '0': { '0': ['2', '0'], '1': ['3', '0'] }, '1': { '0': ['3', '0'], '1': ['4', '0'] }, '2': { '0': ['4', '0'], '1': ['5', '0'] }, '3': { '0': ['5', '0'], '1': ['6', '0'] }, '4': { '0': ['6', '0'], '1': ['7', '0'] }, '5': { '0': ['7', '0'], '1': ['8', '0'] }, '6': { '0': ['8', '0'], '1': ['9', '0'] }, '7': { '0': ['9', '0'], '1': ['0', '1'] }, '8': { '0': ['0', '1'], '1': ['1', '1'] }, '9': { '0': ['1', '1'], '1': ['2', '1'] } }, '3': { '0': { '0': ['3', '0'], '1': ['4', '0'] }, '1': { '0': ['4', '0'], '1': ['5', '0'] }, '2': { '0': ['5', '0'], '1': ['6', '0'] }, '3': { '0': ['6', '0'], '1': ['7', '0'] }, '4': { '0': ['7', '0'], '1': ['8', '0'] }, '5': { '0': ['8', '0'], '1': ['9', '0'] }, '6': { '0': ['9', '0'], '1': ['0', '1'] }, '7': { '0': ['0', '1'], '1': ['1', '1'] }, '8': { '0': ['1', '1'], '1': ['2', '1'] }, '9': { '0': ['2', '1'], '1': ['3', '1'] } }, '4': { '0': { '0': ['4', '0'], '1': ['5', '0'] }, '1': { '0': ['5', '0'], '1': ['6', '0'] }, '2': { '0': ['6', '0'], '1': ['7', '0'] }, '3': { '0': ['7', '0'], '1': ['8', '0'] }, '4': { '0': ['8', '0'], '1': ['9', '0'] }, '5': { '0': ['9', '0'], '1': ['0', '1'] }, '6': { '0': ['0', '1'], '1': ['1', '1'] }, '7': { '0': ['1', '1'], '1': ['2', '1'] }, '8': { '0': ['2', '1'], '1': ['3', '1'] }, '9': { '0': ['3', '1'], '1': ['4', '1'] } }, '5': { '0': { '0': ['5', '0'], '1': ['6', '0'] }, '1': { '0': ['6', '0'], '1': ['7', '0'] }, '2': { '0': ['7', '0'], '1': ['8', '0'] }, '3': { '0': ['8', '0'], '1': ['9', '0'] }, '4': { '0': ['9', '0'], '1': ['0', '1'] }, '5': { '0': ['0', '1'], '1': ['1', '1'] }, '6': { '0': ['1', '1'], '1': ['2', '1'] }, '7': { '0': ['2', '1'], '1': ['3', '1'] }, '8': { '0': ['3', '1'], '1': ['4', '1'] }, '9': { '0': ['4', '1'], '1': ['5', '1'] } }, '6': { '0': { '0': ['6', '0'], '1': ['7', '0'] }, '1': { '0': ['7', '0'], '1': ['8', '0'] }, '2': { '0': ['8', '0'], '1': ['9', '0'] }, '3': { '0': ['9', '0'], '1': ['0', '1'] }, '4': { '0': ['0', '1'], '1': ['1', '1'] }, '5': { '0': ['1', '1'], '1': ['2', '1'] }, '6': { '0': ['2', '1'], '1': ['3', '1'] }, '7': { '0': ['3', '1'], '1': ['4', '1'] }, '8': { '0': ['4', '1'], '1': ['5', '1'] }, '9': { '0': ['5', '1'], '1': ['6', '1'] } }, '7': { '0': { '0': ['7', '0'], '1': ['8', '0'] }, '1': { '0': ['8', '0'], '1': ['9', '0'] }, '2': { '0': ['9', '0'], '1': ['0', '1'] }, '3': { '0': ['0', '1'], '1': ['1', '1'] }, '4': { '0': ['1', '1'], '1': ['2', '1'] }, '5': { '0': ['2', '1'], '1': ['3', '1'] }, '6': { '0': ['3', '1'], '1': ['4', '1'] }, '7': { '0': ['4', '1'], '1': ['5', '1'] }, '8': { '0': ['5', '1'], '1': ['6', '1'] }, '9': { '0': ['6', '1'], '1': ['7', '1'] } }, '8': { '0': { '0': ['8', '0'], '1': ['9', '0'] }, '1': { '0': ['9', '0'], '1': ['0', '1'] }, '2': { '0': ['0', '1'], '1': ['1', '1'] }, '3': { '0': ['1', '1'], '1': ['2', '1'] }, '4': { '0': ['2', '1'], '1': ['3', '1'] }, '5': { '0': ['3', '1'], '1': ['4', '1'] }, '6': { '0': ['4', '1'], '1': ['5', '1'] }, '7': { '0': ['5', '1'], '1': ['6', '1'] }, '8': { '0': ['6', '1'], '1': ['7', '1'] }, '9': { '0': ['7', '1'], '1': ['8', '1'] } }, '9': { '0': { '0': ['9', '0'], '1': ['0', '1'] }, '1': { '0': ['0', '1'], '1': ['1', '1'] }, '2': { '0': ['1', '1'], '1': ['2', '1'] }, '3': { '0': ['2', '1'], '1': ['3', '1'] }, '4': { '0': ['3', '1'], '1': ['4', '1'] }, '5': { '0': ['4', '1'], '1': ['5', '1'] }, '6': { '0': ['5', '1'], '1': ['6', '1'] }, '7': { '0': ['6', '1'], '1': ['7', '1'] }, '8': { '0': ['7', '1'], '1': ['8', '1'] }, '9': { '0': ['8', '1'], '1': ['9', '1'] } } } type AddDigit<A extends Digit, B extends Digit, C extends CarryDigit = "0"> = LUT[A][B][C] type Add<A extends string, B extends string, C extends CarryDigit = "0", _Res extends string = ""> = A extends `${infer A1 extends Digit}${infer ARest}` ? B extends `${infer B1 extends Digit}${infer BRest}` ? Add<ARest, BRest, AddDigit<A1, B1, C>[1], `${_Res}${AddDigit<A1, B1, C>[0]}`> : Add<ARest, "", AddDigit<A1, "0", C>[1], `${_Res}${AddDigit<A1, "0", C>[0]}`> : B extends `${infer B1 extends Digit}${infer BRest}` ? Add<"", BRest, AddDigit<"0", B1, C>[1], `${_Res}${AddDigit<"0", B1, C>[0]}`> : C extends "1" ? `${_Res}1` : _Res type Reverse<T extends string, O extends string = ""> = T extends `${infer L}${infer R}` ? Reverse<R, `${L}${O}`> : T extends string ? `${T}${O}` : O type Sum<A extends string | number | bigint, B extends string | number | bigint> = Reverse<Add<Reverse<`${A}`>, Reverse<`${B}`>>>
提出日時 | 2024-09-12 16:57:28 |
---|---|
問題 | Sum |
ユーザー | ookkoouu |
ステータス | Accepted |
import type { Equal, Expect } from '@type-challenges/utils' type cases = [ Expect<Equal<Sum<2, 3>, '5'>>, Expect<Equal<Sum<'13', '21'>, '34'>>, Expect<Equal<Sum<'328', 7>, '335'>>, Expect<Equal<Sum<1_000_000_000_000n, '123'>, '1000000000123'>>, Expect<Equal<Sum<9999, 1>, '10000'>>, Expect<Equal<Sum<4325234, '39532'>, '4364766'>>, Expect<Equal<Sum<728, 0>, '728'>>, Expect<Equal<Sum<'0', 213>, '213'>>, Expect<Equal<Sum<0, '0'>, '0'>>, ]