1
0
Fork 0

extract Direction from MarsMap

This commit is contained in:
Xavier Fontanet 2024-06-20 20:58:34 +02:00
parent b1ecef985b
commit b0e6fc197f
5 changed files with 29 additions and 28 deletions

View File

@ -1,7 +1,6 @@
package cat.hack3.codingtests.marsrover;
import cat.hack3.codingtests.marsrover.MarsMap.Direction;
import java.util.logging.Logger;

View File

@ -0,0 +1,23 @@
package cat.hack3.codingtests.marsrover;
public enum Direction {
NORTH, SOUTH, EAST, WEST;
public Direction reversed() {
return switch (this) {
case NORTH -> SOUTH;
case SOUTH -> NORTH;
case EAST -> WEST;
case WEST -> EAST;
};
}
public Direction changeDirectionToLeft() {
return switch (this) {
case NORTH -> WEST;
case SOUTH -> EAST;
case EAST -> NORTH;
case WEST -> SOUTH;
};
}
}

View File

@ -1,18 +1,6 @@
package cat.hack3.codingtests.marsrover;
import static cat.hack3.codingtests.marsrover.MarsMap.Direction.*;
public class MarsMap {
public enum Direction {NORTH, SOUTH, EAST, WEST;
public Direction reversed() {
return switch (this) {
case NORTH -> SOUTH;
case SOUTH -> NORTH;
case EAST -> WEST;
case WEST -> EAST;
};
}
}
private final int width;
private final int height;
@ -21,12 +9,4 @@ public class MarsMap {
this.height = height;
}
public Direction changeDirectionToLeft(Direction currentDirection) {
return switch (currentDirection) {
case NORTH -> WEST;
case SOUTH -> EAST;
case EAST -> NORTH;
case WEST -> SOUTH;
};
}
}

View File

@ -3,9 +3,9 @@ package cat.hack3.codingtests.marsrover;
public class MarsRover {
private final MarsMap marsMap;
private final Coordinates currentCoordinates;
private MarsMap.Direction currentDirection;
private Direction currentDirection;
public MarsRover(MarsMap marsMap, Coordinates startingCoordinates, MarsMap.Direction startingDirection) {
public MarsRover(MarsMap marsMap, Coordinates startingCoordinates, Direction startingDirection) {
this.marsMap = marsMap;
currentCoordinates = startingCoordinates;
currentDirection = startingDirection;
@ -19,8 +19,8 @@ public class MarsRover {
return currentCoordinates.updatePositionTowards(currentDirection.reversed());
}
public MarsMap.Direction turnLeft() {
currentDirection = marsMap.changeDirectionToLeft(currentDirection);
public Direction turnLeft() {
currentDirection = currentDirection.changeDirectionToLeft();
return currentDirection;
}
@ -28,7 +28,7 @@ public class MarsRover {
return currentCoordinates.copy();
}
public MarsMap.Direction getCurrentDirection() {
public Direction getCurrentDirection() {
return currentDirection;
}
}

View File

@ -6,8 +6,7 @@ import org.testng.annotations.Test;
import java.util.function.IntConsumer;
import java.util.stream.IntStream;
import static cat.hack3.codingtests.marsrover.MarsMap.Direction;
import static cat.hack3.codingtests.marsrover.MarsMap.Direction.*;
import static cat.hack3.codingtests.marsrover.Direction.*;
import static org.testng.Assert.assertEquals;
public class MarsRoverTest {