Skip to content

Commit e7b689e

Browse files
committed
day 4 complete
1 parent d61130d commit e7b689e

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed

2024/day4/p1.sh

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#!/bin/bash
2+
3+
FILE="$1"
4+
5+
declare -A grid
6+
declare -a origins
7+
x=0
8+
y=0
9+
10+
while IFS= read -n1 c; do
11+
if [[ "$c" == "" ]]; then
12+
((y++))
13+
x=0
14+
continue
15+
fi
16+
grid["$x,$y"]=$c
17+
if [[ "$c" == "X" ]]; then
18+
origins+=("$x,$y")
19+
fi
20+
((x++))
21+
done < "$FILE"
22+
23+
count=0
24+
25+
scan() {
26+
dx="$1"
27+
dy="$2"
28+
M=${grid[$((dx*1+x)),$((dy*1+y))]}
29+
A=${grid[$((dx*2+x)),$((dy*2+y))]}
30+
S=${grid[$((dx*3+x)),$((dy*3+y))]}
31+
[[ "$M" == "M" && "$A" == "A" && "$S" == "S" ]] && ((count++))
32+
}
33+
34+
for origin in "${origins[@]}"; do
35+
x="${origin%%,*}"
36+
y="${origin##*,}"
37+
scan 1 0
38+
scan -1 0
39+
scan 0 1
40+
scan 0 -1
41+
scan 1 1
42+
scan -1 -1
43+
scan 1 -1
44+
scan -1 1
45+
done
46+
47+
echo $count

2024/day4/p2.sh

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#!/bin/bash
2+
3+
FILE="$1"
4+
5+
declare -A grid
6+
declare -a origins
7+
x=0
8+
y=0
9+
10+
while IFS= read -n1 c; do
11+
if [[ "$c" == "" ]]; then
12+
((y++))
13+
x=0
14+
continue
15+
fi
16+
grid["$x,$y"]=$c
17+
if [[ "$c" == "A" ]]; then
18+
origins+=("$x,$y")
19+
fi
20+
((x++))
21+
done < "$FILE"
22+
23+
count=0
24+
25+
scan() {
26+
dx="$1"
27+
dy="$2"
28+
RVAL=${grid[$((dx*1+x)),$((dy*1+y))]}
29+
}
30+
31+
for origin in "${origins[@]}"; do
32+
x="${origin%%,*}"
33+
y="${origin##*,}"
34+
MAS=
35+
scan -1 -1
36+
MAS="${MAS}${RVAL}"
37+
scan 1 -1
38+
MAS="${MAS}${RVAL}"
39+
scan 1 1
40+
MAS="${MAS}${RVAL}"
41+
scan -1 1
42+
MAS="${MAS}${RVAL}"
43+
case "$MAS" in
44+
SMMS)
45+
;&
46+
MMSS)
47+
;&
48+
SSMM)
49+
;&
50+
MSSM)
51+
((count++))
52+
;;
53+
esac
54+
55+
done
56+
57+
echo $count

0 commit comments

Comments
 (0)