Skip to content

Commit 020790f

Browse files
committed
All scripts read input from files
Minor cleanup in 15
1 parent 3f638a1 commit 020790f

File tree

4 files changed

+12
-11
lines changed

4 files changed

+12
-11
lines changed

10.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#! /usr/bin/env bash
2-
A=($(sort -n 10.txt))
2+
A=($(sort -n ${1:-10.txt}))
33
DIFF=("" "" "" "1") # add 3 for the built-in
44
j=0; for i in "${A[@]}"; do DIFF[$((i-j))]+=1;j=$i; done
55
echo "10A: ${#DIFF[1]}*${#DIFF[3]}=$((${#DIFF[1]}*${#DIFF[3]}))"

13.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
#! /usr/bin/env bash
22
IFS=$',\n'
3-
A=($(sed s/x,//g 13.txt))
3+
input=${1:-13.txt}
4+
A=($(sed s/x,//g $input))
45
time=$A; min=($A 0)
56
for i in "${A[@]:1}"; do
67
w=$((i-time%i))
78
[ $w -lt $min ] && min=($w $i)
89
done
910
echo "13A: $min*${min[1]} = $((min*${min[1]}))"
1011

11-
A=($(tail -1 13.txt))
12+
A=($(tail -1 $input))
1213
for i in ${!A[@]}; do [ ${A[i]} != x ] && B[$i]=${A[i]} ; done
1314
N=0; step=1
1415
#echo "${!B[@]} => "${B[@]}""

15.sh

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#! /usr/bin/env bash
2-
A=(${*:-0 12 6 13 20 1 17})
3-
GIVEUP=${1:-10}
2+
A=($(<${1:-15.txt}))
3+
GIVEUP=${2:-10}
44
#A=(0 3 6)
5-
unset B; i=0; l=""
5+
B=(); i=0; l=""
66
for a in ${A[@]}; do B[$a]=$((++i)); done
77
while [ $i -lt 2020 ]; do
88
n=$((i-${l:-$i})); l=${B[$n]}; B[$n]=$((++i))
@@ -14,8 +14,8 @@ sharded_swap() { # syntax: l=B[$1]; B[$1]=$2
1414
local x="B$(($1>>6))[$(($1&63))]"
1515
eval "l=\${$x}; $x=$2"
1616
}
17-
18-
i=0; for a in ${A[@]}; do sharded_swap $a $((++i)); done; l="";
17+
SECONDS=0
18+
i=0; for a in ${A[@]}; do sharded_swap $a $((++i)); done; l="";
1919
while [[ $i -lt 30000000 && $SECONDS -le $GIVEUP ]]; do
2020
n=$((i-${l:-$i})); sharded_swap $n $((++i))
2121
[ $((i%100000)) = 0 ] && echo "$i: $SECONDS sec"
@@ -24,7 +24,7 @@ if [ $i = 30000000 ]; then
2424
echo "15B: $n"
2525
else
2626
# The code above would take days or weeks to run. Switch to awk
27-
echo "$n Gave up after $SECONDS seconds after round ${i}"
27+
echo "15B(round $i): $n (Gave up after $SECONDS seconds)"
2828
printf "%s\n" ${A[@]} | awk '{B[$0]=++i;}
2929
END {
3030
while (i<30000000) { n=l?(i-l):0; l=B[n]; B[n]=++i; }

23.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#! /usr/bin/env bash
2-
A=${1:-167248359}
2+
A=$(<${1:-23.txt})
33
i=0
44
for k in {0..99}; do
55
c=${A:i:1}
@@ -13,7 +13,7 @@ while [ ${A:i:1} != $c ]; do [ $((++i)) = 9 ] && i=0; done
1313
[ $((++i)) = 9 ] && i=0
1414
done
1515
echo "23A: ${A/*1}${A/1*}"
16-
A=167248359
16+
A=$(<${1:-23.txt})
1717
#A=389125467
1818
printf $A | sed -e "s/\(.\)/\1\n/g" | awk '
1919
{ if(last){ C[last]=$0 }else{ cup=$0 }; last=$0; ++i; }

0 commit comments

Comments
 (0)