Skip to content

Commit 7c51b9d

Browse files
committed
Fix minor bugs based on different input files
1: Negative numbers + grep are bad Will make grep wait forever for input from stdin 2: Arithmetic context for characters is bad When $x=='x' or $b=='b' we have an infinite recursion problem. https://stackoverflow.com/questions/30404863/expression-recursion-level-exceeded 3: Wrong index used. 9: Off-by-one error. 11: Failed variable rename in shellcheck cleanup. Skip call to sort.
1 parent 60e5242 commit 7c51b9d

File tree

5 files changed

+9
-9
lines changed

5 files changed

+9
-9
lines changed

01.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#! /usr/bin/env bash
22
input=${1:-1.txt}
33
A=($(sort -n "$input"));
4-
for a in "${A[@]}"; do grep -wq $((2020-a)) "$input" && break; done
4+
for a in "${A[@]}"; do grep -q -- ^$((2020-a))$ "$input" && break; done
55
echo "1A: $((2020-a)) + $a = $(((2020-a)*a))"
6-
b=:; for a in "${A[@]}";do for i in "${A[@]}"; do grep -wq $((2020-a-i)) "$input" && b=break; $b ; done; $b; done
6+
b=:; for a in "${A[@]}";do for i in "${A[@]}"; do grep -q -- ^$((2020-a-i))$ "$input" && b=break; $b; done; $b; done
77
echo "1B: $((2020-a-i)) + $a + $i = $(((2020-a-i)*a*i))"

02.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ IFS=$'-:\ \n'
44
while read -r m M b c; do x=${c//[^$b]}; (( ${#x} >= m && ${#x} <= M && ++ans)); done < "${1:-2.txt}"
55
echo "2A: $ans"
66
ans=0
7-
while read -r m M b c; do x=${c:m-1:1}; y=${c:M-1:1}; (( x != y && ( b == x || b == y ) && ++ans)); done < "${1:-2.txt}"
7+
while read m M b c; do x=${c:m-1:1}; y=${c:M-1:1}; [[ $x != $y ]] && [[ $b == $x || $b == $y ]] && ((++ans)); done < ${1:-2.txt}
88
echo "2B: $ans"

03.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ for i in "${A[@]}"; do x+=${i:k:1}; ((k=(k+j)%l)); done; x=${x//\.}
44
echo "3A: ${#x}"
55
idx2=$(seq 0 2 $((${#A[@]}-1)))
66
for j in 1 3 5 7; do x=""; k=0; for i in "${A[@]}"; do x+=${i:k:1}; ((k=(k+j)%l)); done; x=${x//\.}; total+="*${#x}"; done
7-
x=""; k=0; for i in $idx2; do x+=${A[i]:k:1}; ((k=(k+j)%l)); done ; x=${x//\.}; total+="*${#x}"
7+
x=""; k=0; for i in $idx2; do x+=${A[i]:k:1}; ((k=(k+2)%l)); done ; x=${x//\.}; total+="*${#x}"
88
echo "3B: ${total:2} = $((total))"

09.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ while [ "$sum" != "${A[i]}" ]; do
2020
fi
2121
[[ $j -ge $i ]] && echo NOT FOUND && break
2222
done
23-
B=($(printf "%s\n" "${A[*]:k:j-k+1}" | sort -n))
23+
B=($(printf "%s\n" "${A[*]:k:j-k}" | sort -n))
2424
echo "9B: $k..$j = $((B[0]+B[-1]))"

11.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
A=($(tr "L" "X" < "${1:-11.txt}"))
33
B=(.${A//?/.}.); for i in "${A[@]}"; do B+=(.$i.); done; B+=($B); C=("${B[@]}");
44
J=$(seq 1 ${#A}); I=$(seq 1 ${#A[@]}); CHANGE=($I); round=0
5-
while [ ${#change} != 0 ]; do
5+
while [ ${#I} != 0 ]; do
66
CHANGE=(); l=
77
for i in $I; do
88
for j in $J; do
@@ -14,13 +14,13 @@ while [ ${#change} != 0 ]; do
1414
fi
1515
l+=$x
1616
done
17-
[ "${B[i]}" != .$l. ] && CHANGE+=($((i-1)) $i $((i+1)))
17+
[ "${B[i]}" != .$l. ] && CHANGE[i-1]=1 && CHANGE[i]=1 && CHANGE[i+1]=1
1818
C[i]=.$l.; l=
1919
done
2020
B=("${C[@]}")
21-
I=$(printf "%s\n" "${CHANGE[@]}" |sort -u)
21+
I=${!CHANGE[@]}
2222
((++round==1)) && B=("${C[@]//X/x}")
23-
#((round%10)) || echo "$round: $((${#change[@]}/3))"
23+
#((round%10)) || echo "$round: ${#CHANGE[@]}"
2424
done
2525
ans="${B[*]}"; ans=${ans//[ L.]}
2626
echo "11A: ${#ans}"

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