@@ -6,6 +6,8 @@ object Day11 {
6
6
7
7
val INPUT = 7857
8
8
9
+ val MAX_POWER = 4
10
+
9
11
case class Square (x : Int , y : Int , squareSize : Int )
10
12
11
13
case class SquarePower (x : Int = 0 , y : Int = 0 , size : Int = 0 , power : Int = 0 )
@@ -42,14 +44,14 @@ object Day11 {
42
44
*/
43
45
@ tailrec
44
46
final def increasingSquares (cur : Square , last : SquarePower , largest : SquarePower ): SquarePower = {
45
- if (cur.x + cur.squareSize - 1 <= 300 && cur.y + cur.squareSize - 1 <= 300 ) {
47
+ if (cur.x + cur.squareSize - 1 <= width && cur.y + cur.squareSize - 1 <= height ) {
46
48
val sumOfEdges = cur.x.to(cur.x + cur.squareSize - 1 ).map(x_ => grid(x_, cur.y + cur.squareSize - 1 )).sum +
47
49
cur.y.to(cur.y + cur.squareSize - 1 ).map(y_ => grid(cur.x + cur.squareSize - 1 , y_)).sum -
48
50
grid(cur.x + cur.squareSize - 1 , cur.y + cur.squareSize - 1 )
49
51
val newPower = last.power + sumOfEdges
50
52
val newLast = SquarePower (cur.x, cur.y, cur.squareSize, newPower)
51
53
val newLargest = if (newPower > largest.power) newLast else largest
52
- val potentialPowerOfNextSquare = newPower + (4 * (2 * (cur.squareSize + 1 ) - 1 ))
54
+ val potentialPowerOfNextSquare = newPower + (MAX_POWER * (2 * (cur.squareSize + 1 ) - 1 ))
53
55
if (potentialPowerOfNextSquare >= newLargest.power) {
54
56
increasingSquares(
55
57
cur = cur.copy(squareSize = cur.squareSize + 1 ),
0 commit comments