# gapearz/adventofcode architecture

> Architecture diagram of the GitHub repository gapearz/adventofcode, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gapearz/adventofcode
- Repository: https://github.com/gapearz/adventofcode

## Overview

This repository is a collection of standalone Advent of Code puzzle programs for 2023–2025, not one continuous application. The user-facing workflow is to run an individual day’s entry point, which reads that day’s input and prints a puzzle result; puzzle logic is otherwise independent. The graph preserves the indexed day modules and shared readers. Relationships between solvers and readers are shown only where the source index or excerpts establish them; unindexed puzzle implementations are not assumed to use a reader.

Main entry points: [`AdventOfCode2023/src/Tools/FileReaderAdvent.java`](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2023/src/Tools/FileReaderAdvent.java) (File Reader), [`AdventOfCode2023/src/CubeConundrum/Main.java`](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2023/src/CubeConundrum/Main.java) (Cube Conundrum), [`AdventOfCode2023/src/GearRatios/Main.java`](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2023/src/GearRatios/Main.java) (Gear Ratios), [`AdventOfCode2023/src/IfYouGiveASeedAFertilizer/Main.java`](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2023/src/IfYouGiveASeedAFertilizer/Main.java) (Seed Mapping)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_y23["2023 puzzles"]
  node_a23_cube["Cube Conundrum<br/>[Main.java]"]
  node_a23_gear["Gear Ratios<br/>[Main.java]"]
  node_a23_seed["Seed Mapping<br/>[Main.java]"]
  node_a23_cards["Scratch Cards<br/>[Main.java]"]
  node_a23_trebuchet["Trebuchet<br/>[Main.java]"]
end

subgraph group_y24["2024 puzzles"]
  node_a24_01["Historian Hysteria<br/>[Main.java]"]
  node_a24_02["Red-Nosed Reports<br/>[Main.java]"]
  node_a24_03["Mull It Over<br/>[Main.java]"]
  node_a24_04["Ceres Search<br/>[Main.java]"]
  node_a24_05["Print Queue<br/>[Main.java]"]
  node_a24_06["Guard Gallivant<br/>[Main.java]"]
  node_a24_07["Bridge Repair<br/>[Main.java]"]
  node_a24_08["Resonant Collinearity<br/>[Main.java]"]
  node_a24_09["Disk Fragmenter<br/>[Main.java]"]
  node_a24_10["Hoof It<br/>[Main.java]"]
  node_a24_11["Plutonian Pebbles<br/>[Main.java]"]
end

subgraph group_y25["2025 puzzles"]
  node_a25_01["Secret Entrance<br/>[Main.kt]"]
  node_a25_02["Gift Shop<br/>[Main.kt]"]
  node_a25_03["Lobby<br/>[Main.kt]"]
  node_a25_04["Printing Department<br/>[Main.kt]"]
  node_a25_05["Cafeteria<br/>[Main.kt]"]
  node_a25_06["Trash Compactor<br/>[Main.kt]"]
  node_a25_07["Laboratories<br/>[Main.kt]"]
  node_a25_08["Playground<br/>[Main.kt]"]
  node_a25_09["Movie Theater<br/>[Main.kt]"]
  node_a25_10["Factory<br/>[Main.kt]"]
  node_a25_11["Reactor<br/>[Main.kt]"]
  node_a25_12["Christmas Tree Farm<br/>[Main.kt]"]
end

subgraph group_io["Input readers"]
  node_reader23["File Reader"]
  node_reader24["File Reader"]
  node_reader25["File Reader"]
end

node_a23_cube -->|"reads input"| node_reader23
node_a23_gear -->|"reads input"| node_reader23
node_a23_seed -->|"reads input"| node_reader23
node_a23_cards -->|"reads input"| node_reader23
node_a23_trebuchet -->|"reads input"| node_reader23
node_a24_01 -->|"uses reader"| node_reader23
node_a24_02 -->|"uses reader"| node_reader23
node_a24_03 -->|"uses reader"| node_reader23
node_a24_04 -->|"uses reader"| node_reader23
node_a24_05 -->|"uses reader"| node_reader23
node_a24_06 -->|"uses reader"| node_reader23
node_a24_07 -->|"uses reader"| node_reader23
node_a24_09 -->|"uses reader"| node_reader23
node_a24_10 -->|"uses reader"| node_reader23
node_a24_11 -->|"uses reader"| node_reader23
node_a25_05 -->|"uses reader"| node_reader23
node_a25_06 -->|"reads input"| node_reader23
node_a25_11 -->|"uses reader"| node_reader23
node_a25_12 -->|"uses reader"| node_reader23

