Skip to content

Commit 748488c

Browse files
committed
Changed raycast to return Matrix.Entry<T>
1 parent 87cacf1 commit 748488c

File tree

1 file changed

+8
-7
lines changed
  • src/main/java/org/togetherjava/aoc/core/math/matrix

1 file changed

+8
-7
lines changed

src/main/java/org/togetherjava/aoc/core/math/matrix/IMatrix.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -96,33 +96,34 @@ default void setAll(T value) {
9696
}
9797
}
9898

99-
default List<T> rayCast(MatrixPosition position, Direction direction) {
99+
default List<Matrix.Entry<T>> rayCast(MatrixPosition position, Direction direction) {
100100
return rayCast(position, direction, Integer.MAX_VALUE);
101101
}
102102

103103
/**
104104
* Inclusive ray cast from the given position
105105
*/
106-
default List<T> rayCast(MatrixPosition position, Direction direction, int limit) {
106+
default List<Matrix.Entry<T>> rayCast(MatrixPosition position, Direction direction, int limit) {
107107
MatrixPosition current = position;
108-
List<T> elements = new ArrayList<>(limit);
108+
List<Matrix.Entry<T>> elements = new ArrayList<>(limit);
109109
while (inBounds(current) && elements.size() < limit) {
110-
elements.add(this.get(current));
110+
var entry = Matrix.Entry.of(current, this.get(current));
111+
elements.add(entry);
111112
current = current.move(direction);
112113
}
113114
return elements;
114115
}
115116

116-
default List<T> rayCastWhile(MatrixPosition position, Direction direction, Predicate<? super Matrix.Entry<T>> predicate) {
117+
default List<Matrix.Entry<T>> rayCastWhile(MatrixPosition position, Direction direction, Predicate<? super Matrix.Entry<T>> predicate) {
117118
MatrixPosition current = position;
118-
List<T> elements = new ArrayList<>();
119+
List<Matrix.Entry<T>> elements = new ArrayList<>();
119120
while (inBounds(current)) {
120121
T currentElement = this.get(current);
121122
var entry = Matrix.Entry.of(current, currentElement);
122123
if (!predicate.test(entry)) {
123124
break;
124125
}
125-
elements.add(currentElement);
126+
elements.add(entry);
126127
current = current.move(direction);
127128
}
128129
return elements;

0 commit comments

Comments
 (0)