Skip to content

Instantly share code, notes, and snippets.

@henriqueboaventura
Created February 7, 2022 18:51
Show Gist options
  • Save henriqueboaventura/0faad852406da0d0c57e1f64ac86da4c to your computer and use it in GitHub Desktop.
Save henriqueboaventura/0faad852406da0d0c57e1f64ac86da4c to your computer and use it in GitHub Desktop.
url="https://gist.githubusercontent.com/cfreshman/a03ef2cba789d8cf00c08f767e0fad7b/raw/5d752e5f0702da315298a6bb5a771586d6ff445c/wordle-answers-alphabetical.txt"
words=($(curl -s $url | grep '^\w\w\w\w\w$' | tr '[a-z]' '[A-Z]'))
actual=${words[$[$RANDOM % ${#words[@]}]]}
end=false
guess_count=0
max_guess=6
left=ABCDEFGHIJKLMNOPQRSTUVWXYZ
if [[ $1 == "unlimit" ]]; then
max_guess=999999
fi
while [[ $end != true ]]; do
guess_count=$(( $guess_count + 1 ))
if [[ $guess_count -le $max_guess ]]; then
echo "Enter your guess ($guess_count / $max_guess):"
read guess
guess=$(echo $guess | tr '[a-z]' '[A-Z]')
if [[ " ${words[*]} " =~ " $guess " ]]; then
output="" remaining=""
if [[ $actual == $guess ]]; then
echo "You guessed right!"
for ((i = 0; i < ${#actual}; i++)); do
output+="\033[30;102m ${guess:$i:1} \033[0m" left=${left/${guess:$i:1}/\\033[30;102m${guess:$i:1}\\033[0m}
done
printf "$output\n"
end=true
else
for ((i = 0; i < ${#actual}; i++)); do
if [[ "${actual:$i:1}" != "${guess:$i:1}" ]]; then
remaining+=${actual:$i:1}
fi
done
for ((i = 0; i < ${#actual}; i++)); do
if [[ "${actual:$i:1}" != "${guess:$i:1}" ]]; then
if [[ "$remaining" == *"${guess:$i:1}"* ]]; then
output+="\033[30;103m ${guess:$i:1} \033[0m" left=${left/${guess:$i:1}/\\033[30;103m${guess:$i:1}\\033[0m} remaining=${remaining/"${guess:$i:1}"/}
else
output+="\033[30;107m ${guess:$i:1} \033[0m" left=${left/${guess:$i:1}/\\033[30;100m${guess:$i:1}\\033[0m}
fi
else
output+="\033[30;102m ${guess:$i:1} \033[0m" left=${left/${guess:$i:1}/\\033[30;102m${guess:$i:1}\\033[0m}
fi
done
printf "$output\n"
echo -e "$left"
fi
else
echo "Please enter a valid word with 5 letters!";
guess_count=$(( $guess_count - 1 ))
fi
else
echo "You lose! The word is:"
echo $actual
end=true
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment