Skip to content

Instantly share code, notes, and snippets.

View Grubba27's full-sized avatar
:shipit:

Gabriel Grubba Grubba27

:shipit:
View GitHub Profile
@Grubba27
Grubba27 / index.html
Created December 27, 2020 14:45
Space Invaders Game ( 404 )
<p class="center">Space Invadors destroyed this page! Take revenge on them!
<br/> Use <span class="label label-danger">Space</span> to shoot and <span class="label label-danger">←</span>&#160;<span class="label label-danger">→</span> to move!&#160;&#160;&#160;<button class="btn btn-default btn-xs" id="restart">Restart</button></p>
<canvas id="space-invaders"/>
@Grubba27
Grubba27 / power.ts
Last active April 7, 2022 13:00
Simple power made with types in TS
// Multiplication comes from this issue: https://github.com/type-challenges/type-challenges/issues/5814
type Reverse<A> =
`${A}` extends `${infer AH}${infer AT}`
? `${Reverse<AT>}${AH}` : A
type Digs = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
type DigsNext<I = Digs, R = {}> =
I extends [infer Head, infer Next, ...infer Tail]
? DigsNext<[Next, ...Tail], R & Record<Head, Next>>
@Grubba27
Grubba27 / insertsort.ts
Last active April 9, 2022 12:29
insertsort.ts
// this i got the idea from this issue https://github.com/type-challenges/type-challenges/issues/8168
type GreaterThan<
T extends number,
U extends number,
C extends unknown[] = []
> =
T extends U
? false
: C['length'] extends T
? false
@Grubba27
Grubba27 / log.ts
Last active April 13, 2022 00:19
Log
// Multiplication comes from this issue: https://github.com/type-challenges/type-challenges/issues/5814
type Reverse<A> =
`${A}` extends `${infer AH}${infer AT}`
? `${Reverse<AT>}${AH}` : A
type Digs = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
type DigsNext<I = Digs, R = {}> =
I extends [infer Head, infer Next, ...infer Tail]
? DigsNext<[Next, ...Tail], R & Record<Head, Next>>
@Grubba27
Grubba27 / division.ts
Created April 19, 2022 01:00
Division made in TS types
// Multiplication comes from this issue: https://github.com/type-challenges/type-challenges/issues/5814
type Reverse<A> =
`${A}` extends `${infer AH}${infer AT}`
? `${Reverse<AT>}${AH}` : A
type Digs = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
type DigsNext<I = Digs, R = {}> =
I extends [infer Head, infer Next, ...infer Tail]
? DigsNext<[Next, ...Tail], R & Record<Head, Next>>
@Grubba27
Grubba27 / fizzbuzz.ts
Created April 20, 2022 01:13
FizzBuzz made in typelevel
type Reverse<A> =
`${A}` extends `${infer AH}${infer AT}`
? `${Reverse<AT>}${AH}` : A
type Digs = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
type DigsNext<I = Digs, R = {}> =
I extends [infer Head, infer Next, ...infer Tail]
@Grubba27
Grubba27 / htmlparser.ts
Created April 23, 2022 01:21
Simple HTML parser
type λ<T, C> = {tag: T, content: C}
type HTMLParser
<
Text extends string,
Tag extends string = '',
Content extends string = ''
> =
Text extends `${infer L}${infer R}`
? L extends '<'
// https://softwarefoundations.cis.upenn.edu/lf-current/Basics.html
type Last<T extends any[]> = T extends [...infer R,infer L] ? L : never;
type D = ['Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado', 'Domingo']
type DProx
<I = D, R = {}, H extends any = ''> =
I extends [infer Head, infer Next, ...infer Tail]
? DProx<[Next, ...Tail], R & Record<Head, Next> & Record<Last<D>, D[0]>>
: { [K in keyof R]: R[K] }
@Grubba27
Grubba27 / statistics.ts
Last active May 31, 2022 04:10
basico of Statistics
type Reverse<A> =
`${A}` extends `${infer AH}${infer AT}`
? `${Reverse<AT>}${AH}` : A
type Digs = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
type DigsNext<I = Digs, R = {}> =
I extends [infer Head, infer Next, ...infer Tail]
? DigsNext<[Next, ...Tail], R & Record<Head, Next>>
: { [K in keyof R]: R[K] }
@Grubba27
Grubba27 / calculator.ts
Created May 5, 2022 21:10
Simple calculator made in ts
type Reverse<A> =
`${A}` extends `${infer AH}${infer AT}`
? `${Reverse<AT>}${AH}` : A
type Digs = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
type DigsNext<I = Digs, R = {}> =
I extends [infer Head, infer Next, ...infer Tail]
? DigsNext<[Next, ...Tail], R & Record<Head, Next>>
: { [K in keyof R]: R[K] }