Newer
Older
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
package model.automata;
import javafx.scene.paint.Color;
import model.State;
import java.util.List;
public enum WireWorldState implements State<WireWorldState> {
DEAD, WIRE, BLUE, RED;
@Override
public Color getColor() {
return switch (this) {
case DEAD -> Color.BLACK;
case WIRE -> Color.GOLD;
case BLUE -> Color.BLUE;
case RED -> Color.RED;
};
}
@Override
public WireWorldState cycle() {
return switch (this) {
case DEAD -> WIRE;
case WIRE -> BLUE;
case BLUE -> RED;
case RED -> DEAD;
};
}
@Override
public WireWorldState update(List<WireWorldState> neighbours) {
return switch (this) {
case DEAD -> DEAD;
case WIRE -> {
int countBlues = State.count(BLUE, neighbours);
yield (countBlues == 1 || countBlues == 2)? BLUE: WIRE;
}
case BLUE -> RED;
case RED -> WIRE;
};
}
}