diff --git a/src/main/java/com/booleanuk/Scrabble.java b/src/main/java/com/booleanuk/Scrabble.java index 88108a8..86e1e0c 100644 --- a/src/main/java/com/booleanuk/Scrabble.java +++ b/src/main/java/com/booleanuk/Scrabble.java @@ -1,12 +1,105 @@ package com.booleanuk; +import javax.print.CancelablePrintJob; +import java.awt.image.TileObserver; +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'); + + 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)); + 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)); + letters11.forEach(x -> letterValues.put(x, 0)); + + char[] charArray = word.toUpperCase().toCharArray(); + int points = 0; + + for (int i = 0; i < charArray.length; i++) { + int value = letterValues.get(charArray[i]); + points += value; + } + + 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; + } }