summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNat Lasseter <user@4574.co.uk>2023-12-12 00:44:27 +0000
committerNat Lasseter <user@4574.co.uk>2023-12-12 00:44:27 +0000
commit0cecba62086661c79900f4a70b5549885ffd2c59 (patch)
tree877f11924a8354a4cdf22052be237fcb2d686af2
parent3a48754813c6c79f68d6246799d8c9e511243a37 (diff)
Day 11 part 1
-rw-r--r--day11/day11.java91
-rw-r--r--day11/input140
-rw-r--r--day11/test10
3 files changed, 241 insertions, 0 deletions
diff --git a/day11/day11.java b/day11/day11.java
new file mode 100644
index 0000000..6bf7c19
--- /dev/null
+++ b/day11/day11.java
@@ -0,0 +1,91 @@
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.util.ArrayList;
+
+public class day11 {
+ public static void main(String args[]) throws IOException {
+ RandomAccessFile input = new RandomAccessFile("input", "r");
+ System.out.println("Day 11 Part 1: " + part1(input));
+ input.seek(0);
+ System.out.println("Day 11 Part 2: " + part2(input));
+ input.close();
+ }
+
+ public static String part1(RandomAccessFile input) throws IOException {
+ ArrayList<ArrayList<Pixel>> image = new ArrayList<>();
+
+ String line;
+ while ((line = input.readLine()) != null) {
+ ArrayList<Pixel> linea = new ArrayList<>();
+ for (char ch: line.toCharArray()) {
+ if (ch == '.') {
+ linea.add(Pixel.Space);
+ } else if (ch == '#') {
+ linea.add(Pixel.Galaxy);
+ }
+ }
+ image.add(linea);
+ }
+
+ for (int i = image.size() - 1; i >= 0; i--) {
+ if (allSpace(image.get(i))) {
+ image.add(i+1, (ArrayList<Pixel>) image.get(i).clone());
+ }
+ }
+
+ for (int i = image.get(0).size() - 1; i >= 0; i--) {
+ ArrayList<Pixel> col = new ArrayList<>();
+
+ for (ArrayList<Pixel> row: image) {
+ col.add(row.get(i));
+ }
+
+ if (allSpace(col)) {
+ for (ArrayList<Pixel> row: image) {
+ row.add(i+1, row.get(i));
+ }
+ }
+ }
+
+ ArrayList<Integer[]> galaxies = new ArrayList<>();
+ for (int r = 0; r < image.size(); r++) {
+ for (int c = 0; c < image.get(0).size(); c++) {
+ if (image.get(r).get(c) == Pixel.Galaxy) {
+ galaxies.add(new Integer[] {r, c});
+ }
+ }
+ }
+
+ int sum = 0;
+
+ for (int i = 0; i < galaxies.size() - 1; i++) {
+ for (int j = i + 1; j < galaxies.size(); j++) {
+ sum += dist(galaxies.get(i), galaxies.get(j));
+ }
+ }
+
+ return Integer.toString(sum);
+ }
+
+ public static String part2(RandomAccessFile input) throws IOException {
+ return "WIP";
+ }
+
+ static enum Pixel {
+ Space,
+ Galaxy
+ }
+
+ private static boolean allSpace(ArrayList<Pixel> line) {
+ for (Pixel px: line) {
+ if (px == Pixel.Galaxy) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private static int dist(Integer[] i, Integer[] j) {
+ return Math.abs(i[0] - j[0]) + Math.abs(i[1] - j[1]);
+ }
+}
diff --git a/day11/input b/day11/input
new file mode 100644
index 0000000..51d65a3
--- /dev/null
+++ b/day11/input
@@ -0,0 +1,140 @@
+....................#........#...............................#............................................................#................#
+............#...................................#........................................#........#..................#...........#..........
+.#.......................#..................................................................................................................
+..........................................................#.................................................#...............................
+...................................#..........................................#.............................................................
+...........................................#......................#.........................................................................
+......................#.....................................................................................................................
+..................................................#.........#.........#.......................#............................#.......#......#.
+......#.........#............#.............................................#................................................................
+.#................................#.....................#.......................#........................#..................................
+..........................................#.................................................................................................
+.......................................................................................#......................#.............................
+.....................................................................#..............................................#.....#.................
+........#.................#.................................................................................................................
+....................................#.................#........................................................................#............
+.............#...........................#.......................#................#..................#.................................#....
+#...........................................................................#...............................................................
+......................#......#..............................................................................................................
+.................................................#........................................................#.................................
+.....................................#...................................................#........................#.........................
+........#................#................................#.................................................................................
+...................#................................................................#........#...............#..............#...............
+.......................................................................................................#..........................#.........
+..................................#.......#.........................................................................#...................#...
+.............#.................................#........................#...................................................................
+.....................#..................................#......................................#................#...........................
+...............................................................#.....................#..................................#...................
+#.........#...................#................................................#........................#...................................
+...................................#..................................#............................................................#........
+............................................#.........#...........................................#.........................................
+...#.............................................#........................................................................#.................
+........#..........#........#.................................................................................#.................#......#....
+..............................................................#..................#..........................................................
+.....................................................................#......................................................................
+.................................................................................................................#..........................
+...............#...............................#....................................................#.......................................
+...........................#................................................................#........................................#......
+...........#.....................#..................#............#...........#.......#.....................#................................
+............................................................................................................................................
+...............................................................................................................................#.........#..
+.......................................................................................................................#....................
+........#................#.....#.....#.................#.........................................#..........................................
+..................................................#...................................#.....................................................
+....#...........#.............................................................#..............#...............#...................#..........
+............................................#...............#.........................................................................#.....
+....................#.......................................................................................................................
+#......#..........................#..................#...............#.....#................................................................
+...........................................................................................#......................#........................#
+...........#................................................................................................................................
+...............................................................................#...................#........................................
+.......................#..............#......#..............#...........................#..................................#................
+............................................................................................................................................
+...................#...........#.................................................................................................#..........
+.......................................................................................................#.....#..............................
+........................................................#...........................#................................#......................
+...............#...................................................#..........#...........#.................................................
+...........................................#......................................................#.........................................
+.........#.......................................#..........................................................................................
+..........................#...............................................................................#........#......................#.
+...........................................................#...............#...........#......#..........................#..................
+.................#......................#.............................#........................................................#............
+.............................................................................................................#..............................
+...............................#...............................................#............................................................
+............................................#.........#.....................................................................#...............
+...#......................#........#.............................................................#..................#.....................#.
+................................................#..............#.......................#..............#.....................................
+............................................................................................................................................
+#...........................................................................................................................................
+......#..............#....................................#........#................................................................#.......
+..............#.............#.........#..........................................#..........................................................
+..................................................................................................#............................#..........#.
+...........................................#...................#.......................................#.....#..............................
+.................................#....................#................................#....................................................
+............................................................................................................................................
+........................................................................#...................................................#...............
+..#..............................................#...........................................#...................#.....#.............#......
+......................#.....................................................................................................................
+...............................#......#..........................................................#.......#.....................#............
+..........#.....#.................................................#.............#...........................................................
+............................................................................................................................................
+............................#.................................#.........#...................................................................
+.......................................................#................................#...........................#.......................
+...........................................................................................................................#.........#......
+...................#..............................#..............................#...............#.........#................................
+..........#..............#.....................................................................................................#............
+............................................................................................................................................
+................#.........................................................#...............................................................#.
+.................................#.....................................................................#....................................
+.....#................................................#.....................................#...............................................
+.............................#...............................#................#..............................#..............................
+......................................................................................#...............................#........#............
+............................................................................................................................................
+...........#..........#..............................................#..............................................................#.......
+................................................#..............#...................................................#........................
+......#...........#.........................................................#...............#...............................................
+...............................#.....................................................#...............#...................................#..
+..............#.......................#.....................#...............................................................................
+.........................#........................#...........................................................................#......#......
+.........................................................................................................#..................................
+............................................................................................................................................
+...#......................................................#.................................................................................
+........................................#.................................................#........#..............#.....#...................
+....................#................................#..........................#...........................................................
+#.................................#..................................................#.........#.......#.............................#......
+...........#.........................................................#.......................................................#..............
+......#......................#.................#.............................#..............................................................
+........................................................#.........................................#............#.................#..........
+..................#....................#.....................................................#..............................................
+..........................#......................................................#......#................................#..................
+................................#............#.........................................................#.................................#..
+............................................................................................................................................
+...#........................................................#...............................................................................
+..............#.....................................#................................................................................#......
+....................................................................................................................#...........#...........
+...................#.........................................................................#..............................................
+.............................#........#.....................................................................................................
+................................................................#................................................#..........................
+..#..........#...................................#..............................#........#................#.................................
+..................................#........................................................................................#................
+.....................#....................................#....................................#.....#......................................
+........#.......#..............................................................................................#...................#........
+...........................#..............#..........#............#......................................................................#..
+.#..........................................................................................................................................
+............#....................................#.....................................................................#....................
+.............................................................#.............#.........#.....#........#.......................................
+......#...........................#.......................................................................#.................................
+........................................................#..................................................................#................
+#..........................#.............#.........................#..........#...................................#.........................
+....................#....................................................................#.............#..........................#.....#...
+............................................................................................................................................
+.....................................................#..................#................................................#..................
+...#....................#......#............................#.....................#.................#.......................................
+............#...................................#...........................................................................................
+............................................................................................#...............................................
+...................#...................................................................#..................#.................#.........#.....
+#.................................#........#..........#..........................................#..........................................
+.....#......................................................................................................................................
+.......................#................................................#........................................#..........................
+.................................................................#...........#............#..........#...................................#..
+..............#......................#.......#.........................................................................#....................
diff --git a/day11/test b/day11/test
new file mode 100644
index 0000000..986aad4
--- /dev/null
+++ b/day11/test
@@ -0,0 +1,10 @@
+...#......
+.......#..
+#.........
+..........
+......#...
+.#........
+.........#
+..........
+.......#..
+#...#.....