dotfiles

my dotfiles.
Log | Files | Refs | README | LICENSE

randletter.sh (1350B)


      1 #!/bin/sh
      2 
      3 c=0
      4 challenge=1
      5 
      6 OPTS="hc:fr:"
      7 LONGOPTS="help,challenge:"
      8 
      9 parsed=$(getopt --options=$OPTS --longoptions=$LONGOPTS -- "$@")
     10 eval set -- "${parsed[@]}"
     11 
     12 while true; do
     13   case "$1" in
     14     -c|--challenge)
     15       c=1
     16       challenge=$2
     17       shift;;
     18 
     19     --) # end of arguments
     20       shift
     21       break
     22       ;;
     23 
     24     *)
     25       printf '%sn' "Error while parsing CLI options" 1>&2
     26       ;;
     27   esac
     28 
     29   shift
     30 done
     31 
     32 successes=0
     33 from=0
     34 til=0
     35 average=0
     36 
     37 if [ "$c" == "1" ]; then
     38   clear
     39   for i in {3..1}; do
     40     echo "$i"
     41     sleep 1
     42     clear
     43   done 
     44 fi
     45 
     46 for i in $(seq $challenge); do
     47   from=$(date "+%s")
     48 
     49   entry=$(cat $XDG_DATA_HOME/letters | shuf -n 1)
     50 
     51   echo $entry | awk '{ print $1 };'
     52   letter=$(echo $entry | awk '{ print $2 };')
     53   
     54   read user_input
     55   
     56   if [ "$letter" == "$user_input" ]; then
     57     echo "correcto!"
     58     successes=$((successes + 1))
     59   else
     60     actual=""
     61     for (( j=0; j<${#letter}; j++ )); do
     62       if [ "${letter:$j:1}" == "${user_input:$j:1}" ]; then
     63         actual="$actual${letter:$j:1}"
     64       else
     65         actual="$actuale[01;31m${letter:$j:1}e[0m"
     66       fi
     67     done
     68     echo -e $actual
     69   fi
     70 
     71   til=$(date "+%s")
     72   average=$((average + (til - from)))
     73 done
     74 
     75 if [ "$c" == "1" ]; then
     76   echo "average time: $((average/challenge)) s"
     77   echo "total time: $average s"
     78   echo "total: $successes / $challenge correct!"
     79 fi