diff --git a/src/main/java/assessment/algorithm/Grid.java b/src/main/java/assessment/algorithm/Grid.java index 236994c..e336b73 100644 --- a/src/main/java/assessment/algorithm/Grid.java +++ b/src/main/java/assessment/algorithm/Grid.java @@ -6,15 +6,18 @@ import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; +/** + * Represents a square grid. Integer values at position x,y + */ public record Grid(List> grid) { private static final double timeValueFactor = .2; - public static Grid fromFile(String resource) { + public static Grid fromFile(String resource) { try { BufferedReader reader = new BufferedReader(new InputStreamReader(Grid.class.getClassLoader().getResourceAsStream(resource))); String line; List> rows = new ArrayList<>(); - while ((line=reader.readLine())!=null){ + while ((line = reader.readLine()) != null) { String[] values = line.split(" "); List row = new ArrayList<>(values.length); for (int i = 0; i < values.length; i++) { @@ -28,19 +31,18 @@ public record Grid(List> grid) { } } - public int getInitialValue(int x, int y){ + public int getInitialValue(int x, int y) { return grid.get(y).get(x); } //assumes square - public int getWidth(){ + public int getWidth() { return grid.size(); } /** - * de waarde van een punt x,y wordt bepaald door de beginwaarde, tenzij we er al geweest zijn - * dan telt de tijd sinds we er geweest zijn = afstand in sindsdien afgelegd pad - * de waarde is rechtevenredig met de afstand + * The value of a point is the initialValue unless it has been visited (in a path) + * Immediately after visiting its value is 0 and in steady pace (timeValueFactor) increases with time. */ public double getCurrentValue(Path path, int x, int y) { int gridValue = getInitialValue(x, y); diff --git a/src/main/java/assessment/algorithm/OptimalPathFinder.java b/src/main/java/assessment/algorithm/OptimalPathFinder.java index c9eb463..56b846e 100644 --- a/src/main/java/assessment/algorithm/OptimalPathFinder.java +++ b/src/main/java/assessment/algorithm/OptimalPathFinder.java @@ -15,6 +15,7 @@ public class OptimalPathFinder { // paths to be considered, sorted by value private final PriorityQueue paths = new PriorityQueue<>(); + /// can likely be replaced by Set (path hashcode) --> takes up less memory private final Set takenPaths = new HashSet<>(); /** diff --git a/src/main/java/assessment/algorithm/Path.java b/src/main/java/assessment/algorithm/Path.java index dedbeae..18b53a8 100644 --- a/src/main/java/assessment/algorithm/Path.java +++ b/src/main/java/assessment/algorithm/Path.java @@ -4,13 +4,16 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.Objects; +/** + * Represents a path in a grid, consisting of a sequence of points. + */ public class Path implements Comparable { - // beide bevatten de al afgelegde punten + //both these collections contain the current points in the path - // points is bedoeld om door de punten te lopen + // points is meant to traverse the points public final ArrayList points = new ArrayList<>(); - // trodden is bedoeld om zo snel mogelijk vast te stellen of we al op het punt geweest zijn + // the purpose of trodden is to quickly determine if a point is part of this path private final HashSet trodden = new HashSet<>(); private Path() {