Du arbejder som programmør for en bogklub, der ønsker at analysere anmeldelser af bøger skrevet af medlemmerne. Bogklubben har samlet en stor mængde tekstdata fra anmeldelser og ønsker at få indsigt i, hvilke ord der bruges hyppigst i disse anmeldelser. Denne indsigt kan hjælpe med at forstå medlemmernes præferencer og fokusområder, samt identificere almindelige temaer i anmeldelserne.
Du har fået udleveret et grundlæggende program, der læser en tekstfil og tæller forekomsten af hvert ord. Programmet er dog ikke fuldstændigt og kan indeholde fejl. Din opgave er at rette programmet, så det fungerer korrekt og opfylder kravene. 
Forstå og forklar koden:
- Forklar, hvad funktionen cleanText(String text) gør, og hvorfor den er nødvendig.
- Hvad er setup()-funktionen ansvarlig for i dette program?
Rens teksten:
- Forklar hvordan replaceAll(“[^a-zA-Z0-9\\s]”, “”) fungerer, og hvorfor det er vigtigt at fjerne tegnsætning og konvertere til små bogstaver.
- Ændre replaceAll(“[^a-zA-Z0-9\\s]”, “”) så den også tager højde for æøå, da teksterne er skrevet på dansk.
Tæl ordene:
- Beskriv, hvordan findWord(String word) fungerer, og hvad den bruges til i countWords(String text).
- Implementer koden til at få vist det samlede antal unikke ord.
Forbedr koden:
- Ændr funktionen printWordCount() til at sortere ordene efter hyppighed, så de mest hyppige ord vises først.
- Tilføj en simpel grafisk visualisering af ordhyppighederne (f.eks. som et søjlediagram).
- Udskriv kun de ti mest hyppige ord.
String[] words;
int[] counts;
int uniqueWords;
void setup() {
size(800, 600);
background(255);
// Angiv stien til din tekstfil her
String[] lines = loadStrings("Tekst.txt");
String text = join(lines, " ");
// Rens tekst og tæller ord
text = cleanText(text);
countWords(text);
// Udskriv resultaterne
printWordCount();
}
String cleanText(String text) {
// Fjern tegnsætning og gør teksten til små bogstaver
text = text.toLowerCase();
text = text.replaceAll("[^a-zA-Z0-9\\s]", "");
return text;
}
void countWords(String text) {
words = new String[1000];
counts = new int[1000];
uniqueWords = 0;
String[] allWords = splitTokens(text, " ");
for (String word : allWords) {
int index = findWord(word);
if (index == -1) {
words[uniqueWords] = word;
counts[uniqueWords] = 1;
uniqueWords++;
} else {
counts[index]++;
}
}
}
int findWord(String word) {
for (int i = 0; i < uniqueWords; i++) {
if (words[i].equals(word)) {
return i;
}
}
return -1;
}
void printWordCount() {
int y = 20; // Startposition for tekstudskrivning
for (int i = 0; i < uniqueWords; i++) {
fill(0);
text(words[i] + ": " + counts[i], 10, y);
y += 20;
}
}
Du sidder og roder med en æske tændstikker og begynder at placere dem i et fint mønster. For hver tom ende ligger du en ny tændstik på tværs. Dvs. hvis der ligger to tændstikker i forlængelse af hinanden så skal der kun ligges tændstikker i hver af enderne og ikke imellem de to.
- Lav et klasse diagram for en tændstikke. Tændstikken skal have et X/Y koordinat for hver ende og en retning (dvs. om den er vandret eller lodret). Derudoveer skal den have en metode for at vise en tændstik.
- Lav et flow diagram der illustrere hvordan du vil lave en simulation af tændstikkemønsteret.
- Hvis du har mere tid lav simuleringen af tændstikkemønstret. Find ud af hvor mange tændstikker der skal til at lave 14 iterationer af mønstret. Eller skriv pseudokoden til programmet.