Files
advent-of-code/2024/day-17/solution-2.sh

45 lines
1.0 KiB
Bash
Raw Normal View History

2024-12-17 15:48:25 +08:00
#!/usr/bin/env bash
FILE=$1
ITER=1
MACHINE_ITER=999
2024-12-17 17:09:19 +08:00
DEBUG=false
INCREMENT=1
TAIL_NUM=16
2024-12-17 15:48:25 +08:00
2024-12-18 12:17:06 +08:00
# Load registry values
2024-12-17 15:48:25 +08:00
REG_A=$(grep 'Register A:' "$FILE" | cut -f2 -d: )
REG_B=$(grep 'Register B:' "$FILE" | cut -f2 -d: )
REG_C=$(grep 'Register C:' "$FILE" | cut -f2 -d: )
2024-12-18 12:17:06 +08:00
# Rewrite registry A starting value
#REG_A=100000000000000
REG_A=164541160582800
2024-12-18 12:17:06 +08:00
# Load input string
2024-12-17 15:48:25 +08:00
read -r -a INPUT <<< "$(grep 'Program:' "$FILE" | cut -f2 -d: | tr ',' ' ' )"
INPUT_LEN=${#INPUT[@]}
printf "Registers A: %s B: %s C: %s\n" "$REG_A" "$REG_B" "$REG_C" >&2
#printf "Input: " >&2
#printf "%s " "${INPUT[@]}" >&2
#printf "\n" >&2
2024-12-17 15:48:25 +08:00
2024-12-17 17:09:19 +08:00
# Load machine operations
. machine.sh
2024-12-17 15:48:25 +08:00
2024-12-18 12:17:06 +08:00
# Iterate registry A until last nth digits are matched
while ! check_tail "$TAIL_NUM"
2024-12-17 15:48:25 +08:00
do
read -r -a OUTPUT <<< "$( execute_machine )"
printf "Register A: %s\n" "$REG_A"
printf "Output:\t"
2024-12-18 12:17:06 +08:00
printf "%s " "${OUTPUT[@]}"
printf "\n"
printf "Input:\t"
printf "%s " "${INPUT[@]}"
printf "\n"
(( REG_A+=INCREMENT))
#(( ITER-- ))
if [[ $ITER -eq 0 ]] ; then break ; fi
done