From cfd970e21663c3278f6e01d356690789225b6b56 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Sat, 2 Dec 2023 14:16:56 -0700 Subject: 2022 day 9 and add utils --- utils/jsonds.ts | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 utils/jsonds.ts (limited to 'utils/jsonds.ts') diff --git a/utils/jsonds.ts b/utils/jsonds.ts new file mode 100644 index 0000000..c717232 --- /dev/null +++ b/utils/jsonds.ts @@ -0,0 +1,66 @@ +export class JSONSet { + private items: Set; + + constructor() { + this.items = new Set(); + } + + add(item: T): void { + const itemJson = JSON.stringify(item, Object.keys(item).sort()); + this.items.add(itemJson); + } + + has(item: T): boolean { + const itemJson = JSON.stringify(item, Object.keys(item).sort()); + return this.items.has(itemJson); + } + + delete(item: T): boolean { + const itemJson = JSON.stringify(item, Object.keys(item).sort()); + return this.items.delete(itemJson); + } + + clear(): void { + this.items.clear(); + } + + get size(): number { + return this.items.size; + } +} + +export class JSONHashMap { + private map: Map; + + constructor() { + this.map = new Map(); + } + + set(key: T, value: T): void { + const keyJson = JSON.stringify(key, Object.keys(key).sort()); + this.map.set(keyJson, value); + } + + get(key: T): T | undefined { + const keyJson = JSON.stringify(key, Object.keys(key).sort()); + return this.map.get(keyJson); + } + + has(key: T): boolean { + const keyJson = JSON.stringify(key, Object.keys(key).sort()); + return this.map.has(keyJson); + } + + delete(key: T): boolean { + const keyJson = JSON.stringify(key, Object.keys(key).sort()); + return this.map.delete(keyJson); + } + + clear(): void { + this.map.clear(); + } + + get size(): number { + return this.map.size; + } +} -- cgit v1.2.3-70-g09d2