-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDominos.java
More file actions
74 lines (67 loc) · 2.99 KB
/
Dominos.java
File metadata and controls
74 lines (67 loc) · 2.99 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
import java.util.List;
import java.util.LinkedList;
import java.util.Iterator;
public class Dominos {
public void complete(char[] dominos) {
List<Integer> pending = new LinkedList<>();
for (int i = 0; i < dominos.length; i++)
if (dominos[i] == '.')
pending.add(i);
int prevSize = 0;
while (!pending.isEmpty() && prevSize != pending.size()) {
print(dominos);
prevSize = pending.size();
for (Iterator<Integer> iterator = pending.iterator(); iterator.hasNext();) {
int index = iterator.next();
if (index > 0 && index < dominos.length - 1) {
if (dominos[index - 1] == 'R' && dominos[index] == '.' && dominos[index + 1] == '.' && index < dominos.length - 2 && dominos[index + 2] == 'L') {
dominos[index] = 'R';
dominos[index + 1] = 'L';
iterator.remove();
if (iterator.hasNext())
iterator.next();
iterator.remove();
} else if (dominos[index - 1] == 'R' && (dominos[index + 1] == '.' || dominos[index + 1] == 'R')) {
dominos[index] = 'R';
iterator.remove();
if (iterator.hasNext() && index < dominos.length - 2 && dominos[index + 2] != 'L')
iterator.next();
} else if ((dominos[index - 1] == '.' || dominos[index - 1] == 'L') && dominos[index + 1] == 'L') {
dominos[index] = 'L';
iterator.remove();
} else if (dominos[index - 1] == 'R' && dominos[index + 1] == 'L' || dominos[index - 1] == 'L' && dominos[index + 1] == 'R') {
iterator.remove();
}
} else if (index == 0) {
if (dominos[index + 1] == 'L') {
dominos[index] = 'L';
iterator.remove();
}
} else if (index == dominos.length - 1) {
if (dominos[index - 1] == 'R') {
dominos[index] = 'R';
iterator.remove();
if (iterator.hasNext())
iterator.next();
}
}
}
}
}
public void print(char[] dominos) {
for (int i = 0; i < dominos.length; i++) {
System.out.print(dominos[i] + " ");
}
System.out.println();
}
public static void main(String[] args) {
char[] dominos = {'.', 'L', 'R', '.', '.', '.', '.', 'L'};
//char[] dominos = {'.', '.', 'R', '.', '.', '.', 'L', '.', 'L'};
//char[] dominos = {'R', '.', '.', '.', '.', '.', '.', '.'};
Dominos d = new Dominos();
d.print(dominos);
System.out.println();
d.complete(dominos);
d.print(dominos);
}
}