første utkast av Dagens ord. Spillet burde fungere, men ikke lagt til…#3053
første utkast av Dagens ord. Spillet burde fungere, men ikke lagt til…#3053miove4372 wants to merge 1 commit into
Conversation
miove4372
commented
May 10, 2026
jesperkha
left a comment
There was a problem hiding this comment.
Ser bra ut, men fil-håndtering må fikses. Finn en måte å lese filen så lite som mulig, helst bare én gang. Fil-lesing og splitting osv er både tregt og bruker en del minne hvis flere spiller samtidig.
| import { readFileSync } from "fs"; | ||
| import { join } from "path"; | ||
|
|
||
| export async function validWord(currentAttempt: string) { |
There was a problem hiding this comment.
Dette er en velidig sløsbar måte å skjekke på. Nå leses filen hver gang (fil-IO er tregt).
Heller les den inn globalt én gang (eller hent den fra uno) og lagre alle ord i et hash set. Da er lookup veldig raskt og filen lastes bare én gang.
Filen er bare 32kb så det går fint å sende den fra uno, men også OK å bare lagre den i next også.
| useEffect(() => { | ||
| if (currentRow > 0 || win || loss) { | ||
| localStorage.setItem( | ||
| "dagens-ord", |
There was a problem hiding this comment.
Kanskje lage en egen type for spill state så det er lettere å ha oversikt over + blir litt cleanere.
| join(process.cwd(), "src/app/(default)/for-studenter/dagens-ord/words.txt"), | ||
| "utf-8", | ||
| ); | ||
| const words = seededShuffle(file.split("\n").filter(Boolean), 42); |
There was a problem hiding this comment.
Det jeg mente med shuffle er at filen shuffles 1 gang før du lagrer den og shipper, og så aldri igjen. Så bare plukker du ut linje n og da blir det random uten noe som helst IO eller beregning.