export const run = (fn: () => T): T => fn(); export const clamp = (v: number, min: number, max: number): number => Math.max(min, Math.min(max, v)); export const lerp = (a: number, b: number, t: number): number => a + (b - a) * t; export const seededRandom = (seed: number): number => { const x = Math.sin(seed * 9999) * 10000; return x - Math.floor(x); }; export const hashString = (str: string): number => { let h = 0; for (let i = 0; i < str.length; i++) h = ((h << 5) - h + str.charCodeAt(i)) | 0; return Math.abs(h); };