2024-12-14 16:17:31 +01:00
|
|
|
# Ordle: A Wordle Solver
|
|
|
|
## Design
|
2024-12-14 16:27:54 +01:00
|
|
|
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.
|
2024-12-14 16:17:31 +01:00
|
|
|
## Build Instructions
|
2024-12-14 16:27:54 +01:00
|
|
|
Common actions are defined in the provided Justfile and can be viewed with
|
|
|
|
`just -l`
|
2024-12-14 16:01:12 +01:00
|
|
|
|
2024-12-14 16:17:31 +01:00
|
|
|
For a release build:
|
|
|
|
```bash
|
|
|
|
make RELEASE=1
|
|
|
|
```
|
|
|
|
## User Instructions
|
|
|
|
## Limitations and Drawbacks
|
|
|
|
## Comments
|
2024-12-14 16:01:12 +01:00
|
|
|
|