Working part 2. Added check_tail for digit matching.
This commit is contained in:
@ -1,31 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
FILE=$1
|
||||
ITER=99
|
||||
ITER=1
|
||||
MACHINE_ITER=999
|
||||
DEBUG=false
|
||||
INCREMENT=1
|
||||
TAIL_NUM=16
|
||||
|
||||
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: )
|
||||
#REG_A=100000000000000
|
||||
REG_A=164541160582800
|
||||
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
|
||||
#printf "Input: " >&2
|
||||
#printf "%s " "${INPUT[@]}" >&2
|
||||
#printf "\n" >&2
|
||||
|
||||
# Load machine operations
|
||||
. machine.sh
|
||||
|
||||
POINTER=0
|
||||
while [[ $POINTER -lt $INPUT_LEN ]]
|
||||
#while ! check_quine
|
||||
while ! check_tail "$TAIL_NUM"
|
||||
do
|
||||
OPCODE=${INPUT[$POINTER]}
|
||||
OPERAND=${INPUT[$POINTER+1]}
|
||||
read_opcode "$OPCODE" "$OPERAND"
|
||||
printf "Registers A : %s B: %s C : %s\n" "$REG_A" "$REG_B" "$REG_C" >&2
|
||||
printf "Pointer : %s\n" "$POINTER" >&2
|
||||
(( ITER-- ))
|
||||
if [[ $ITER -eq 0 ]] ; then break ;fi
|
||||
done | paste -s -d ","
|
||||
read -r -a OUTPUT <<< "$( execute_machine )"
|
||||
printf "Register A: %s\n" "$REG_A"
|
||||
printf "Output:\t"
|
||||
#printf "%s " "${OUTPUT[@]}"
|
||||
for i in "${OUTPUT[@]}"
|
||||
do
|
||||
printf "%s " "$i" # Print octal representation
|
||||
done
|
||||
printf "\n"
|
||||
printf "Input:\t"
|
||||
printf "%s " "${INPUT[@]}"
|
||||
printf "\n"
|
||||
(( REG_A+=INCREMENT))
|
||||
#(( ITER-- ))
|
||||
if [[ $ITER -eq 0 ]] ; then break ; fi
|
||||
done
|
||||
|
Reference in New Issue
Block a user