From d0623d452dbc0fbcf293adf10978b87f7e549013 Mon Sep 17 00:00:00 2001 From: Moueed Ali Date: Wed, 6 Aug 2025 14:12:41 +0200 Subject: [PATCH 1/3] Exercise complete --- src/main/java/com/booleanuk/Scrabble.java | 56 +++++++++++++++++++++-- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/booleanuk/Scrabble.java b/src/main/java/com/booleanuk/Scrabble.java index 88108a8..85043d4 100644 --- a/src/main/java/com/booleanuk/Scrabble.java +++ b/src/main/java/com/booleanuk/Scrabble.java @@ -1,12 +1,62 @@ package com.booleanuk; +import javax.print.CancelablePrintJob; +import java.io.CharArrayReader; +import java.util.*; + public class Scrabble { - public Scrabble(String word) { + private String word; + + public Scrabble(String word) { + this.word = word; } public int score() { - return -1; - } + if (this.word == null || this.word.equals("\n\r\t\b\f")) { + return 0; + } + + ArrayList letters1 = new ArrayList<>(); + Collections.addAll(letters1, 'A', 'E', 'I', 'O', 'U', 'L', 'N', 'R', 'S', 'T'); + + ArrayList letters2 = new ArrayList<>(); + Collections.addAll(letters2, 'D', 'G'); + + ArrayList letters3 = new ArrayList<>(); + Collections.addAll(letters3, 'B', 'C', 'M', 'P'); + + ArrayList letters4 = new ArrayList<>(); + Collections.addAll(letters4, 'F', 'H', 'V', 'W', 'Y'); + + ArrayList letters5 = new ArrayList<>(); + Collections.addAll(letters5, 'K'); + + ArrayList letters8 = new ArrayList<>(); + Collections.addAll(letters8, 'J', 'X'); + + ArrayList letters10 = new ArrayList<>(); + Collections.addAll(letters10, 'Q', 'Z'); + + HashMap letterValues = new HashMap<>(); + letters1.forEach(x -> letterValues.put(x, 1)); + letters2.forEach(x -> letterValues.put(x, 2)); + letters3.forEach(x -> letterValues.put(x, 3)); + letters4.forEach(x -> letterValues.put(x, 4)); + letters5.forEach(x -> letterValues.put(x, 5)); + letters8.forEach(x -> letterValues.put(x, 8)); + letters10.forEach(x -> letterValues.put(x, 10)); + + + char[] charArray = word.toUpperCase().toCharArray(); + int totalScore = 0; + + for (int i = 0; i < charArray.length; i++) { + int value = letterValues.get(charArray[i]); + totalScore += value; + } + + return totalScore; + } } From d4dcb58aea2f78a00b2100878aed0f6f59a0efb5 Mon Sep 17 00:00:00 2001 From: Moueed Ali Date: Wed, 6 Aug 2025 14:13:39 +0200 Subject: [PATCH 2/3] Exercise complete --- src/main/java/com/booleanuk/Scrabble.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/booleanuk/Scrabble.java b/src/main/java/com/booleanuk/Scrabble.java index 85043d4..1b417a8 100644 --- a/src/main/java/com/booleanuk/Scrabble.java +++ b/src/main/java/com/booleanuk/Scrabble.java @@ -50,13 +50,13 @@ public int score() { char[] charArray = word.toUpperCase().toCharArray(); - int totalScore = 0; + int points = 0; for (int i = 0; i < charArray.length; i++) { int value = letterValues.get(charArray[i]); - totalScore += value; + points += value; } - return totalScore; + return points; } } From 0049e566d7c19b09d64188030540f73e3a6c2370 Mon Sep 17 00:00:00 2001 From: Moueed Ali Date: Wed, 6 Aug 2025 15:56:57 +0200 Subject: [PATCH 3/3] Extension exercises halfway completed --- src/main/java/com/booleanuk/Scrabble.java | 47 ++++++++++++++++++++++- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/booleanuk/Scrabble.java b/src/main/java/com/booleanuk/Scrabble.java index 1b417a8..86e1e0c 100644 --- a/src/main/java/com/booleanuk/Scrabble.java +++ b/src/main/java/com/booleanuk/Scrabble.java @@ -1,6 +1,7 @@ package com.booleanuk; import javax.print.CancelablePrintJob; +import java.awt.image.TileObserver; import java.io.CharArrayReader; import java.util.*; @@ -39,6 +40,9 @@ public int score() { ArrayList letters10 = new ArrayList<>(); Collections.addAll(letters10, 'Q', 'Z'); + ArrayList letters11 = new ArrayList<>(); + Collections.addAll(letters11, '[', '{', '}', ']'); + HashMap letterValues = new HashMap<>(); letters1.forEach(x -> letterValues.put(x, 1)); letters2.forEach(x -> letterValues.put(x, 2)); @@ -47,7 +51,7 @@ public int score() { letters5.forEach(x -> letterValues.put(x, 5)); letters8.forEach(x -> letterValues.put(x, 8)); letters10.forEach(x -> letterValues.put(x, 10)); - + letters11.forEach(x -> letterValues.put(x, 0)); char[] charArray = word.toUpperCase().toCharArray(); int points = 0; @@ -57,6 +61,45 @@ public int score() { points += value; } - return points; + int totalScore = 0; + int multiplier = 1; + int curlyCount = 0; + int bracketCount = 0; + + for (int i = 0; i < charArray.length; i++) { + int value = letterValues.get(charArray[i]); + + if (charArray[i] == '[') { + multiplier = 3; + int newVal = letterValues.get(charArray[i + 1]) * multiplier; + totalScore += newVal; + i++; + bracketCount++; + } + else if (charArray[i] == '{') { + multiplier = 2; + int newVal = letterValues.get(charArray[i + 1]) * multiplier; + totalScore += newVal; + i++; + curlyCount++; + } + else if (charArray[i] == ']') { + bracketCount--; + } + else if (charArray[i] == '}') { + curlyCount--; + } + else {totalScore += value;} + } + + if (bracketCount != 0) { + return 0; + } + + if (curlyCount != 0) { + return 0; + } + + return totalScore; } }