![type Reindeer = Dasher | Dancer | Prancer | Vixen | Comet | Cupid | Donner | Blitzen | Rudolph;
type Soduku = Reindeer[][][];
type SodukuRow = Reindeer[][];
type IsRowValid<Row extends SodukuRow> = Reindeer extends Row[number][number] ? true : false;
type AllRowsValid<Table extends Soduku, Acc extends boolean[] = []> = Table extends [
infer Head extends SodukuRow,
...infer Tail extends Soduku,
]
? AllRowsValid<Tail, [...Acc, IsRowValid<Head>]>
: Acc extends true[]
? true
: false;
type Validate<T extends Soduku> = AllRowsValid<T>;](https://pbs.twimg.com/media/GB8fgvdWgAEeI19.jpg?name=small&format=webp)
ALT type Reindeer = Dasher | Dancer | Prancer | Vixen | Comet | Cupid | Donner | Blitzen | Rudolph; type Soduku = Reindeer[][][]; type SodukuRow = Reindeer[][]; type IsRowValid<Row extends SodukuRow> = Reindeer extends Row[number][number] ? true : false; type AllRowsValid<Table extends Soduku, Acc extends boolean[] = []> = Table extends [ infer Head extends SodukuRow, ...infer Tail extends Soduku, ] ? AllRowsValid<Tail, [...Acc, IsRowValid<Head>]> : Acc extends true[] ? true : false; type Validate<T extends Soduku> = AllRowsValid<T>;
![type Items = ["🛹", "🚲", "🛴", "🏄"];
type RepeatItems<
Count extends number,
OrderIndex extends number,
Acc extends Items[number][] = [],
> = Acc["length"] extends Count ? Acc : RepeatItems<Count, OrderIndex, [...Acc, Items[OrderIndex]]>;
type AddOne<Value extends number, Acc extends 0[] = []> = Acc["length"] extends Value
? [...Acc, 0]["length"]
: AddOne<Value, [...Acc, 0]>;
type Rebuild<
T extends number[],
OrderIndex extends number = 0,
Acc extends Items[number][] = [],
> = T extends [infer Count extends number, ...infer Tail extends number[]]
? OrderIndex extends Items["length"]
? [...Acc, ...RepeatItems<Count, 0>, ...Rebuild<Tail, 1, Acc>]
: [...Acc, ...RepeatItems<Count, OrderIndex>, ...Rebuild<Tail, AddOne<OrderIndex>, Acc>]
: Acc;](https://pbs.twimg.com/media/GBuczciXwAA52I7.jpg?name=small&format=webp)
ALT type Items = ["🛹", "🚲", "🛴", "🏄"]; type RepeatItems< Count extends number, OrderIndex extends number, Acc extends Items[number][] = [], > = Acc["length"] extends Count ? Acc : RepeatItems<Count, OrderIndex, [...Acc, Items[OrderIndex]]>; type AddOne<Value extends number, Acc extends 0[] = []> = Acc["length"] extends Value ? [...Acc, 0]["length"] : AddOne<Value, [...Acc, 0]>; type Rebuild< T extends number[], OrderIndex extends number = 0, Acc extends Items[number][] = [], > = T extends [infer Count extends number, ...infer Tail extends number[]] ? OrderIndex extends Items["length"] ? [...Acc, ...RepeatItems<Count, 0>, ...Rebuild<Tail, 1, Acc>] : [...Acc, ...RepeatItems<Count, OrderIndex>, ...Rebuild<Tail, AddOne<OrderIndex>, Acc>] : Acc;











