File tree Expand file tree Collapse file tree 27 files changed +760
-1
lines changed Expand file tree Collapse file tree 27 files changed +760
-1
lines changed Original file line number Diff line number Diff line change
1
+ * .txt *
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+ input=${1:- 1.txt}
3
+ A=($( sort -n $input ) );
4
+ for a in ${A[@]} ; do grep -wq $(( 2020 - a)) $input && break ; done
5
+ 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
7
+ echo " 1B: $(( 2020 - a- i)) + $a + $i = $(( (2020 - a- i)* a* i)) "
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+ ans=0
3
+ IFS=$' -:\ \n '
4
+ while read m M b c; do x=${c// [^$b]} ; [[ ${# x} -ge $m && ${# x} -le $M ]] && ans=$(( ans+ 1 )) ; done < ${1:- 2.txt}
5
+ echo " 2A: $ans "
6
+ ans=0
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=$(( ans+ 1 )) ; done < ${1:- 2.txt}
8
+ echo " 2B: $ans "
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+ A=($( < ${1:- 3.txt} ) ); l=${# A[0]} ; k=0; j=3; total=1; x=" "
3
+ for i in ${A[@]} ; do x+=${i: k: 1} ; k=$(( (k+ j)% l)) ; done ; x=${x// \. }
4
+ echo " 3A: ${# x} "
5
+ idx2=$( seq 0 2 $(( ${# A[@]} - 1 )) )
6
+ 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
+ for j in 1; do x=" " ; k=0; for i in $idx2 ; do x+=${A[i]: k: 1} ; k=$(( (k+ j)% l)) ; done ; x=${x// \. } ; total+=" *${# x} " ; done
8
+ echo " 3B: ${total: 2} = $(( total)) "
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+ X=' epEhbiH' ; x=$X ; ans=" "
3
+ IFS=$' \r\n \ '
4
+ A=($( sed s/^$/XXX/ ${1:- 4.txt} ) )
5
+ for i in " ${A[@]} " XXX; do
6
+ case $i in
7
+ ecl:* ) x=${x/ e} ;;
8
+ pid:* ) x=${x/ p} ;;
9
+ eyr:* ) x=${x/ E} ;;
10
+ hcl:* ) x=${x/ h} ;;
11
+ byr:* ) x=${x/ b} ;;
12
+ iyr:* ) x=${x/ i} ;;
13
+ hgt:* ) x=${x/ H} ;;
14
+ cid:* ) : ;;
15
+ XXX) [ -z " $x " ] && ans+=1; x=$X ;;
16
+ esac
17
+ done
<
10000
/td>18
+ echo " 4A: ${# ans} "
19
+ x=$X ; ans=" "
20
+ for i in " ${A[@]} " XXX; do
21
+ k=${i/*: }
22
+ case $i in
23
+ ecl:amb|ecl:blu|ecl:brn|ecl:gry|ecl:grn|ecl:hzl|ecl:oth) x=${x/ e} ;;
24
+ pid:[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]) x=${x/ p} ;;
25
+ eyr:[0-9][0-9][0-9][0-9]) [[ $k -ge 2020 && $k -le 2030 ]] && x=${x/ E} ;;
26
+ hcl:\# [0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]) x=${x/ h} ;;
27
+ byr:[0-9][0-9][0-9][0-9]) [[ $k -ge 1920 && $k -le 2002 ]] && x=${x/ b} ;;
28
+ iyr:[0-9][0-9][0-9][0-9]) [[ $k -ge 2010 && $k -le 2020 ]] && x=${x/ i} ;;
29
+ hgt:[0-9][0-9]in) [[ ${k: 0: 2} -ge 59 && ${k: 0: 2} -le 76 ]] && x=${x/ H} ;;
30
+ hgt:1[0-9][0-9]cm) [[ ${k: 0: 3} -ge 150 && ${k: 0: 3} -le 193 ]] && x=${x/ H} ;;
31
+ cid:* ) : ;;
32
+ XXX) [ -z " $x " ] && ans+=1; x=$X ;;
33
+ esac
34
+ done
35
+ echo " 4B: ${# ans} "
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+ A=($( cat ${1:- 5.txt} | tr ' FBLR' ' 0101' | sort -nr) )
3
+ echo " 5A: $(( 2 #$A )) "
4
+ j=; for i in ${A[@]} ; do [[ ${j: -1} == ${i: -1} ]] && echo " 5B: $(( 2 #$j - 1 )) =$(( 2 #$i + 1 )) " ; j=$i ; done
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+ X=abcdefghijklmnopqrstuvwxyz; x=$X ; j=-; a=0
3
+ A=($( sed s/^$/X/ ${1:- 6.txt} ) )
4
+ while read -n1 i; do
5
+ [ " $i " = X ] && a=$(( a+ 26 - ${# x} )) && x=$X
6
+ x=${x/ $i }
7
+ done < <( echo ${A[*]} X)
8
+ echo " 6A: $a " ;
9
+
10
+ x=" " ; a=0
11
+ for line in " ${A[@]} " X; do
12
+ if [[ " $line " = X ]]; then a=$(( a+ ${# x} )) ; x=X;
13
+ elif [ " $x " = X ]; then x=$line ;
14
+ else
15
+ y=" " ; while read -n1 i; do [[ ${x/ $i } != ${x} ]] && y+=" $i " ; done <<< $line
16
+ # y="";for ((i=0;i<${#line};i++ )); do [[ ${x/${line:$i:1}} != ${x} ]] && y+="${line:$i:1}"; done
17
+ x=$y ;
18
+ fi
19
+ done
20
+ echo " 6B: $a "
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+ IFS=$' \n '
3
+ input=${1:- 7.txt}
4
+ NEW=($( grep " shiny gold" $input ) )
5
+ FOUND=(" ${NEW[@]// bag* } " )
6
+ BAGS=(" ${NEW[@]} " )
7
+ while [ ${# FOUND[@]} != 0 ]; do
8
+ NEW=($( grep -F " ${FOUND[*]} " $input | grep -v -F " ${BAGS[*]} " | sort -u) )
9
+ BAGS+=(" ${NEW[@]} " )
10
+ FOUND=(" ${NEW[@]// bag* } " )
11
+ done
12
+ echo " 7A: ${# BAGS[@]} "
13
+ r (){
14
+ local A=() a=${1// * } b=0 c=0
15
+ A=($( grep ^${1: 2} $input | grep -o " [0-9] [a-z]* [a-z]*" ) )
16
+ for i in " ${A[@]} " ; do c=$( r $i ) ; b=$(( b+ c)) ; done
17
+ echo $(( $a + $a * $b ))
18
+ }
19
+ total=$( r " 1 shiny gold" )
20
+ echo " 7B: $(( total- 1 )) " # minus 1 shiny gold bag
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+ IFS=$' \n '
3
+ A=($( < ${1:- 8.txt} ) )
4
+ B=(" ${A[@]} " )
5
+ solve8 () {
6
+ acc=0; i=0;
7
+ while true ; do
8
+ x=${A[i]} ; y=${x/* } ; A[i]+=DONE
9
+ case " $x " in
10
+ * DONE) return 1;;
11
+ acc* ) acc=$(( acc+ ($y )) ); i=$(( i+ 1 )) ;;
12
+ jmp* ) i=$(( i+ ($y )) );;
13
+ nop* ) i=$(( i+ 1 )) ;;
14
+ * ) echo " ERROR $i : $x " ; return 1;;
15
+ esac
16
+ [[ $i -ge ${# A[@]} ]] && return 0
17
+ done
18
+ }
19
+ solve8 || echo " 8A: $acc "
20
+
21
+ A=(" ${B[@]} " );
22
+ for k in ${! A[@]} ; do
23
+ if [ ${A[k]: 0: 3} = nop ]; then A[k]=${A[k]/ nop/ jmp} ;
24
+ elif [ ${A[k]: 0: 3} = jmp ]; then A[k]=${A[k]/ jmp/ nop} ;
25
+ else continue ; fi
26
+ solve8 && break
27
+ A=(" ${B[@]} " )
28
+ done
29
+ [[ $i -ge ${# A[@]} ]] && echo " 8B: $acc "
30
+
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env bash
2
+ A=($( < ${1:- 9.txt} ) )
3
+ idx=(${! A[@]} )
4
+ for i in ${idx[@]: 25} ; do
5
+ b=:
6
+ for j in ${idx[@]: i-25: 25-1} ; do
7
+ [ ${A[j]} -ge ${A[i]} ] && continue
8
+ for k in ${idx[@]: j+1: i-j-1} ; do
9
+ [[ $(( ${A[j]} + ${A[k]} )) == ${A[i]} ]] && b=break; $b
10
+ done
11
+ $b
12
+ done
13
+ [ " $b " = " :" ] && echo " 9A: line $i = ${A[i]} " && break
14
+ done
15
+
16
+ k=0; j=0; sum=${A[j++]}
17
+ while [ $sum != ${A[i]} ]; do
18
+ if [[ $sum -lt ${A[i]} ]]; then sum=$(( sum+ A[j++ ]))
19
+ elif [[ $sum -gt ${A[i]} ]]; then sum=$(( sum- A[k++ ]))
20
+ fi
21
+ [[ $j -ge $i ]] && echo NOT FOUND && break
22
+ done
23
+ IFS=$' \n '
24
+ B=($( echo " ${A[*]: k: j-k+1} " | sort -n) )
25
+ echo " 9B: $j ..$k = $(( B+ B[${# B[@]} - 1 ])) "
You can’t perform that action at this time.
0 commit comments