(s: string)
| 23 | } |
| 24 | |
| 25 | function hashString(s: string): number { |
| 26 | let h = 2166136261; |
| 27 | for (let i = 0; i < s.length; i++) { |
| 28 | h ^= s.charCodeAt(i); |
| 29 | h = Math.imul(h, 16777619); |
| 30 | } |
| 31 | return h >>> 0; |
| 32 | } |
| 33 | |
| 34 | function pick<T>(rng: () => number, arr: readonly T[]): T { |
| 35 | return arr[Math.floor(rng() * arr.length)]!; |