Last active
October 22, 2021 07:39
-
-
Save ouuan/16356cec86fe6603ed05948db8a135ec to your computer and use it in GitHub Desktop.
Do math in the terminal!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # add this in ~/.zshrc | |
| math() { | |
| local MATH_RESPONSE | |
| case $(($RANDOM % 3)) in | |
| 0) | |
| local MATH_A=$(($RANDOM % 10000)) | |
| local MATH_B=$(($RANDOM % 10000)) | |
| read "MATH_RESPONSE?$MATH_A + $MATH_B = " | |
| local MATH_ANSWER=$(($MATH_A + $MATH_B)) | |
| ;; | |
| 1) | |
| local MATH_A=$(($RANDOM % 100)) | |
| local MATH_B=$(($RANDOM % 100)) | |
| read "MATH_RESPONSE?$MATH_A * $MATH_B = " | |
| local MATH_ANSWER=$(($MATH_A * $MATH_B)) | |
| ;; | |
| 2) | |
| local MATH_NUMBER=$(($RANDOM % 500 + 1)) | |
| read "MATH_RESPONSE?The prime divisors of $MATH_NUMBER are (from small to big, separated by a single space) " | |
| local FACTORRESULT=$(factor $MATH_NUMBER) | |
| local MATH_ANSWER=${FACTORRESULT#$MATH_NUMBER: } | |
| ;; | |
| esac | |
| if [ "$MATH_RESPONSE" != "$MATH_ANSWER" ]; then | |
| cowsay "The answer is $MATH_ANSWER" | |
| false | |
| else | |
| true | |
| fi | |
| } | |
| domath() { | |
| local MATH_SCORE=0 | |
| while do | |
| local MATH_START_TIME=$(\date +%s%N) | |
| math | |
| if [[ $? != 0 ]] then | |
| printf "Score: %.3lf\n" $MATH_SCORE | |
| if [[ $MATH_HIGHEST_FILE_PATH == '' ]]; then | |
| MATH_HIGHEST_FILE_PATH="$HOME/.math_highest_score" | |
| fi | |
| MATH_HIGHEST=$(( $(\cat "$MATH_HIGHEST_FILE_PATH") )) | |
| if [[ $MATH_SCORE -gt MATH_HIGHEST ]]; then | |
| echo "New highest score!!!" | |
| echo $MATH_SCORE > "$MATH_HIGHEST_FILE_PATH" | |
| fi | |
| break | |
| else | |
| MATH_SCORE=$(($MATH_SCORE + 10000000000.0 / $(($(\date +%s%N) - $MATH_START_TIME + 1000000000)) )) | |
| fi | |
| done | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment