feat: working through all the algos i'll need

This commit is contained in:
mpaulson 2022-07-18 21:54:39 -06:00
parent 7101b99c35
commit 6f41e5760d
5 changed files with 264 additions and 27 deletions

View file

@ -1,5 +1,66 @@
const length_property = {
getters: [{
name: "length",
return: "number",
prop_name: "_length",
}],
properties: [{
name: "_length",
type: "number",
scope: "private",
}]
};
const list_interface = {
methods: [{
name: "prepend",
args: "item: T",
return: "void",
}, {
name: "insertAt",
args: "item: T, idx: number",
return: "void",
}, {
name: "append",
args: "item: T",
return: "void",
}, {
name: "remove",
args: "item: T",
return: "T | undefined",
}, {
name: "get",
args: "idx: number",
return: "T | undefined",
}, {
name: "removeAt",
args: "idx: number",
return: "T | undefined",
}],
...length_property,
};
module.exports = {
Map: {
generic: "<T, V>",
type: "class",
methods: [{
name: "get",
args: "key: T",
return: "V | undefined",
}, {
name: "set",
args: "key: T, value: V",
return: "void",
}, {
name: "delete",
args: "key: T",
return: "V | undefined",
}, {
name: "size",
return: "number",
}],
},
RingBuffer: {
generic: "<T>",
type: "class",
@ -26,51 +87,64 @@ module.exports = {
scope: "private",
}]
},
ArrayList: {
type: "class",
generic: "<T>",
methods: [{
name: "add",
args: "item: T",
return: "void",
}, {
name: "peek",
return: "T | undefined",
}, {
name: "remove",
args: "item: T",
return: "T | undefined",
}, {
name: "removeAt",
args: "idx: number",
return: "T | undefined",
}],
getters: [{
name: "length",
return: "number",
prop_name: "_length",
}],
properties: [{
name: "_length",
type: "number",
scope: "private",
}]
...list_interface,
},
SinglyLinkedList: {
generic: "<T>",
type: "class",
...list_interface,
},
DoublyLinkedList: {
generic: "<T>",
type: "class",
...list_interface,
},
Queue: {
generic: "<T>",
type: "class",
...length_property,
methods: [{
name: "enqueue",
args: "item: T",
return: "void",
}, {
name: "deque",
args: "",
return: "T | undefined",
}, {
name: "peek",
args: "",
return: "T | undefined",
}]
},
Stack: {
generic: "<T>",
type: "class",
...length_property,
methods: [{
name: "push",
args: "item: T",
return: "void",
}, {
name: "pop",
args: "",
return: "T | undefined",
}, {
name: "peek",
args: "",
return: "T | undefined",
}]
},
BubbleSort: {
type: "fn",
fn: "bubble_sort",
args: "arr: number[]",
"return": "void",
},
InsertionSort: {
@ -107,5 +181,100 @@ module.exports = {
args: "list: WeightedAdjacencyList",
"return": ": WeightedAdjacencyList | null",
},
BinarySearchList: {
type: "fn",
fn: "bs_list",
args: "haystack: number[], needle: number",
"return": ": boolean",
},
LinearSearchList: {
type: "fn",
fn: "linear_search",
args: "haystack: number[], needle: number",
"return": ": boolean",
},
TwoCrystalBalls: {
type: "fn",
fn: "two_crystal_balls",
args: "breaks: boolean[]",
"return": ": number",
},
MazeSolver: {
type: "fn",
fn: "solve",
args: "maze: string[][], wall: string, path: string, start: Point, end: Point",
"return": ": Point[]",
},
BTPreOrder: {
type: "fn",
fn: "pre_order_search",
generic: "<T>",
args: "head: BinaryNode<T>",
"return": ": BinaryNode<T>[]",
},
BTInOrder: {
type: "fn",
fn: "in_order_search",
generic: "<T>",
args: "head: BinaryNode<T>",
"return": ": BinaryNode<T>[]",
},
BTPostOrder: {
type: "fn",
fn: "post_order_search",
generic: "<T>",
args: "head: BinaryNode<T>",
"return": ": BinaryNode<T>[]",
},
BTBFS: {
type: "fn",
fn: "bfs",
generic: "<T>",
args: "head: BinaryNode<T>",
"return": ": BinaryNode<T>[]",
},
CompareBinaryTrees: {
type: "fn",
fn: "compare",
args: "head: BinaryNode<number>",
"return": ": boolean",
},
DFSOnBST: {
type: "fn",
fn: "search",
args: "head: BinaryNode<number>, needle: number",
"return": ": boolean",
},
DFSGraphList: {
type: "fn",
fn: "dfs",
args: "graph: WeightedAdjacencyList, source: number, needle: number",
"return": "number[]",
},
BFSGraphList: {
type: "fn",
fn: "bfs",
args: "graph: WeightedAdjacencyList, source: number, needle: number",
"return": "number[]",
},
BFSGraphMatrix: {
type: "fn",
fn: "bfs",
args: "graph: WeightedAdjacencyMatrix, source: number, needle: number",
"return": "number[]",
},
};