Railway circuit: Difference between revisions

m
→‎{{header|Java}}: got right and left mixed up
(→‎{{header|Java}}: added support for straight tracks)
m (→‎{{header|Java}}: got right and left mixed up)
Line 168:
=={{header|Java}}==
{{works with|Java|8}}
<lang java>importpackage static java.util.Arrays.streamrailwaycircuit;
 
import static java.util.Arrays.stream;
import java.util.*;
import static java.util.stream.IntStream.range;
 
public class RailwayCircuit {
final static int LEFTRIGHT = 1, RIGHTLEFT = -1, STRAIGHT = 0;
 
static String normalize(int[] tracks) {
Line 217 ⟶ 219:
}
 
static boolean fullCircleLeftfullCircleRight(int[] tracks) {
 
// all tracks need to add up to a multiple of 360
Line 226 ⟶ 228:
int[] rTurns = new int[12];
for (int i = 0, idx = 0; i < tracks.length && idx >= 0; i++) {
if (tracks[i] == LEFTRIGHT)
rTurns[idx % 12]++;
idx += tracks[i];
Line 246 ⟶ 248:
continue;
 
if (!fullCircleLeftfullCircleRight(tracks))
continue;
 
Line 257 ⟶ 259:
assert (nCurved + nStraight - 12) % 4 == 0 : "input must be 12 + k * 4";
 
int[] trackTypes = new int[]{LEFTRIGHT, RIGHTLEFT};
 
if (nStraight != 0) {
if (nCurved == 12)
trackTypes = new int[]{LEFTRIGHT, STRAIGHT};
else
trackTypes = new int[]{LEFTRIGHT, RIGHTLEFT, STRAIGHT};
}
 
Anonymous user