Skip to content

Commit c6dece9

Browse files
committed
AoC 2025 Day 2 - bash
1 parent 71dcb22 commit c6dece9

File tree

2 files changed

+60
-1
lines changed

2 files changed

+60
-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) | | | | | | | | | | |
1212
| java | [](src/main/java/AoC2025_01.java) | [](src/main/java/AoC2025_02.java) | | | | | | | | | | |
13-
| bash | [](src/main/bash/AoC2025_01.sh) | | | | | | | | | | | |
13+
| bash | [](src/main/bash/AoC2025_01.sh) | [](src/main/bash/AoC2025_02.sh) | | | | | | | | | | |
1414
<!-- @END:ImplementationsTable:2025@ -->
1515

1616
## 2024

src/main/bash/AoC2025_02.sh

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#!/bin/bash
2+
#
3+
# Advent of Code 2025 Day 2
4+
#
5+
6+
year=2025
7+
day=02
8+
9+
solve() {
10+
local -i ans=0
11+
IFS=, read -ra ranges < "$1"
12+
for range in "${ranges[@]}"; do
13+
IFS='-' read -r lo hi <<< "$range"
14+
while read -r n; do
15+
((ans += n))
16+
done <<< "$(seq "$lo" "$hi" | grep -E "$2")"
17+
done
18+
echo "$ans"
19+
return 0
20+
}
21+
22+
solve_slow() {
23+
local -i ans=0
24+
IFS=, read -ra ranges < "$1"
25+
for range in "${ranges[@]}"; do
26+
IFS='-' read -r lo hi <<< "$range"
27+
_debug "$lo $hi"
28+
for ((n = lo; n <= hi; n++)); do
29+
[[ "$n" =~ $2 ]]
30+
[ "${#BASH_REMATCH[@]}" -ne 0 ] && ((ans += n))
31+
done
32+
done
33+
echo "$ans"
34+
return 0
35+
}
36+
37+
part1() {
38+
solve "$1" "^([0-9]+)\\1$"
39+
return 0
40+
}
41+
42+
part2() {
43+
solve "$1" "^([0-9]+)\\1+$"
44+
return 0
45+
}
46+
47+
tests() {
48+
# shellcheck disable=SC2034
49+
{
50+
sample="11-22,95-115,998-1012,1188511880-1188511890,222220-222224,\
51+
1698522-1698528,446443-446449,38593856-38593862,565653-565659,\
52+
824824821-824824827,2121212118-2121212124"
53+
}
54+
55+
TEST part1 sample 1227775554
56+
TEST part2 sample 4174379265
57+
}
58+
59+
source "$(dirname "$0")/aoc_main.sh"

0 commit comments

Comments
 (0)