diff options
| author | Nat Lasseter <user@4574.co.uk> | 2023-12-12 00:44:27 +0000 | 
|---|---|---|
| committer | Nat Lasseter <user@4574.co.uk> | 2023-12-12 00:44:27 +0000 | 
| commit | 0cecba62086661c79900f4a70b5549885ffd2c59 (patch) | |
| tree | 877f11924a8354a4cdf22052be237fcb2d686af2 /day11 | |
| parent | 3a48754813c6c79f68d6246799d8c9e511243a37 (diff) | |
Day 11 part 1
Diffstat (limited to 'day11')
| -rw-r--r-- | day11/day11.java | 91 | ||||
| -rw-r--r-- | day11/input | 140 | ||||
| -rw-r--r-- | day11/test | 10 | 
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 @@ +...#...... +.......#.. +#......... +.......... +......#... +.#........ +.........# +.......... +.......#.. +#...#..... | 
