-
Notifications
You must be signed in to change notification settings - Fork 131
Expand file tree
/
Copy pathScrabble.java
More file actions
112 lines (90 loc) · 3.1 KB
/
Scrabble.java
File metadata and controls
112 lines (90 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package com.booleanuk;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
public class Scrabble {
private HashMap<Character, Integer> scoreMap = new HashMap<>();
private String word;
public Scrabble(String word) {
this.word = word;
this.scoreMap.put('a', 1);
this.scoreMap.put('e', 1);
this.scoreMap.put('i', 1);
this.scoreMap.put('o', 1);
this.scoreMap.put('u', 1);
this.scoreMap.put('l', 1);
this.scoreMap.put('n', 1);
this.scoreMap.put('r', 1);
this.scoreMap.put('s', 1);
this.scoreMap.put('t', 1);
this.scoreMap.put('d', 2);
this.scoreMap.put('g', 2);
this.scoreMap.put('b', 3);
this.scoreMap.put('c', 3);
this.scoreMap.put('m', 3);
this.scoreMap.put('p', 3);
this.scoreMap.put('f', 4);
this.scoreMap.put('h', 4);
this.scoreMap.put('v', 4);
this.scoreMap.put('w', 4);
this.scoreMap.put('y', 4);
this.scoreMap.put('k', 5);
this.scoreMap.put('j', 8);
this.scoreMap.put('x', 8);
this.scoreMap.put('q', 10);
this.scoreMap.put('z', 10);
}
public int score() {
String scoreWord = this.word.toLowerCase();
List<Character> charArray = new ArrayList();
for(char c : scoreWord.toCharArray()){
charArray.add(c);
}
int acc = 0;
int wordMulti = 1;
if(charArray.isEmpty()){
return 0;
}
while(charArray.getFirst() == '[' || charArray.getFirst() == '{'){
if(charArray.getFirst() == '{' && charArray.getLast() == '}' && charArray.get(2) != '}'){
wordMulti = wordMulti*2;
charArray.removeFirst();
charArray.removeLast();
}
else if(charArray.getFirst() == '[' && charArray.getLast() == ']' && charArray.get(2) != ']'){
wordMulti = wordMulti*3;
charArray.removeFirst();
charArray.removeLast();
}
else {
if( (charArray.getFirst() == '[' && charArray.get(2) != ']') || (charArray.getFirst() == '}' && charArray.get(2) != '}') ){
return 0;
}
else{
break;
}
}
}
for(int i = 0; i < charArray.size(); i++){
char c = charArray.get(i);
Object val = this.scoreMap.get(c);
if(val != null) {
acc += ((Integer) val) * wordMulti;
} else {
if(c == '{' && charArray.get(i+2) == '}'){
acc += (this.scoreMap.get(charArray.get(i+1))) * wordMulti * 2;
i += 2;
}
else if(c == '[' && charArray.get(i+2) == ']') {
acc += (this.scoreMap.get(charArray.get(i+1))) * wordMulti * 3;
i += 2;
}
else {
return 0;
}
}
}
return acc;
}
}