Remove WIP Subtraction, clean up unused types
This commit is contained in:
parent
b1535c59ae
commit
ed2c9caddf
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"name": "numeric-types",
|
||||
"version": "1.0.0",
|
||||
"version": "0.0.1",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "Jeff Lieb",
|
||||
"license": "ISC",
|
||||
"license": "NON-AI ISC",
|
||||
"dependencies": {
|
||||
"typescript": "^5.3.3"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { DigitsToNumber, SplitDigits, Digit, TupleForDigit } from ".";
|
||||
import { DigitsToNumber, SplitDigits, Digit, TupleForDigit } from "./Digits";
|
||||
|
||||
|
||||
export type Add<A extends number, B extends number> = DigitsToNumber<AddDigitArrays<SplitDigits<A>, SplitDigits<B>>> & number
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
type NonZeroDigit = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
|
||||
export type Digit = 0 | NonZeroDigit
|
||||
type Tuple0To9 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
export type Digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
|
||||
|
||||
export type TupleForDigit<Value extends Digit> =
|
||||
Value extends 0 ? []
|
||||
|
|
@ -27,8 +25,6 @@ type TakeDigitFromString<DigitString extends String> =
|
|||
? [Head, ...TakeDigitFromString<Tail>]
|
||||
: never
|
||||
|
||||
type Zeros<Length extends number> = [] & {length: Length} extends [...infer Tuple] ? {[Property in keyof Tuple]: 0} & Array<0> & {length: Length} : never
|
||||
|
||||
type StringToNumber<NumericString extends string> = NumericString extends `${infer Number extends number}` ? Number : never
|
||||
|
||||
type Stringable = string | number | bigint | boolean | null | undefined
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
import { Digit, DigitsToNumber, SplitDigits, TupleForDigit } from "."
|
||||
import { Digit, DigitsToNumber, SplitDigits, TupleForDigit } from "./Digits"
|
||||
|
||||
export type Max<A extends number, B extends number> = DigitsToNumber<MaxDigitArray<SplitDigits<A>, SplitDigits<B>>> & number
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
import { Digit, DigitsToNumber, SplitDigits, TupleForDigit } from ".";
|
||||
|
||||
export type Add<A extends number, B extends number> = DigitsToNumber<SubtractDigitArrays<SplitDigits<A>, SplitDigits<B>>> & number
|
||||
|
||||
type SubtractDigitArrays<A extends Digit[], B extends Digit[], Carry extends boolean = false> =
|
||||
[A, B] extends [[...infer HeadA extends Digit[], infer TailA extends Digit], [...infer HeadB extends Digit[], infer TailB extends Digit]] ? AddTails<HeadA, TailA, HeadB, TailB, Carry> : [A, B] extends [[...infer HeadA extends Digit[], infer TailA extends Digit], []] ? AddTails<HeadA, TailA, [], 0, Carry> : [A, B] extends [[], [...infer HeadB extends Digit[], infer TailB extends Digit]] ? AddTails<[], 0, HeadB, TailB, Carry> : [A, B] extends [[], []] ? Carry extends true ? [1] : [] : []
|
||||
|
||||
type SubtractTails<HeadA extends Digit[], TailA extends Digit, HeadB extends Digit[], TailB extends Digit, Carry extends boolean> =
|
||||
SplitDigits<SubtractDigits<TailA, TailB, Carry>> extends [1, infer Result extends Digit] ? [...AddDigitArrays<HeadA, HeadB, true>, Result] : [...AddDigitArrays<HeadA, HeadB>, SplitDigits<AddDigits<TailA, TailB, Carry>>[0]]
|
||||
|
||||
type SubtractDigits<A extends Digit, B extends Digit, Carry extends boolean = false> =
|
||||
|
||||
[...TupleForDigit<A>, ...TupleForDigit<B>, ...(Carry extends false ? [] : [0])]['length'] & number
|
||||
|
||||
|
||||
Loading…
Reference in New Issue