File tree Expand file tree Collapse file tree 5 files changed +99
-1
lines changed Expand file tree Collapse file tree 5 files changed +99
-1
lines changed Original file line number Diff line number Diff line change 1
1
. /* .txt *
2
2
201 [6-9 ]/
3
- 202 [1 -9 ]/
3
+ 202 [2 -9 ]/
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+ A=($( < " ${1:- 1.txt} " ) ); a=${A[0]} ; ANS=0
3
+ for b in " ${A[@]: 1} " ; do (( b> a && ++ ANS)) ; a=$b ; done
4
+ echo " 1A: ${ANS} "
5
+ a=$(( A[0 ]+ A[1 ]+ A[2 ])) ; b=$a ; idx=(${! A[@]} ); ANS2=0
6
+ for i in " ${idx[@]: 3} " ; do (( b+= A[i]- A[i- 3 ], b> a && ++ ANS2 )) ; a=$b ; done
7
+ echo " 1B: ${ANS2} "
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+ declare -i X=0 Y=0 y=0
3
+ while read -r dir n; do
4
+ case $dir in
5
+ up) Y+=-$n ;;
6
+ down) Y+=$n ;;
7
+ forward) X+=$n ; y+=$(( Y* n)) ;;
8
+ esac
9
+ done < " ${1:- 2.txt} "
10
+ echo " 12A: $X *$Y = $(( X* Y)) "
11
+ echo " 12B: $X *$y = $(( X* y)) "
12
+ # golfed with awk
13
+ # awk 'n=$2 /u/{Y-=n}/n/{Y+=n}/f/{X+=n;y+=n*Y}END{print X*Y,X*y}' ${1:-2.txt}
14
+ # paste -d"*" <(paste -sd+ <(rg ^f input.txt | rev | cut -c 1) | bc) <(paste -sd+ <(rg '^[du]' input.txt | sed 's/down/1\*/;s/up/-1\*/g' | bc) | bc) | bc
15
+
16
+ # paste -d"*" <(paste -sd+ <(paste -d* <(cut -c 1 input.txt) <(rev input.txt | cut -c -1) <(sed 's/down/1\*/;s/up/-1\*/;s/forward/0\*/g' input.txt | bc | awk '{total += $0; $0 = total}1') | rg f | tr f 1 | bc ) | bc) <(paste -sd+ <(rg ^f input.txt | rev | cut -c 1) | bc) | bc
17
+ # /u/obluff
18
+ paste -d" *" <( paste -sd+ <( sed -n ' s/f.* //p' input.txt ) | bc) <( paste -sd+ <( sed ' s/down //;s/up /-/g;/f/d' input.txt) | bc) | bc
19
+ paste -d" *" <( paste -sd+ <( paste -d* <( cut -c1 input.txt) <( tr -dc ' 0-9\n' < input.txt) <( x=0 && sed ' s/down //;s/up/-/;s/f.*/0/' input.txt | while read a; do echo $(( x+= a)) ; done) | sed -n s/f.//p | bc) | bc) <( paste -sd+ <( sed -n ' s/f.* //p' input.txt) | bc) | bc
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+ nextchar () {
3
+ local -n most=$1 least=$2 in=$3
4
+ local all=$( printf " %s\n" " ${in[@]} " | cut -c" $4 " | tr -d ' \n' )
5
+ local ones=${all// 0} zeros=${all// 1}
6
+ if (( ${# ones} >= ${# zeros} )) ; then
7
+ most+=1; least+=0
8
+ else most+=0; least+=1; fi
9
+ }
10
+ A=($( < " ${1:- 3.txt} " ) )
11
+ idx=(${! A[@]} ) len=${# A[0]} g=" " e=" "
12
+ time for i in " ${idx[@]: 1: len} " ; do
13
+ nextchar g e A $i
14
+ done
15
+ echo " 3A: $g *$e = $(( $((2 #$g )) *$(( 2 #$e )) ))"
16
+ time {
17
+ O=(${A[@]} ) C=(${A[@]} ) c=${e: 0: 1} o=${g: 0: 1}
18
+ for i in " ${idx[@]: 2: len} " ; do
19
+ O=($( printf " %s\n" " ${O[@]} " | grep " ^$o " ) )
20
+ (( ${# O[@]} <= 1 )) && break
21
+ nextchar o _ O $i
22
+ done
23
+ for i in " ${idx[@]: 2: len} " ; do
24
+ C=($( printf " %s\n" " ${C[@]} " | grep " ^$c " ) )
25
+ (( ${# C[@]} <= 1 )) && break
26
+ nextchar _ c C $i
27
+ done
28
+ }
29
+ echo " 3B: $O *$C = $(( $((2 #$O )) *$(( 2 #$C )) ))"
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+ declare -i i
3
+ while read -r a b c d e; do
4
+ if (( ${# NUMBERS[@]} == 0 )) ; then NUMBERS=(${a// ,/ } );
5
+ elif [[ -n $a ]]; then
6
+ C[i++]=" -$a --$b --$c --$d --$e -" # rows
7
+ j=$(( 10 * (i/ 10 )) ) # columns
8
+ 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
10
+ fi
11
+ done < " ${1:- 4.txt} "
12
+ idx=(${! C[@]} )
13
+ for k in " ${! NUMBERS[@]} " ; do
14
+ n=${NUMBERS[k]}
15
+ C=(" ${C[@]// -$n -} " )
16
+ B=(${C[@]} ) # lazy "find empty"
17
+ (( ${# B[@]} != ${# C[@]} )) && break
18
+ done
19
+ for i in " ${idx[@]} " ; do [[ -z ${C[i]} ]] && break ; done
20
+ j=$(( 10 * (i/ 10 )) ) # columns
21
+ printf -v sum " %s" " ${C[@]: j: 5} "
22
+ sum=${sum// --/ +} ; sum=${sum// -}
23
+ echo " 12A: $n *$sum = $(( n* (sum)) )"
24
+ printf -v WON " =%d=" {0..990..10}
25
+ WON=${WON/ =$j =} # only do each card once
26
+ for i in " ${idx[@]: j: 10} " ; do C[i]=DONE; done
27
+ for k in " ${! NUMBERS[@]} " ; do
28
+ n=${NUMBERS[k]}
29
+ C=(" ${C[@]// -$n -} " )
30
+ B=(${C[@]} )
31
+ if (( ${# B[@]} != ${# C[@]} )) ; then
32
+ for i in " ${idx[@]} " ; do
33
+ if [[ -z ${C[i]} ]]; then
34
+ j=$(( 10 * (i/ 10 )) )
35
+ WON=${WON/ =$j =} ; [[ -z $WON ]] && break 2
36
+ for l in " ${idx[@]: j: 10} " ; do C[l]=DONE; done
37
+ fi
38
+ done
39
+ fi
40
+ done
41
+ printf -v sum " %s" " ${C[@]: j: 5} "
42
+ sum=${sum// --/ +} ; sum=${sum// -}
43
+ echo " 12B: $n *$sum = $(( n* (sum)) )"
You can’t perform that action at this time.
0 commit comments