diff --git a/src/C/newcow.c b/src/C/newcow.c new file mode 100644 index 0000000..c6edc16 --- /dev/null +++ b/src/C/newcow.c @@ -0,0 +1,12 @@ +#include + +int main() { + const char *cow = " ^__^\n" + " (oo)\\_______\n" + " (__)\\ )\\/\\\n" + " ||----w |\n" + " || ||\n"; + + printf("%s", cow); + return 0; +} diff --git a/src/bash_scripts/smart_cow.sh b/src/bash_scripts/smart_cow.sh index 4d8f5ce..ae4d415 100755 --- a/src/bash_scripts/smart_cow.sh +++ b/src/bash_scripts/smart_cow.sh @@ -1,12 +1,33 @@ -while :; do # on utilise ce code pour etre sur qu'il n'y a pas de biais sur la génération de nombres aléatoire car il y a plus de chance sinon de tomber - # sur un nombre entre 0-17 que sur un nombre entre 0-49 - ra=$RANDOM - ((ra < 32750)) && r1=$((ra % 50)) && break # On peut avoir aussi une chance infiniment petite que la boucle ne finisse jamais donc a voir.... -done +# Also support other operation as * / and - although / doesn't really work because it becames a float +# Also super weird with letters and doesn't seems to convert them to ascii ?? so weird... +# might be a bit dangerous cuz bc directly evaluate the expression passe in arg, so if there is any vulnerabilities like code injection in bc, then it will be a problem -while :; do # Pareil mais les valeures favorisée aurait été entre 0-25 - rb=$RANDOM - ((rb < 32742)) && r2=$((rb % 51)) && break -done -# on génère entre 0 et 50/49 pour ne pas dépasser les 2 characters limites pour les yeux -cowsay -e "$(($r1 + $r2))" "$r1 + $r2" +if [ $# -eq 0 ]; then + # Original random number generation if no argument + while :; do # on utilise ce code pour etre sur qu'il n'y a pas de biais sur la génération de nombres aléatoire car il y a plus de chance sinon de tomber + # sur un nombre entre 0-17 que sur un nombre entre 0-49 + ra=$RANDOM + ((ra < 32750)) && r1=$((ra % 50)) && break # On peut avoir aussi une chance infiniment petite que la boucle ne finisse jamais donc a voir.... + done + while :; do # Pareil mais les valeures favorisées aurait été entre 0-25 + rb=$RANDOM + ((rb < 32742)) && r2=$((rb % 51)) && break + done + result=$((r1 + r2)) + message="$r1 + $r2 = $result" +else + expression="$1" + result=$(echo "scale=2; $expression" | bc -l) + + message="$expression" +fi + +if [[ ${#result} -gt 2 ]]; then + echo "Note: Result has more than 2 digits - won't display in cow's eyes" +fi + +if [[ ${#result} -lt 2 ]]; then + echo "Note: Result has less than 2 digits - will render weirdly" +fi +# Max deux digit si plus -> truncate; si moins on a un rendu bizarre +cowsay -e "$result" "$message"