1
0
Fork 0

some refinements and cleaning code

This commit is contained in:
Xavier Fontanet 2024-06-21 11:56:48 +02:00
parent 607c908e9d
commit adbca95241
3 changed files with 43 additions and 25 deletions

View File

@ -0,0 +1,24 @@
package cat.hack3.codingtests.marsrover;
public class MapIncrementalPositionResolver {
private final int firstPositionInMap;
private final int incrementUnit;
public MapIncrementalPositionResolver(int firstPositionInMap, int incrementUnit) {
this.firstPositionInMap = firstPositionInMap;
this.incrementUnit = incrementUnit;
}
int getIncrementedPosition(int currentPosition, int threshold) {
return currentPosition + incrementUnit > threshold
? firstPositionInMap
: ++currentPosition;
}
int getDecrementedPosition(int currentPosition, int threshold) {
return currentPosition - incrementUnit < firstPositionInMap
? threshold
: --currentPosition;
}
}

View File

@ -13,15 +13,21 @@ import java.util.logging.Logger;
*/
public class MarsMap {
Logger logger = Logger.getLogger(this.getClass().getName());
private static final int FIRST_POSITION_IN_MAP = 1;
private static final int INCREMENT_UNIT = 1;
private final int width;
private final int height;
private final int width;
private Coordinates currentPosition;
public MarsMap(int width, int height, Coordinates startingCoordinates) {
this.width = width;
private final MapIncrementalPositionResolver positionResolver;
public MarsMap(int height, int width, Coordinates startingCoordinates) {
this.height = height;
this.width = width;
currentPosition = startingCoordinates;
positionResolver = new MapIncrementalPositionResolver(FIRST_POSITION_IN_MAP, INCREMENT_UNIT);
}
public Coordinates updatePositionTowards(Direction direction) {
@ -39,40 +45,28 @@ public class MarsMap {
private void incrementLatitude() {
int latitude = currentPosition.latitude();
int newLatitude = getIncrementedPosition(latitude, height);
int newLatitude = positionResolver.getIncrementedPosition(latitude, height);
setNewLatitude(newLatitude);
}
private void decrementLatitude() {
int latitude = currentPosition.latitude();
int newLatitude = positionResolver.getDecrementedPosition(latitude, height);
setNewLatitude(newLatitude);
}
private void incrementLongitude() {
int longitude = currentPosition.longitude();
int newLongitude = getIncrementedPosition(longitude, width);
int newLongitude = positionResolver.getIncrementedPosition(longitude, width);
setNewLongitude(newLongitude);
}
private int getIncrementedPosition(int currentPosition, int threshold) {
return currentPosition + 1 > threshold
? 1
: ++currentPosition;
}
private void decrementLatitude() {
int latitude = currentPosition.latitude();
int newLatitude = decrementPosition(latitude, height);
setNewLatitude(newLatitude);
}
private void decrementLongitude() {
int longitude = currentPosition.longitude();
int newLongitude = decrementPosition(longitude, width);
int newLongitude = positionResolver.getDecrementedPosition(longitude, width);
setNewLongitude(newLongitude);
}
private int decrementPosition(int currentPosition, int threshold) {
return currentPosition - 1 < 1
? threshold
: --currentPosition;
}
private void setNewLatitude(int newLatitude) {
currentPosition = currentPosition.ofUpdatedLatitude(newLatitude);
}

View File

@ -19,7 +19,7 @@ public class MarsRoverTest {
int latitudeStartingPoint = 2;
int longitudeStartingPoint = 3;
var startingCoordinates = Coordinates.of(latitudeStartingPoint, longitudeStartingPoint);
var marsMap = new MarsMap(mapWidth, mapHeight, startingCoordinates);
var marsMap = new MarsMap(mapHeight, mapWidth, startingCoordinates);
rover = new MarsRover(marsMap, SOUTH);
}