Skip to content

Commit 9410a80

Browse files
committed
2021: Shellcheck fixes and cleanup
Minor cleanup in 4, 7 and 9-12
1 parent 4d14984 commit 9410a80

File tree

10 files changed

+46
-45
lines changed

10 files changed

+46
-45
lines changed

2021/01.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#! /usr/bin/env bash
1+
#!/usr/bin/env bash
22
A=($(< "${1:-1.txt}")); a=${A[0]}; ANS=0
33
for b in "${A[@]:1}"; do ((b>a && ++ANS)); a=$b; done
44
echo "1A: ${ANS}"

2021/02.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#! /usr/bin/env bash
1+
#!/usr/bin/env bash
22
input=${1:-2.txt}
33
declare -i X=0 Y=0 y=0
44
while read -r dir n; do

2021/03.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#! /usr/bin/env bash
1+
#!/usr/bin/env bash
22
nextchar() {
33
local -n most=$1 least=$2 in=$3
44
local all; all=$(printf "%s\n" "${in[@]}" | cut -c"$4" | tr -d '\n' )

2021/04.sh

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
#! /usr/bin/env bash
2-
declare -i i
1+
#!/usr/bin/env bash
2+
declare -i i j=0
33
while read -r a b c d e; do
44
if (( ${#NUMBERS[@]} == 0 )); then NUMBERS=(${a//,/ });
55
elif [[ -n $a ]]; then
66
C[i++]="-$a--$b--$c--$d--$e-" # rows
7-
j=$((10*(i/10))) # columns
87
C[j+5]+="-$a-";C[j+6]+="-$b-";C[j+7]+="-$c-";C[j+8]+="-$d-";C[j+9]+="-$e-";
9-
((i%5==0)) && i+=5
8+
((i%5==0)) && i+=5 j+=10
109
fi
1110
done < "${1:-4.txt}"
1211
idx=(${!C[@]})
@@ -17,16 +16,15 @@ for k in "${!NUMBERS[@]}"; do
1716
(( ${#B[@]} != ${#C[@]} )) && break
1817
done
1918
for i in "${idx[@]}"; do [[ -z ${C[i]} ]] && break; done
20-
j=$((10*(i/10))) # columns
19+
j=$((10*(i/10))) # card number
2120
printf -v sum "%s" "${C[@]:j:5}"
2221
sum=${sum//--/+}; sum=${sum//-}
23-
echo "12A: $((n*(sum)))"
22+
echo "12A: $((n*sum))"
2423

2524
printf -v WON "=%d=" {0..990..10}
2625
WON=${WON/=$j=} # only do each card once
2726
for i in "${idx[@]:j:10}"; do C[i]=DONE; done
28-
for k in "${!NUMBERS[@]}"; do
29-
n=${NUMBERS[k]}
27+
for n in "${NUMBERS[@]:k+1}"; do
3028
C=("${C[@]//-$n-}")
3129
B=(${C[@]})
3230
if (( ${#B[@]} != ${#C[@]} )); then
@@ -41,4 +39,4 @@ for k in "${!NUMBERS[@]}"; do
4139
done
4240
printf -v sum "%s" "${C[@]:j:5}"
4341
sum=${sum//--/+}; sum=${sum//-}
44-
echo "12B: $((n*(sum)))"
42+
echo "12B: $((n*sum))"

2021/07.sh

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
#!/bin/bash
1+
#!/usr/bin/env bash
22
input=$(< "${1:-7.txt}")
33
A=($(echo -e "${input//,/\\n}" | sort -n))
4-
N=${#A[@]}
5-
avg=$(((${input//,/+})/N))
6-
n=""; for k in "${A[@]}";do n+=+$((k-A[N/2])); done
7-
sum=$((${n//-})) # lazy abs()
8-
echo "7A: $sum"
9-
declare -i sum2=0
4+
N=${#A[@]} n=""
5+
declare -i avg=$(((${input//,/+})/N)) sum2=0
106
for k in "${A[@]}"; do
7+
n+=+$((k-A[N/2]));
118
dist=$((k-avg)); dist=${dist/-}
129
sum2+=$((dist*(dist+1)/2))
1310
done
11+
sum=${n//-} # lazy abs()
12+
echo "7A: $((sum))"
1413
echo "7B: $sum2"

2021/08.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ while read -r -a A; do
2323
6,??,*) n+=9;;
2424
6,*) n+=0;;
2525
7,*) n+=8;;
26-
*) echo ERROR: ${#i},${i//[$T4]},${i//[$T7]}; break 2;;
26+
*) echo "ERROR: ${#i},${i//[$T4]},${i//[$T7]}"; break 2;;
2727
esac
2828
done
2929
sum+=+$((10#$n))

2021/09.sh

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#! /usr/bin/env bash
1+
#!/usr/bin/env bash
22
A=($(< "${1:-9.txt}"))
3-
B=(9${A//?/9}9); for i in "${A[@]}"; do B+=(9${i}9); done; B+=($B); C=("${B[@]}");
3+
B=(9${A//?/9}9); for i in "${A[@]}"; do B+=(9${i}9); done; B+=(${B[0]}); C=("${B[@]}");
44
n=${#A} N=${#A[@]}
55
declare -A LOWS
66
for ((y=1; y<=N; ++y)); do
@@ -17,7 +17,7 @@ printf -v sum "+%s" "${LOWS[@]}"
1717
echo "9A: $((sum + ${#LOWS[@]}))"
1818

1919
C=(${C[@]//[0-8]/-}) c=0
20-
F=({a..z} {A..Z} {0..8} + _ / =)
20+
F=({a..z} {A..Z} {0..8} + _ / "=")
2121
idx=($(printf "%s\n" "${!LOWS[@]}" | sort -n))
2222
for i in "${idx[@]}"; do
2323
LOWS[$i]=${F[c]}
@@ -38,10 +38,10 @@ for i in {1..6}; do
3838
done
3939
while [[ "${C[*]}" == *-* ]]; do
4040
#echo "round $((++round))"
41-
for y in ${!C[@]}; do
41+
for y in "${!C[@]}"; do
4242
[[ ${C[y]} != *-* ]] && continue
43-
minus=($(sed "s/./&\n/g" <<< ${C[y]:1} | grep -n '-'))
44-
for x in ${minus[@]//:*}; do
43+
minus=($(sed "s/./&\n/g" <<< "${C[y]:1}" | grep -n '-'))
44+
for x in "${minus[@]//:*}"; do
4545
for j in 1 -1; do
4646
k=$j
4747
while [[ ${C[y+k]:x:1} == - ]]; do ((k+=j)); done
@@ -60,10 +60,10 @@ while [[ "${C[*]}" == *-* ]]; do
6060
done
6161

6262
AREA=()
63-
for i in ${F[@]}; do
63+
for i in "${F[@]}"; do
6464
while read -r A;do
6565
AREA+=(${#A}:$A)
66-
done < <(printf "%s\n" "${C[@]}" | grep -a1 $i | tr -cd "$i-" | tr -s '-' '\n')
66+
done < <(printf "%s\n" "${C[@]}" | grep -a1 "$i" | tr -cd "$i-" | tr -s '-' '\n')
6767
done
6868
BIG=($(printf "%s\n" "${AREA[@]//:*}" | sort -nr))
6969
echo "9B: $((BIG[0]*BIG[1]*BIG[2]))"

2021/10.sh

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@
22
A=($(tr '()[]{}<>' '1a2b3c4d' < "${1:-10.txt}"))
33
while [[ ${A[*]} =~ (1a|2b|3c|4d) ]]; do
44
A=(${A[@]//1a}); A=(${A[@]//2b}); A=(${A[@]//3c}); A=(${A[@]//4d})
5+
echo $((++i))
56
done
7+
# P1 only contains closing brackets. P2 only contains lines with no closing brackets
68
# shellcheck disable=SC2034
7-
a=3 b=57 c=1197 d=25137 TMP=(${A[@]//[1234]}) C=()
8-
printf -v sum "+%.1s" "${TMP[@]}" # TMP only contains closing brackets. Print first char
9+
a=3 b=57 c=1197 d=25137 P1=(${A[@]//[1234]}) P2=(${A[@]/*[^1234]*}) C=()
10+
printf -v sum "+%.1s" "${P1[@]}" # Only print first char
911
echo "10A: $((sum))"
1012
while read -r -a B; do
1113
sum=0
1214
for i in "${B[@]}"; do sum=$((sum*5+i)); done
1315
C+=($sum)
14-
done < <( printf "%s\n" "${A[@]}" | grep -v -E '[a-d]' | rev | sed 's/./ &/g')
16+
done < <(printf "%s\n" "${P2[@]}" | rev | sed 's/./ &/g')
1517
C=($(printf "%s\n" "${C[@]}" | sort -n ))
1618
N=${#C[@]}
1719
echo "10B: ${C[N/2]}"

2021/11.sh

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
11
#!/usr/bin/env bash
22

33
A=($(sed -e 's/^/X/;s/./& /g' "${1:-11.txt}"))
4-
Zeros=${A[*]//*/0} flashes=0 last=0 idx=(${!A[@]})
4+
flashes=0 last=0 idx=(${!A[@]})
55
A+=(X X X X X X X X X X X X)
66
A=(${A[@]//X/-999999999})
77
flash(){
88
local n=$1 j cur
99
((++flashes))
10+
# hardcoded neighbours. There's an X on one side, so Y-offset is cols+1
1011
for j in -12 -11 -10 -1 1 10 11 12; do
1112
cur=$((n+j))
12-
((++A[cur] >= 10 && F[cur]++ == 0 )) && flash $cur
13+
((++A[cur] >= 10 && FLASHED[cur]++ == 0 )) && flash $cur
1314
done
1415
}
1516
round(){
16-
F=(${Zeros})
17-
for i in ${idx[@]}; do ((++A[i] >= 10 && F[i]++ == 0)) && flash $i ; done
18-
A=(${A[@]//1?/0})
17+
FLASHED=()
18+
for i in "${idx[@]}"; do ((++A[i] >= 10 && FLASHED[i]++ == 0)) && flash "$i"; done
1919
#A=(${A[@]//-99??/-9999})
20+
A=(${A[@]//1?/0})
2021
}
2122
for rounds in {1..100}; do
2223
round

2021/12.sh

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,28 @@
11
#!/usr/bin/env bash
2-
declare -A Next=()
2+
declare -A Next=() BIG=()
33
IFS=$' -\n'
44
while read -r a b; do
55
[[ $a != start ]] && Next[$b]+="$a "
66
[[ $b != start ]] && Next[$a]+="$b "
77
done < "${1:-12.txt}"
8+
for i in "${!Next[@]}"; do [[ -z ${i//[A-Z]} ]] && BIG[$i]=1; done
89
#for i in "${!Next[@]}"; do echo "$i: '${Next[$i]}'"; done
910

1011
r() {
11-
local route=$1 cur=$2 visited=$3 k deeper=false
12+
local route=$1 cur=$2 visited=$3 k
1213
if [[ $cur == end ]]; then
13-
PATHS+=("$route:$cur")
14-
elif [[ $cur != "${cur,,}" || $route != *:${cur}:*
15-
|| ($cur == "${cur,,}" && $((visited++)) == 0) ]]; then
14+
PATHS+=1
15+
elif [[ -n ${BIG[$cur]} || $route != *:${cur}:* ]] \
16+
|| ((visited++ == 0)); then
1617
for k in ${Next[$cur]}; do
1718
r "$route:$cur" "$k" $visited
1819
done
1920
fi
2021
}
2122

22-
PATHS=()
23+
declare -i PATHS=0
2324
r "" start 1
24-
echo "12A: ${#PATHS[@]}"
25-
PATHS=()
25+
echo "12A: ${PATHS}"
26+
PATHS=0
2627
r "" start 0
27-
echo "12B: ${#PATHS[@]}"
28+
echo "12B: ${PATHS}"

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy