Skip to content

Instantly share code, notes, and snippets.

View ralphschuler's full-sized avatar

Ralph Schuler ralphschuler

View GitHub Profile
@ralphschuler
ralphschuler / SeedManagement.ts
Created November 1, 2023 22:41
Random Seed Management and Comparison
type Vector = number[];
type VectorPair = [Vector, Vector];
class MathOperations {
static calculateDotProduct(vectorA: Vector, vectorB: Vector): number {
return vectorA.reduce((accumulator, value, index) => accumulator + value * vectorB[index], 0);
}
static calculateNorm(vector: Vector): number {
return Math.sqrt(this.calculateDotProduct(vector, vector));
@ralphschuler
ralphschuler / ObjectObserver.ts
Created November 1, 2023 22:38
Random Typescript ObjectObserver
// Custom error classes
class ObjectAlreadyObservedError extends Error {
constructor(identifier: Identifier) {
super(`Object with identifier ${identifier} is already being observed.`);
Object.setPrototypeOf(this, ObjectAlreadyObservedError.prototype);
}
}
class ObjectNotObservedError extends Error {
constructor(identifier: Identifier) {
@ralphschuler
ralphschuler / BetterMap.ts
Last active September 25, 2023 13:49
Typescript Code Snippets I (found/wrote/generated using ai)
class BetterMap<k, v> extends Map<k, v> {
update(key:k, updater: (v:v, k:k) => v, notset:v = undefined) {
if(this.has(key)) this.set(key, updater(this.get(key), key))
else this.set(key, notset)
}
filter(predicate: (v:v, k:k) => boolean) {
const newMap = new BetterMap<k, v>()
const entries = Array.from(this.entries())
for(const [key, value] of entries) {