From c59ca6b472e1afea89015d36290403321049a951 Mon Sep 17 00:00:00 2001 From: Jonathan van Oudheusden Date: Wed, 6 Aug 2025 14:38:21 +0200 Subject: [PATCH 1/2] implented most exercises --- src/main/java/com/booleanuk/Scrabble.java | 82 ++++++++++++++++++++++- 1 file changed, 80 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/booleanuk/Scrabble.java b/src/main/java/com/booleanuk/Scrabble.java index 88108a8..c434d41 100644 --- a/src/main/java/com/booleanuk/Scrabble.java +++ b/src/main/java/com/booleanuk/Scrabble.java @@ -1,12 +1,90 @@ package com.booleanuk; public class Scrabble { + String word; public Scrabble(String word) { - + StringBuilder sb = new StringBuilder(); + boolean doubleThing = false; + boolean triple = false; + char lastBracket = '.'; + for (char c: word.toCharArray()) { + String test = sb.toString(); + if (c == '{' && !doubleThing) { + doubleThing = true; + lastBracket = '{'; + } else if (c == '{' && doubleThing ) { + break; + } else if (c == '}' && doubleThing && lastBracket != '[') { + doubleThing = false; + lastBracket = '.'; + } else if (c == '}'&& !doubleThing) { + doubleThing = true; + break; + } else if (c == '[' && !triple) { + triple = true; + lastBracket = '['; + } else if (c == '[' && triple ) { + break; + } else if (c == ']' && triple && lastBracket != '{') { + triple = false; + lastBracket = '.'; + } else if (c == ']'&& !triple) { + triple = true; + break; + } else if (doubleThing && triple) { + sb.append(c); + sb.append(c); + sb.append(c); + sb.append(c); + sb.append(c); + sb.append(c); + } else if (doubleThing) { + sb.append(c); + sb.append(c); + } else if (triple) { + sb.append(c); + sb.append(c); + sb.append(c); + } + else { + sb.append(c); + } + } + if (!doubleThing && !triple) { + this.word = sb.toString().toLowerCase(); + } else { + this.word = ""; + } } public int score() { - return -1; + int score = 0; + for (char c : word.toCharArray()){ + if (c == 'a' || c == 'e' || c == 'i' || c == 'o' + || c == 'l' || c == 'n' || c == 'r' || + c == 's' || c == 't' || c == 'u') { + score += 1; + } else if (c == 'd' || c == 'g') { + score += 2; + } else if (c == 'b' || c == 'm' || c == 'c' || c == 'p'){ + score += 3; + } else if (c == 'f' || c == 'h' || c == 'v' || c == 'w' || c == 'y') { + score += 4; + } else if (c == 'k') { + score += 5; + } else if (c == 'j' || c == 'x') { + score += 8; + } else if (c == 'q' || c == 'z') { + score += 10; + } else { + score = 0; + break; + } + } + + + + return score; } } From fd1d2b7acdcf3a175477bb0594ea4e95000bddff Mon Sep 17 00:00:00 2001 From: Jonathan van Oudheusden Date: Wed, 6 Aug 2025 15:15:48 +0200 Subject: [PATCH 2/2] made all test pass --- src/main/java/com/booleanuk/Scrabble.java | 75 ++++++++++++++++------- 1 file changed, 54 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/booleanuk/Scrabble.java b/src/main/java/com/booleanuk/Scrabble.java index c434d41..2a51576 100644 --- a/src/main/java/com/booleanuk/Scrabble.java +++ b/src/main/java/com/booleanuk/Scrabble.java @@ -1,54 +1,85 @@ package com.booleanuk; +import java.util.stream.Collectors; + public class Scrabble { String word; public Scrabble(String word) { + int wordLength = word.chars().filter(x -> Character.isAlphabetic((char) x)) + .mapToObj(x -> String.valueOf((char) x)) + .collect(Collectors.joining()).length(); +// System.out.println(test1); + StringBuilder sb = new StringBuilder(); boolean doubleThing = false; boolean triple = false; char lastBracket = '.'; + int charsSinceCurly = 0; + int charsSinceSquar = 0; for (char c: word.toCharArray()) { String test = sb.toString(); if (c == '{' && !doubleThing) { doubleThing = true; lastBracket = '{'; + charsSinceCurly = 0; } else if (c == '{' && doubleThing ) { break; } else if (c == '}' && doubleThing && lastBracket != '[') { - doubleThing = false; - lastBracket = '.'; + if (charsSinceCurly == 1 || charsSinceCurly == wordLength) { + doubleThing = false; + lastBracket = '.'; + } else { + break; + } + } else if (c == '}'&& !doubleThing) { doubleThing = true; break; } else if (c == '[' && !triple) { triple = true; lastBracket = '['; + charsSinceSquar = 0; } else if (c == '[' && triple ) { break; } else if (c == ']' && triple && lastBracket != '{') { - triple = false; - lastBracket = '.'; + if (charsSinceSquar == 1 || charsSinceSquar == wordLength) { + triple = false; + lastBracket = '.'; + } else { + break; + } + } else if (c == ']'&& !triple) { triple = true; break; - } else if (doubleThing && triple) { - sb.append(c); - sb.append(c); - sb.append(c); - sb.append(c); - sb.append(c); - sb.append(c); - } else if (doubleThing) { - sb.append(c); - sb.append(c); - } else if (triple) { - sb.append(c); - sb.append(c); - sb.append(c); - } - else { - sb.append(c); + } else { + if (doubleThing && triple) { + sb.append(c); + sb.append(c); + sb.append(c); + sb.append(c); + sb.append(c); + sb.append(c); + } else if (doubleThing) { + sb.append(c); + sb.append(c); + } else if (triple) { + sb.append(c); + sb.append(c); + sb.append(c); + } + else { + sb.append(c); + } + if (doubleThing) { + charsSinceCurly ++; + } + if (triple) { + charsSinceSquar++; + } } + + } if (!doubleThing && !triple) { this.word = sb.toString().toLowerCase(); @@ -87,4 +118,6 @@ public int score() { return score; } + + }