File tree Expand file tree Collapse file tree 2 files changed +105
-1
lines changed
Expand file tree Collapse file tree 2 files changed +105
-1
lines changed Original file line number Diff line number Diff line change 1010| ---| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
1111| python3 | [ ✓] ( src/main/python/AoC2025_01.py ) | [ ✓] ( src/main/python/AoC2025_02.py ) | [ ✓] ( src/main/python/AoC2025_03.py ) | [ ✓] ( src/main/python/AoC2025_04.py ) | [ ✓] ( src/main/python/AoC2025_05.py ) | [ ✓] ( src/main/python/AoC2025_06.py ) | [ ✓] ( src/main/python/AoC2025_07.py ) | [ ✓] ( src/main/python/AoC2025_08.py ) | [ ✓] ( src/main/python/AoC2025_09.py ) | [ ✓] ( src/main/python/AoC2025_10.py ) | [ ✓] ( src/main/python/AoC2025_11.py ) | |
1212| java | [ ✓] ( src/main/java/AoC2025_01.java ) | [ ✓] ( src/main/java/AoC2025_02.java ) | [ ✓] ( src/main/java/AoC2025_03.java ) | [ ✓] ( src/main/java/AoC2025_04.java ) | [ ✓] ( src/main/java/AoC2025_05.java ) | [ ✓] ( src/main/java/AoC2025_06.java ) | [ ✓] ( src/main/java/AoC2025_07.java ) | [ ✓] ( src/main/java/AoC2025_08.java ) | [ ✓] ( src/main/java/AoC2025_09.java ) | [ ✓] ( src/main/java/AoC2025_10.java ) | [ ✓] ( src/main/java/AoC2025_11.java ) | |
13- | bash | [ ✓] ( src/main/bash/AoC2025_01.sh ) | [ ✓] ( src/main/bash/AoC2025_02.sh ) | [ ✓] ( src/main/bash/AoC2025_03.sh ) | [ ✓] ( src/main/bash/AoC2025_04.sh ) | [ ✓] ( src/main/bash/AoC2025_05.sh ) | [ ✓] ( src/main/bash/AoC2025_06.sh ) | [ ✓] ( src/main/bash/AoC2025_07.sh ) | | | | | |
13+ | bash | [ ✓] ( src/main/bash/AoC2025_01.sh ) | [ ✓] ( src/main/bash/AoC2025_02.sh ) | [ ✓] ( src/main/bash/AoC2025_03.sh ) | [ ✓] ( src/main/bash/AoC2025_04.sh ) | [ ✓] ( src/main/bash/AoC2025_05.sh ) | [ ✓] ( src/main/bash/AoC2025_06.sh ) | [ ✓] ( src/main/bash/AoC2025_07.sh ) | | | | [ ✓ ] ( src/main/bash/AoC2025_11.sh ) | |
1414<!-- @END:ImplementationsTable:2025@ -->
1515
1616## 2024
Original file line number Diff line number Diff line change 1+ #! /bin/bash
2+ #
3+ # Advent of Code 2025 Day 11
4+ #
5+
6+ year=2025
7+ day=11
8+
9+ declare -A edges
10+ declare -A cache
11+
12+ create_graph () {
13+ while read -r line || [ -n " $line " ]; do
14+ local node=" ${line%%:* } "
15+ local neighbours=" ${line: ${# node} +2} "
16+ edges[$node ]=" $neighbours "
17+ done < " $1 "
18+ return 0
19+ }
20+
21+ dfs () {
22+ local node=" $1 "
23+ [[ -n " ${cache[$node]} " ]] && {
24+ return 0
25+ }
26+ [ " $node " = " $end " ] && {
27+ (( cache["$node "] += 1 ))
28+ return 0
29+ }
30+ IFS=' ' read -ra neighbours <<< " ${edges[$node]}"
31+ local n
32+ for n in " ${neighbours[@]} " ; do
33+ dfs " $n "
34+ (( cache["$node "] += cache["$n "]))
35+ done
36+ return 0
37+ }
38+
39+ count_all_paths () {
40+ cache=()
41+ local start=" $1 "
42+ local end=" $2 "
43+ dfs " $start "
44+ echo " ${cache[$start]} "
45+ return 0
46+ }
47+
48+ part1 () {
49+ create_graph " $1 "
50+ count_all_paths " you" " out"
51+ return 0
52+ }
53+
54+ part2 () {
55+ create_graph " $1 "
56+ local -i ans1=1
57+ (( ans1 *= $(count_all_paths "svr" "dac")) )
58+ (( ans1 *= $(count_all_paths "dac" "fft")) )
59+ (( ans1 *= $(count_all_paths "fft" "out")) )
60+ local -i ans2=1
61+ (( ans2 *= $(count_all_paths "svr" "fft")) )
62+ (( ans2 *= $(count_all_paths "fft" "dac")) )
63+ (( ans2 *= $(count_all_paths "dac" "out")) )
64+ echo $(( ans1 + ans2 ))
65+ return 0
66+ }
67+
68+ tests () {
69+ # shellcheck disable=SC2034
70+ {
71+ sample1=(
72+ " aaa: you hhh"
73+ " you: bbb ccc"
74+ " bbb: ddd eee"
75+ " ccc: ddd eee fff"
76+ " ddd: ggg"
77+ " eee: out"
78+ " fff: out"
79+ " ggg: out"
80+ " hhh: ccc fff iii"
81+ " iii: out"
82+ )
83+ sample2=(
84+ " svr: aaa bbb"
85+ " aaa: fft"
86+ " fft: ccc"
87+ " bbb: tty"
88+ " tty: ccc"
89+ " ccc: ddd eee"
90+ " ddd: hub"
91+ " hub: fff"
92+ " eee: dac"
93+ " dac: fff"
94+ " fff: ggg hhh"
95+ " ggg: out"
96+ " hhh: out"
97+ )
98+ }
99+
100+ TEST part1 sample1 5
101+ TEST part2 sample2 2
102+ }
103+
104+ source " $( dirname " $0 " ) /aoc_main.sh"
You can’t perform that action at this time.
0 commit comments