click node_a23_cube "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2023/src/CubeConundrum/Main.java"
click node_a23_gear "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2023/src/GearRatios/Main.java"
click node_a23_seed "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2023/src/IfYouGiveASeedAFertilizer/Main.java"
click node_a23_cards "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2023/src/ScratchCards/Main.java"
click node_a23_trebuchet "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2023/src/Trebuchet/Main.java"
click node_a24_01 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day01_HistorianHysteria/Main.java"
click node_a24_02 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day02_RedNosedReports/Main.java"
click node_a24_03 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day03_MullItOver/Main.java"
click node_a24_04 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day04_CaresSearch/Main.java"
click node_a24_05 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day05_PrintQueue/Main.java"
click node_a24_06 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day06_GuardGallivant/Main.java"
click node_a24_07 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day07_BridgeRepair/Main.java"
click node_a24_08 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day08_ResonantCollinearity/Main.java"
click node_a24_09 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day09_DiskFragment/Main.java"
click node_a24_10 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day10_HoofIt/Main.java"
click node_a24_11 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day11_PlutonianPebbles/Main.java"
click node_a25_01 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day01_SecretEntrance/Main.kt"
click node_a25_02 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day02_GiftShop/Main.kt"
click node_a25_03 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day03_Lobby/Main.kt"
click node_a25_04 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day04_PrintingDepartment/Main.kt"
click node_a25_05 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day05_Cafeteria/Main.kt"
click node_a25_06 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day06_TrashCompactor/Main.kt"
click node_a25_07 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day07_Laboratories/Main.kt"
click node_a25_08 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day08_Playground/Main.kt"
click node_a25_09 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day09_MovieTheater/Main.kt"
click node_a25_10 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day10_Factory/Main.kt"
click node_a25_11 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day11_Reactor/Main.kt"
click node_a25_12 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day12_ChristmasTreeFarm/Main.kt"
click node_reader23 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2023/src/Tools/FileReaderAdvent.java"
click node_reader24 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Tools/FileReaderAdvent.java"
click node_reader25 "https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Tools/FileReaderAdvent.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_a23_cube,node_a23_gear,node_a23_seed,node_a23_cards,node_a23_trebuchet toneBlue
class node_a24_01,node_a24_02,node_a24_03,node_a24_04,node_a24_05,node_a24_06,node_a24_07,node_a24_08,node_a24_09,node_a24_10,node_a24_11 toneAmber
class node_a25_01,node_a25_02,node_a25_03,node_a25_04,node_a25_05,node_a25_06,node_a25_07,node_a25_08,node_a25_09,node_a25_10,node_a25_11,node_a25_12 toneMint
class node_reader23,node_reader24,node_reader25 toneRose
```

## Components

### 2023 puzzles

- [Cube Conundrum](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2023/src/CubeConundrum/Main.java): `AdventOfCode2023/src/CubeConundrum/Main.java`
- [Gear Ratios](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2023/src/GearRatios/Main.java): `AdventOfCode2023/src/GearRatios/Main.java`
- [Seed Mapping](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2023/src/IfYouGiveASeedAFertilizer/Main.java): `AdventOfCode2023/src/IfYouGiveASeedAFertilizer/Main.java`
- [Scratch Cards](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2023/src/ScratchCards/Main.java): `AdventOfCode2023/src/ScratchCards/Main.java`
- [Trebuchet](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2023/src/Trebuchet/Main.java): `AdventOfCode2023/src/Trebuchet/Main.java`

### 2024 puzzles

- [Historian Hysteria](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day01_HistorianHysteria/Main.java): `AdventOfCode2024/src/Day01_HistorianHysteria/Main.java`
- [Red-Nosed Reports](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day02_RedNosedReports/Main.java): `AdventOfCode2024/src/Day02_RedNosedReports/Main.java`
- [Mull It Over](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day03_MullItOver/Main.java): `AdventOfCode2024/src/Day03_MullItOver/Main.java`
- [Ceres Search](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day04_CaresSearch/Main.java): `AdventOfCode2024/src/Day04_CaresSearch/Main.java`
- [Print Queue](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day05_PrintQueue/Main.java): `AdventOfCode2024/src/Day05_PrintQueue/Main.java`
- [Guard Gallivant](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day06_GuardGallivant/Main.java): `AdventOfCode2024/src/Day06_GuardGallivant/Main.java`
- [Bridge Repair](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day07_BridgeRepair/Main.java): `AdventOfCode2024/src/Day07_BridgeRepair/Main.java`
- [Resonant Collinearity](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day08_ResonantCollinearity/Main.java): `AdventOfCode2024/src/Day08_ResonantCollinearity/Main.java`
- [Disk Fragmenter](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day09_DiskFragment/Main.java): `AdventOfCode2024/src/Day09_DiskFragment/Main.java`
- [Hoof It](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day10_HoofIt/Main.java): `AdventOfCode2024/src/Day10_HoofIt/Main.java`
- [Plutonian Pebbles](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Day11_PlutonianPebbles/Main.java): `AdventOfCode2024/src/Day11_PlutonianPebbles/Main.java`

### 2025 puzzles

- [Secret Entrance](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day01_SecretEntrance/Main.kt): `AdventOfCode2025/src/Day01_SecretEntrance/Main.kt`
- [Gift Shop](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day02_GiftShop/Main.kt): `AdventOfCode2025/src/Day02_GiftShop/Main.kt`
- [Lobby](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day03_Lobby/Main.kt): `AdventOfCode2025/src/Day03_Lobby/Main.kt`
- [Printing Department](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day04_PrintingDepartment/Main.kt): `AdventOfCode2025/src/Day04_PrintingDepartment/Main.kt`
- [Cafeteria](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day05_Cafeteria/Main.kt): `AdventOfCode2025/src/Day05_Cafeteria/Main.kt`
- [Trash Compactor](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day06_TrashCompactor/Main.kt): `AdventOfCode2025/src/Day06_TrashCompactor/Main.kt`
- [Laboratories](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day07_Laboratories/Main.kt): `AdventOfCode2025/src/Day07_Laboratories/Main.kt`
- [Playground](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day08_Playground/Main.kt): `AdventOfCode2025/src/Day08_Playground/Main.kt`
- [Movie Theater](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day09_MovieTheater/Main.kt): `AdventOfCode2025/src/Day09_MovieTheater/Main.kt`
- [Factory](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day10_Factory/Main.kt): `AdventOfCode2025/src/Day10_Factory/Main.kt`
- [Reactor](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day11_Reactor/Main.kt): `AdventOfCode2025/src/Day11_Reactor/Main.kt`
- [Christmas Tree Farm](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Day12_ChristmasTreeFarm/Main.kt): `AdventOfCode2025/src/Day12_ChristmasTreeFarm/Main.kt`

### Input readers

- [File Reader](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2023/src/Tools/FileReaderAdvent.java): `AdventOfCode2023/src/Tools/FileReaderAdvent.java`
- [File Reader](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2024/src/Tools/FileReaderAdvent.java): `AdventOfCode2024/src/Tools/FileReaderAdvent.java`
- [File Reader](https://github.com/gapearz/adventofcode/blob/master/AdventOfCode2025/src/Tools/FileReaderAdvent.kt): `AdventOfCode2025/src/Tools/FileReaderAdvent.kt`

## Connections

- Cube Conundrum → File Reader: reads input (evidence: `AdventOfCode2023/src/CubeConundrum/Main.java`)
- Gear Ratios → File Reader: reads input (evidence: `AdventOfCode2023/src/GearRatios/Main.java`)
- Seed Mapping → File Reader: reads input (evidence: `AdventOfCode2023/src/IfYouGiveASeedAFertilizer/Main.java`)
- Scratch Cards → File Reader: reads input (evidence: `AdventOfCode2023/src/ScratchCards/Main.java`)
- Trebuchet → File Reader: reads input (evidence: `AdventOfCode2023/src/Trebuchet/Main.java`)
- Historian Hysteria → File Reader: uses reader (evidence: `AdventOfCode2024/src/Day01_HistorianHysteria/Main.java`)
- Red-Nosed Reports → File Reader: uses reader (evidence: `AdventOfCode2024/src/Day02_RedNosedReports/Main.java`)
- Mull It Over → File Reader: uses reader (evidence: `AdventOfCode2024/src/Day03_MullItOver/Main.java`)
- Ceres Search → File Reader: uses reader (evidence: `AdventOfCode2024/src/Day04_CaresSearch/Main.java`)
- Print Queue → File Reader: uses reader (evidence: `AdventOfCode2024/src/Day05_PrintQueue/Main.java`)
- Guard Gallivant → File Reader: uses reader (evidence: `AdventOfCode2024/src/Day06_GuardGallivant/Main.java`)
- Bridge Repair → File Reader: uses reader (evidence: `AdventOfCode2024/src/Day07_BridgeRepair/Main.java`)
- Disk Fragmenter → File Reader: uses reader (evidence: `AdventOfCode2024/src/Day09_DiskFragment/Main.java`)
- Hoof It → File Reader: uses reader (evidence: `AdventOfCode2024/src/Day10_HoofIt/Main.java`)
- Plutonian Pebbles → File Reader: uses reader (evidence: `AdventOfCode2024/src/Day11_PlutonianPebbles/Main.java`)
- Cafeteria → File Reader: uses reader (evidence: `AdventOfCode2025/src/Day05_Cafeteria/Main.kt`)
- Trash Compactor → File Reader: reads input (evidence: `AdventOfCode2025/src/Day06_TrashCompactor/Main.kt`)
- Reactor → File Reader: uses reader (evidence: `AdventOfCode2025/src/Day11_Reactor/Main.kt`)
- Christmas Tree Farm → File Reader: uses reader (evidence: `AdventOfCode2025/src/Day12_ChristmasTreeFarm/Main.kt`)
