ordle/README.md

46 lines
2 KiB
Markdown
Raw Normal View History

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