fix logic for hard mode and strict hard mode
Reviewed-on: #2
This commit was merged in pull request #2.
This commit is contained in:
1 parent
c925f66e4d
commit
9218601b52
1 file changed
+21
-17
@@ -41,8 +41,7 @@ function main() {
|
|||||||
for (( row=0; row<HEIGHT; row++ )); do
|
for (( row=0; row<HEIGHT; row++ )); do
|
||||||
declare GUESS
|
declare GUESS
|
||||||
GUESS=$(retrive_guess)
|
GUESS=$(retrive_guess)
|
||||||
check_guess "${GUESS}" "${row}"
|
check_guess "${GUESS}" "${row}" ; win=$?
|
||||||
win=$?
|
|
||||||
|
|
||||||
reveal_row "${row}"
|
reveal_row "${row}"
|
||||||
[[ $win == 5 ]] && echo -e "${CLEAR_DOWN}YOU WIN" && exit 0
|
[[ $win == 5 ]] && echo -e "${CLEAR_DOWN}YOU WIN" && exit 0
|
||||||
@@ -157,6 +156,9 @@ function retrive_guess() {
|
|||||||
|
|
||||||
[[ ${valid_guess} == 1 ]] && GUESS=$(retrive_guess "Not A Valid Word")
|
[[ ${valid_guess} == 1 ]] && GUESS=$(retrive_guess "Not A Valid Word")
|
||||||
[[ ${valid_guess} == 2 ]] && GUESS=$(retrive_guess "Not A Valid Guess")
|
[[ ${valid_guess} == 2 ]] && GUESS=$(retrive_guess "Not A Valid 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")
|
||||||
|
|
||||||
echo -n "${GUESS^^}"
|
echo -n "${GUESS^^}"
|
||||||
}
|
}
|
||||||
@@ -183,14 +185,15 @@ function hard_mode_check() {
|
|||||||
|
|
||||||
for (( i=0; i<WIDTH; i++ )); do
|
for (( i=0; i<WIDTH; i++ )); do
|
||||||
if [[ "${STRICT_HARD_MODE}" == 1 ]]; then
|
if [[ "${STRICT_HARD_MODE}" == 1 ]]; then
|
||||||
[[ "${POOL}" == *${GUESS:i:1}* ]] || return 2
|
[[ "${POOL}" == *${GUESS:i:1}* ]] || return 5
|
||||||
fi
|
fi
|
||||||
|
|
||||||
color_check "${GUESS:i:1}" $i && continue
|
if [[ -n "${greens[i]}" ]]; then
|
||||||
|
[[ "${greens[i]}" != "${GUESS:i:1}" ]] && return 3
|
||||||
if [[ "${yellows}" == *${GUESS:i:1}* ]]; then
|
fi
|
||||||
yellows="${yellows/${GUESS:i:1}/}"
|
|
||||||
color_check "${GUESS:i:1}" $i && return 2
|
if [[ -n "${yellows[i]}" ]]; then
|
||||||
|
[[ "${yellows[i]}" == "${GUESS:i:1}" ]] && return 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
done
|
done
|
||||||
@@ -213,10 +216,9 @@ function check_guess() {
|
|||||||
declare -r _guess=$1
|
declare -r _guess=$1
|
||||||
declare -r _row=$2
|
declare -r _row=$2
|
||||||
declare -r _answer="${ANSWER}"
|
declare -r _answer="${ANSWER}"
|
||||||
declare green_count=0
|
|
||||||
declare chars=""
|
declare chars=""
|
||||||
declare -g greens=""
|
|
||||||
declare -g yellows=""
|
declare -ga yellows=()
|
||||||
|
|
||||||
for (( i=0; i<WIDTH; i++ )); do
|
for (( i=0; i<WIDTH; i++ )); do
|
||||||
[[ "${_answer:i:1}" != "${_guess:i:1}" ]] && chars+=${_answer:i:1}
|
[[ "${_answer:i:1}" != "${_guess:i:1}" ]] && chars+=${_answer:i:1}
|
||||||
@@ -228,21 +230,23 @@ function check_guess() {
|
|||||||
declare _char=${_guess:$c:1}
|
declare _char=${_guess:$c:1}
|
||||||
|
|
||||||
if [[ "${_char}" == "${_answer:$c:1}" ]]; then
|
if [[ "${_char}" == "${_answer:$c:1}" ]]; then
|
||||||
green_count=$(( green_count+1 ))
|
greens[c]="${_char}"
|
||||||
greens+="${_char}"
|
|
||||||
BOARD[$_row,$c]="${BOLD}${LETTER}${GREEN} ${_char} "
|
BOARD[$_row,$c]="${BOLD}${LETTER}${GREEN} ${_char} "
|
||||||
[[ $green_count == 5 ]] && return 5
|
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${chars}" == *${_char}* ]]; then
|
if [[ "${chars}" == *${_char}* ]]; then
|
||||||
chars="${chars/${_char}/}"
|
chars="${chars/${_char}/}"
|
||||||
yellows+="${_char}"
|
yellows[c]="${_char}"
|
||||||
BOARD[$_row,$c]="${BOLD}${LETTER}${YELLOW} ${_char} "
|
BOARD[$_row,$c]="${BOLD}${LETTER}${YELLOW} ${_char} "
|
||||||
else
|
continue
|
||||||
POOL="${POOL/${_char}/}"
|
|
||||||
fi
|
fi
|
||||||
|
[[ " ${yellows[*]} " =~ ${_char} ]] && continue
|
||||||
|
[[ " ${greens[*]} " =~ ${_char} ]] && continue
|
||||||
|
POOL="${POOL/${_char}/_}"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
[[ "${#greens[*]}" == 5 ]] && return 5
|
||||||
}
|
}
|
||||||
|
|
||||||
function reveal_row() {
|
function reveal_row() {
|
||||||
|
|||||||
Reference in new issue
Block a user