diff --git a/mars-station/src/main/java/cat/hack3/codingtests/marsrover/gps/MapIncrementalPositionResolver.java b/mars-station/src/main/java/cat/hack3/codingtests/marsrover/gps/MapIncrementalPositionResolver.java index 31ce2ab..cc71dcb 100644 --- a/mars-station/src/main/java/cat/hack3/codingtests/marsrover/gps/MapIncrementalPositionResolver.java +++ b/mars-station/src/main/java/cat/hack3/codingtests/marsrover/gps/MapIncrementalPositionResolver.java @@ -17,12 +17,14 @@ public class MapIncrementalPositionResolver { this.maximumXPosition = maximumXPosition; } - long getIncremented(Longitude longitude) { - return getIncremented(longitude.pointer(), maximumXPosition); + Latitude getIncremented(Latitude latitude) { + long incrementedPosition = getIncremented(latitude.pointer(), maximumYPosition); + return Latitude.of(incrementedPosition); } - long getIncremented(Latitude latitude) { - return getIncremented(latitude.pointer(), maximumYPosition); + Longitude getIncremented(Longitude longitude) { + long incrementedPosition = getIncremented(longitude.pointer(), maximumXPosition); + return Longitude.of(incrementedPosition); } private long getIncremented(long currentPosition, long threshold) { @@ -31,12 +33,14 @@ public class MapIncrementalPositionResolver { : ++currentPosition; } - long getDecremented(Latitude latitude) { - return getDecremented(latitude.pointer(), maximumYPosition); + Latitude getDecremented(Latitude latitude) { + long decrementedPosition = getDecremented(latitude.pointer(), maximumYPosition); + return Latitude.of(decrementedPosition); } - long getDecremented(Longitude longitude) { - return getDecremented(longitude.pointer(), maximumYPosition); + Longitude getDecremented(Longitude longitude) { + long decrementedPosition = getDecremented(longitude.pointer(), maximumXPosition); + return Longitude.of(decrementedPosition); } private long getDecremented(long currentPosition, long threshold) { diff --git a/mars-station/src/main/java/cat/hack3/codingtests/marsrover/gps/MarsMap.java b/mars-station/src/main/java/cat/hack3/codingtests/marsrover/gps/MarsMap.java index 2b963a4..0a5f050 100644 --- a/mars-station/src/main/java/cat/hack3/codingtests/marsrover/gps/MarsMap.java +++ b/mars-station/src/main/java/cat/hack3/codingtests/marsrover/gps/MarsMap.java @@ -1,8 +1,6 @@ package cat.hack3.codingtests.marsrover.gps; import cat.hack3.codingtests.marsrover.api.cartography.Coordinates; -import cat.hack3.codingtests.marsrover.api.cartography.Coordinates.Latitude; -import cat.hack3.codingtests.marsrover.api.cartography.Coordinates.Longitude; import cat.hack3.codingtests.marsrover.api.cartography.Direction; import cat.hack3.codingtests.marsrover.api.cartography.PlanetMap; @@ -34,45 +32,44 @@ public class MarsMap implements PlanetMap { } } - @SafeVarargs - private MarsMap(int height, int width, Coordinates startingCoordinates, List... obstaclesLocalizations) { + private MarsMap(int height, int width, Coordinates startingCoordinates, List obstaclesLocalizations) { currentPosition = startingCoordinates; - this.obstaclesLocalizations = obstaclesLocalizations.length > 0 ? obstaclesLocalizations[0] : List.of(); + this.obstaclesLocalizations = obstaclesLocalizations; positionResolver = new MapIncrementalPositionResolver(FIRST_POSITION_IN_MAP, INCREMENT_UNIT, height, width); } @Override public Coordinates getNextPositionTowards(Direction direction) { return switch (direction) { - case NORTH -> getDecrementLatitude(); - case SOUTH -> getIncrementLatitude(); - case WEST -> getDecrementLongitude(); - case EAST -> getIncrementLongitude(); + case NORTH -> getDecrementedLatitude(); + case SOUTH -> getIncrementedLatitude(); + case WEST -> getDecrementedLongitude(); + case EAST -> getIncrementedLongitude(); }; } - private Coordinates getIncrementLatitude() { + private Coordinates getIncrementedLatitude() { var latitude = currentPosition.latitude(); - long newLatitude = positionResolver.getIncremented(latitude); - return currentPosition.withUpdated(Latitude.of(newLatitude)); + var newLatitude = positionResolver.getIncremented(latitude); + return currentPosition.withUpdated(newLatitude); } - private Coordinates getDecrementLatitude() { + private Coordinates getDecrementedLatitude() { var latitude = currentPosition.latitude(); - long newLatitude = positionResolver.getDecremented(latitude); - return currentPosition.withUpdated(Latitude.of(newLatitude)); + var newLatitude = positionResolver.getDecremented(latitude); + return currentPosition.withUpdated(newLatitude); } - private Coordinates getIncrementLongitude() { + private Coordinates getIncrementedLongitude() { var longitude = currentPosition.longitude(); - long newLongitude = positionResolver.getIncremented(longitude); - return currentPosition.withUpdated(Longitude.of(newLongitude)); + var newLongitude = positionResolver.getIncremented(longitude); + return currentPosition.withUpdated(newLongitude); } - private Coordinates getDecrementLongitude() { + private Coordinates getDecrementedLongitude() { var longitude = currentPosition.longitude(); - long newLongitude = positionResolver.getDecremented(longitude); - return currentPosition.withUpdated(Longitude.of(newLongitude)); + var newLongitude = positionResolver.getDecremented(longitude); + return currentPosition.withUpdated(newLongitude); } @Override