complete cow school scripts
Move bash scripts under src/bash_scripts, add college/university/smart cow implementations, and mark the completed TODO items.
This commit is contained in:
52
src/bash_scripts/cow_college.sh
Executable file
52
src/bash_scripts/cow_college.sh
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [[ $# -ne 1 ]]; then
|
||||
echo "usage: $0 <number>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! [[ "$1" =~ ^[0-9]+$ ]] || (($1 < 1)); then
|
||||
echo "error: argument must be a positive integer"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
n=$1
|
||||
|
||||
declare -A memo
|
||||
memo[1]=0
|
||||
memo[2]=1
|
||||
|
||||
result=0
|
||||
|
||||
fib() {
|
||||
local k=$1
|
||||
local a
|
||||
local b
|
||||
|
||||
if [[ -n "${memo[$k]:-}" ]]; then
|
||||
result=${memo[$k]}
|
||||
return
|
||||
fi
|
||||
|
||||
fib $((k - 1))
|
||||
a=$result
|
||||
|
||||
fib $((k - 2))
|
||||
b=$result
|
||||
|
||||
memo[$k]=$((a + b))
|
||||
result=${memo[$k]}
|
||||
}
|
||||
|
||||
for ((i = 1; i <= n; i++)); do
|
||||
fib "$i"
|
||||
value=$result
|
||||
|
||||
if ((i < n)); then
|
||||
printf '%s\n' "$value" | cowsay # il y a eu un peu de problèmes pour afficher correctement le nombre avec cowsay il attendait une sorte d'input ??
|
||||
sleep 1
|
||||
clear
|
||||
else
|
||||
printf '%s\n' "$value" | cowsay -e oo -T U
|
||||
fi
|
||||
done
|
||||
18
src/bash_scripts/cow_highschool.sh
Executable file
18
src/bash_scripts/cow_highschool.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
if [[ $# -ne 1 ]]; then
|
||||
echo "usage: $0 <number>"
|
||||
echo "please provide exactly one numeric argument"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! [[ "$1" =~ ^[0-9]+$ ]] || (("$1" < 1)); then
|
||||
echo "error: argument must be a positive integer"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
reset
|
||||
for ((i = 2; i < "$(($1 + 1))"; i++)); do
|
||||
cowsay "$((($i - 1) * ($i - 1)))"
|
||||
sleep 1
|
||||
clear
|
||||
done
|
||||
cowsay -e oo -T U "$(($1 * $1))"
|
||||
7
src/bash_scripts/cow_kindergarten.sh
Executable file
7
src/bash_scripts/cow_kindergarten.sh
Executable file
@@ -0,0 +1,7 @@
|
||||
reset # To avoid any terminal weirdness
|
||||
for i in {1..9}; do
|
||||
cowsay "$i"
|
||||
sleep 1
|
||||
clear # So that they don't stack up
|
||||
done
|
||||
cowsay -e oo -T U "10" # Cow that has oo eyes but U tongue
|
||||
18
src/bash_scripts/cow_primaryschool.sh
Executable file
18
src/bash_scripts/cow_primaryschool.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
if [[ $# -ne 1 ]]; then
|
||||
echo "usage: $0 <number>"
|
||||
echo "please provide exactly one numeric argument"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! [[ "$1" =~ ^[0-9]+$ ]] || (("$1" < 1)); then
|
||||
echo "error: argument must be a positive integer"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
reset
|
||||
for ((i = 2; i < "$(($1 + 1))"; i++)); do
|
||||
cowsay "$(($i - 1))"
|
||||
sleep 1
|
||||
clear
|
||||
done
|
||||
cowsay -e oo -T U "$1"
|
||||
44
src/bash_scripts/cow_university.sh
Executable file
44
src/bash_scripts/cow_university.sh
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [[ $# -ne 1 ]]; then
|
||||
echo "usage: $0 <number>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! [[ "$1" =~ ^[0-9]+$ ]] || (($1 < 2)); then
|
||||
echo "error: argument must be an integer >= 2"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
n=$1
|
||||
# On utilise le crible de Eratosthenes
|
||||
declare -a is_prime
|
||||
|
||||
for ((i = 0; i <= n; i++)); do
|
||||
is_prime[$i]=1
|
||||
done
|
||||
|
||||
is_prime[0]=0
|
||||
is_prime[1]=0
|
||||
|
||||
for ((p = 2; p * p <= n; p++)); do
|
||||
if ((is_prime[p] == 1)); then
|
||||
for ((multiple = p * p; multiple <= n; multiple += p)); do
|
||||
is_prime[$multiple]=0
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
last_prime=0
|
||||
|
||||
for ((i = 2; i <= (n - 1); i++)); do
|
||||
if ((is_prime[i] == 1)); then
|
||||
|
||||
sleep 1
|
||||
clear
|
||||
last_prime=$i
|
||||
printf '%s\n' "$i" | cowsay
|
||||
fi
|
||||
done
|
||||
reset # un peu sus comme façon de faire on verra pr le changer
|
||||
printf '%s\n' "$last_prime" | cowsay -e oo -T U
|
||||
12
src/bash_scripts/smart_cow.sh
Executable file
12
src/bash_scripts/smart_cow.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
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é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"
|
||||
Reference in New Issue
Block a user