diff --git a/wordle b/wordle index 98b4ef2..c1c8c9b 100755 --- a/wordle +++ b/wordle @@ -27,6 +27,7 @@ declare -gr INDENT=$'\e[1C' function main() { declare -g ANSWER declare -g POOL='QWERTYUIOPASDFGHJKLZXCVBNM' + declare -Ag YELLOWS ANSWER=$(select_random_word) set_options "$@" @@ -172,6 +173,7 @@ function retrive_guess() { [[ ${valid_guess} == 3 ]] && GUESS=$(retrive_guess "GREEN Issue") [[ ${valid_guess} == 4 ]] && GUESS=$(retrive_guess "YELLOW Issue") [[ ${valid_guess} == 5 ]] && GUESS=$(retrive_guess "POOL Issue") + [[ ${valid_guess} == 6 ]] && GUESS=$(retrive_guess "NEW Issue") echo -n "${GUESS^^}" } @@ -220,25 +222,21 @@ function hard_mode_check() { fi if [[ -n "${yellows[i]}" ]]; then - [[ "${yellows[i]}" == "${GUESS:i:1}" ]] && return 4 + [[ ! "${GUESS}" == *"${yellows[i]}"* ]] && return 4 fi + for (( r=row-1; r>=0; r-- )); do + CHAR="${GUESS:i:1}" + PREV_CHAR="${YELLOWS[$r,$i]}" + [[ "${CHAR}" == "${PREV_CHAR}" ]] && return 4 + done done + + return 0 } -function color_check() { - declare -r CHAR=$1 - declare -r c=$2 - declare -r r=$(( row-1 )) - - PREV_ROW="${BOARD[$r,$c]}" - PREV_CHAR="${PREV_ROW: -2:1}" - - [[ "${CHAR}" == "${PREV_CHAR}" ]] && return 0 || return 1 -} - function check_guess() { declare -r _guess=$1 declare -r _row=$2 @@ -266,7 +264,8 @@ function check_guess() { if [[ "${chars}" == *${_char}* ]]; then chars="${chars/${_char}/}" - yellows[c]="${_char}" + yellows[c]="${_char}" # volatile - stores previous row yellows + YELLOWS[$_row,$c]="${_char}" # stores all yellow from all rounds BOARD[$_row,$c]="${BOLD}${LETTER}${YELLOW} ${_char} " else POOL="${POOL/${_char}/_}"