8000 2021: Improvements on days 6 and 7 · einarjon/adventofcode.sh@b25ff15 · GitHub
[go: up one dir, main page]

Skip to content

Commit b25ff15

Browse files
committed
2021: Improvements on days 6 and 7
1 parent 72e9ca2 commit b25ff15

File tree

2 files changed

+21
-28
lines changed

2 files changed

+21
-28
lines changed

2021/06.sh

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
#!/usr/bin/env bash
2-
A=$(< "${1:-6.txt}")
3-
A=${A//,}
2+
declare -i A=(0 0 0 0 0 0 0 0 0) n=0
3+
while read freq age; do A[age]=$freq; done < <(grep -o [0-9] "${1:-6.txt}" | sort | uniq -c)
44
solve() {
5-
for ((; n < $1; ++n)); do
6-
#births=${A//[^0]}; births=${births//0/8}
7-
births=$(tr -cd 0 <<< "$A" | tr 0 8)
8-
B=$(echo -n "$A" | tr 876543210 765432106 )
9-
A[i]="${B[i]}${births}"
5+
while ((n < $1)); do
6+
i=$((n++%9))
7+
A[i-2]+=${A[i]}
108
done
9+
sum=0; for i in "${!A[@]}"; do ((sum+=A[i])); done
1110
}
12-
n=0
1311
solve 80
14-
echo "6A: ${#A}"
15-
#solve 256
16-
#echo "6B: ${#A}"
12+
echo "6A: $sum"
13+
solve 256
14+
echo "6B: $sum"

2021/07.sh

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,15 @@
1-
#!/usr/bin/env bash
2-
A=($(tr , '\n' < "${1:-7.txt}" | sort -n ))
1+
#!/bin/bash
2+
input=$(< ${1:-7.txt})
3+
A=($(echo -e "${input//,/\\n}" | sort -n))
34
MIN=(99999999 0) MIN2=(9999999999999 0)
45
N=${#A[@]}
5-
for ((i=A[N/4]; i<A[-N/4]; i++)); do
6-
n=''; for k in ${A[@]};do n+=+$((k-i)); done;
7-
sum=$((${n//-})) # lazy abs()
8-
((MIN>sum)) && MIN=($sum $i)
6+
avg=$(((${input//,/+})/N))
7+
n=""; for k in ${A[@]};do n+=+$((k-A[N/2])); done
8+
sum=$((${n//-})) # lazy abs()
9+
echo "7A: $sum"
10+
declare -i sum2=0
11+
for k in ${A[@]}; do
12+
dist=$((k-avg)); dist=${dist/-}
13+
sum2+=$((dist*(dist+1)/2))
914
done
10-
echo "7A: ${MIN[0]}"
11-
12-
for ((i=A[N/4]; i<A[-N/4]; i++)); do
13-
declare -i sum2=0;
14-
for k in ${A[@]}; do
15-
dist=$((k-i)); dist=${dist/-}
16-
sum2+=$((dist*(dist+1)/2))
17-
done;
18-
((MIN2>sum2)) && MIN2=($sum2 $i)
19-
done
20-
echo "7B: ${MIN2[0]}"
15+
echo "7B: $sum2"

0 commit comments

Comments
 (0)
0