diff --git a/README.md b/README.md index 4c9d1a3..ae724b7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,39 @@ # Ordle: A Wordle Solver ## Design +Programmet är strukturerat i tre huvudkomponenter som arbetar tillsammans för +att lösa Wordle-pussel. Den första delen hanterar inläsning och förberedelse av +ordlistan. funktionen *read\_candidates* läser in alla ord från en fil och +filtrerar ut de som inte är fem bokstäver långa. Samtidigt konverteras orden +till gemener och dubbletter tas bort. Detta säkerställer att programmet börjar +med en ren lista av potentiella lösningar. + +Den andra delen av programmet fokuserar på filtrering av ord baserat på +användarens input- Här används 3 funktoter för att hantera olika typer av krav: + +* *wrong\_fn* filterar bort ord som innehåller bokstäver som användaren angivit + “felaktiga”. +* *correct\_fn* säkerställer att de ord som finns kvar har alla gröna bokstäver + på rätt positioner. +* *misplaced\_fn* kontrollerar att gula bokstäver finns i ordet, men inte på de + positioner som angivits som felaktiga. + +Dessa funktioner används i funktionen *do\_filter*, som applicerar användarens +kriterier på den aktuella listan av kandidater. Efter varje steg minskar +antalet möjliga lösningar tills en kandidat återstår, eller tills användaren +väljer att avsluta. + +Den tredje komponenten hanterar användarinteraktionen. Funktionen *prompt* +används för att samla in indata från användaren. Bokstäver som inte finns i +ordet, gröna bokstäver med deras positioner och gula bokstäver med deras +felaktiga positioner. Denna indata används sedan för att uppdatera +filtreringen. + +Programmet består av 3 filer. Vilket är *main.cc* som kör självaste programmet +och använder logik från *ordle.cc* genom att inkludera *ordle.h*. *ordle.h* är +definitionen för *ordle.cc* och *ordle.cc* är självaste logiken. ## Build Instructions -Common actions are defined in the provided Justfile and can be viewed with `just -l` +Common actions are defined in the provided Justfile and can be viewed with +`just -l` For a release build: ```bash