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