]> git.sommitrealweird.co.uk Git - advent-of-code-2020.git/blobdiff - day4/count_valid_passports.sh
Add bash variants
[advent-of-code-2020.git] / day4 / count_valid_passports.sh
diff --git a/day4/count_valid_passports.sh b/day4/count_valid_passports.sh
new file mode 100644 (file)
index 0000000..17c7ffc
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+declare -a data
+cur_data=""
+seperator=""
+valid_count=0
+
+required_fields=(byr iyr eyr hgt hcl ecl pid)
+exec 3<input.txt
+
+while read -u 3 line; do
+    if [ "$line" = "" ]; then
+        data+=("$cur_data")
+        seperator=""
+        cur_data=""
+        continue
+    fi
+    cur_data="${cur_data}${seperator}$line"
+    seperator=" "
+done
+
+# on the last line, if cur_data isn't empty, add that to the array
+if [ "$cur_data" != "" ]; then
+    data+=("$cur_data")
+fi
+
+for (( i=0; i<${#data[@]}; i++ )); do
+    record="${data[$i]}"
+    declare -A kvp
+    for field in $record; do
+        key=${field%:*}
+        value=${field#*:}
+        kvp[$key]=$value
+    done
+    for field in ${required_fields[@]}; do
+        if ! [ ${kvp[$field]+a} ]; then
+            continue 2
+        fi
+    done
+    valid_count=$((valid_count+1))
+    unset kvp
+done
+
+echo "$valid_count valid entries"