Skip to content

Commit 8cf0d77

Browse files
committed
woof
1 parent 76edb31 commit 8cf0d77

File tree

3 files changed

+152
-0
lines changed

3 files changed

+152
-0
lines changed

2025/day06/p2-golf.sh

100644100755
File mode changed.

2025/day07/p1.sh

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/bin/bash
2+
3+
FILE="$1"
4+
5+
mapfile -t grid < "$FILE"
6+
7+
h=${#grid[@]}
8+
w=${#grid[0]}
9+
10+
print_grid() {
11+
local x y
12+
for ((y=0; y<h; y++)); do
13+
for ((x=0; x<w; x++)); do
14+
printf ${grid[y]:x:1}
15+
done
16+
echo
17+
done
18+
}
19+
20+
q=()
21+
print_grid 1>&2
22+
for ((y=0; y<h; y++)); do
23+
for ((x=0; x<w; x++)); do
24+
if [[ ${grid[y]:x:1} == S ]]; then
25+
q+=($x $((y+1)))
26+
break 2
27+
fi
28+
done
29+
done
30+
31+
set_grid() {
32+
local x=$1
33+
local y=$2
34+
local c=$3
35+
grid[y]=${grid[y]:0:x}$c${grid[y]:x+1}
36+
}
37+
38+
count=0
39+
while [[ ${#q[@]} -gt 0 ]]; do
40+
read x y <<< "${q[0]} ${q[1]}"
41+
c=${grid[y]:x:1}
42+
if [[ $c == '.' ]]; then
43+
set_grid $x $y '|'
44+
# print_grid 1>&2
45+
q+=($x $((y+1)))
46+
elif [[ $c == '^' ]]; then
47+
((count++))
48+
q+=($((x-1)) $y)
49+
q+=($((x+1)) $y)
50+
fi
51+
q=(${q[@]:2})
52+
done
53+
echo $count

2025/day07/p2.sh

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
#!/bin/bash
2+
3+
FILE="$1"
4+
# FILE=input.txt
5+
6+
mapfile -t grid < "$FILE"
7+
8+
h=${#grid[@]}
9+
w=${#grid[0]}
10+
11+
print_grid() {
12+
local x y
13+
local rx=$1
14+
local ry=$2
15+
local r=${3:-32}
16+
for ((y=0; y<h; y++)); do
17+
for ((x=0; x<w; x++)); do
18+
if [[ x -eq rx && y -eq ry ]]; then
19+
RESET_ME=1
20+
echo -ne '\033['$r'm'
21+
fi
22+
if [[ -z ${cache[$x,$y]} ]]; then
23+
printf ${grid[y]:x:1}
24+
else
25+
local cached=${cache[$x,$y]}
26+
printf $((cached % 10))
27+
28+
fi
29+
if [[ -n $RESET_ME ]]; then
30+
unset RESET_ME
31+
echo -ne '\033[39m'
32+
fi
33+
done
34+
echo
35+
done
36+
}
37+
38+
q=()
39+
for ((y=0; y<h; y++)); do
40+
for ((x=0; x<w; x++)); do
41+
if [[ ${grid[y]:x:1} == S ]]; then
42+
sx=$x
43+
sy=$((y+1))
44+
q+=($x $sy 'v')
45+
break 2
46+
fi
47+
done
48+
done
49+
print_grid ${q[0]} $((q[1]-1)) 1>&2
50+
51+
set_grid() {
52+
local x=$1
53+
local y=$2
54+
local c=$3
55+
grid[y]=${grid[y]:0:x}$c${grid[y]:x+1}
56+
}
57+
58+
declare -A cache
59+
60+
count=1
61+
while [[ ${#q[@]} -gt 0 ]]; do
62+
end=${#q[@]}
63+
((end-=3))
64+
read x y z <<< "${q[end]} ${q[end+1]} ${q[end+2]}"
65+
# read x y z <<< "${q[0]} ${q[1]} ${q[2]}"
66+
q=(${q[@]:0:end})
67+
# q=(${q[@]:3})
68+
c=${grid[y]:x:1}
69+
cached=${cache[$x,$y]}
70+
if [[ $z == '|' ]]; then
71+
below=${cache[$x,$((y+1))]}
72+
cache[$x,$y]=${below:-1}
73+
# print_grid $x $y 35 1>&2
74+
foo=0
75+
elif [[ $z == '^' ]]; then
76+
left=${cache[$((x-1)),$y]}
77+
right=${cache[$((x+1)),$y]}
78+
cache[$x,$y]=$((left+right))
79+
# print_grid $x $y 35 1>&2
80+
foo=0
81+
elif [[ -n "$cached" ]]; then
82+
continue
83+
elif [[ $c == '.' || $c == '|' ]]; then
84+
set_grid $x $y '|'
85+
# print_grid $x $y 33 1>&2
86+
q+=($x $y '|')
87+
q+=($x $((y+1)) 'v')
88+
elif [[ $c == '^' ]]; then
89+
q+=($x $y '^')
90+
q+=($((x+1)) $y 'v')
91+
q+=($((x-1)) $y 'v')
92+
elif [[ $c == '|' ]]; then
93+
v=${cache[$x,$y]}
94+
# print_grid $x $y 31 1>&2
95+
# ((count+=v))
96+
fi
97+
done
98+
# print_grid
99+
echo ${cache[$sx,$sy]}

0 commit comments

Comments
 (0)