Skip to content

Commit 9551ed9

Browse files
committed
AoC 2025 Day 7 - bash
1 parent 9abc0fb commit 9551ed9

File tree

2 files changed

+87
-1
lines changed

2 files changed

+87
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
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) | | | | | |
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) | | | | | |
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) | | | | | | |
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) | | | | | |
1414
<!-- @END:ImplementationsTable:2025@ -->
1515

1616
## 2024

src/main/bash/AoC2025_07.sh

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
#!/bin/bash
2+
#
3+
# Advent of Code 2025 Day 7
4+
#
5+
6+
year=2025
7+
day=07
8+
9+
solve() {
10+
local -i part="$1"
11+
12+
declare -a dp
13+
local -i ans1=0
14+
local -i first=1
15+
while read -r line || [ -n "$line" ]; do
16+
if ((first == 1)); then
17+
for ((i = 0; i < "${#line}"; i++)); do
18+
if [ "${line:i:1}" = 'S' ]; then
19+
dp+=(1)
20+
else
21+
dp+=(0)
22+
fi
23+
done
24+
((first = 0))
25+
else
26+
for ((i = 0; i < "${#line}"; i++)); do
27+
if [ "${line:i:1}" = '^' ]; then
28+
((dp[i] > 0)) && ((ans1++))
29+
((dp[i - 1] += dp[i]))
30+
((dp[i + 1] += dp[i]))
31+
((dp[i] = 0))
32+
fi
33+
done
34+
fi
35+
done < "$2"
36+
37+
if ((part == 1)); then
38+
echo "$ans1"
39+
else
40+
local -i ans2=0
41+
for n in "${dp[@]}"; do
42+
((ans2 += n))
43+
done
44+
echo "$ans2"
45+
fi
46+
return 0
47+
}
48+
49+
part1() {
50+
solve 1 "$1"
51+
return 0
52+
}
53+
54+
part2() {
55+
solve 2 "$1"
56+
return 0
57+
}
58+
59+
tests() {
60+
# shellcheck disable=SC2034
61+
{
62+
sample=(
63+
".......S......."
64+
"..............."
65+
".......^......."
66+
"..............."
67+
"......^.^......"
68+
"..............."
69+
".....^.^.^....."
70+
"..............."
71+
"....^.^...^...."
72+
"..............."
73+
"...^.^...^.^..."
74+
"..............."
75+
"..^...^.....^.."
76+
"..............."
77+
".^.^.^.^.^...^."
78+
"..............."
79+
)
80+
}
81+
82+
TEST part1 sample 21
83+
TEST part2 sample 40
84+
}
85+
86+
source "$(dirname "$0")/aoc_main.sh"

0 commit comments

Comments
 (0)