bash scripts done
This commit is contained in:
52
src/bash_scripts/crazy_cow.sh
Executable file
52
src/bash_scripts/crazy_cow.sh
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Cette crazy cow écrit une suite de chiffres tels qu'ils sont lus à l'oral
|
||||
# exemple :
|
||||
# etape 1 : 1 (= un 1 )
|
||||
# etape 2 : 11 (= deux 1 )
|
||||
# etape 3 : 21 (= un 2 un 1)
|
||||
# etape 4 : 1211
|
||||
# ....
|
||||
|
||||
read -p "nombre n de répétitions de la suite : " repetitions
|
||||
|
||||
look_and_say() {
|
||||
local input="$1"
|
||||
local output=""
|
||||
local previous_number=""
|
||||
local n=0 # nombre de fois qu'on a vu le même nombre
|
||||
|
||||
local i
|
||||
for ((i = 0; i < ${#input}; i++)); do # on parcourt chaque chiffre de la chaine input
|
||||
|
||||
local pos_number="${input:$i:1}" # représente chiffre de l'input à la position i
|
||||
|
||||
if [ "$pos_number" == "$previous_number" ]; then
|
||||
((n++))
|
||||
else
|
||||
if [ $n -gt 0 ]; then
|
||||
output="$output$n$previous_number" # on écrit ce qu'on a compté jusqu'à présent
|
||||
fi
|
||||
|
||||
# fin de la boucle : on passe au chiffre suivant
|
||||
|
||||
previous_number="$pos_number"
|
||||
n=1
|
||||
|
||||
fi
|
||||
done
|
||||
|
||||
output="$output$n$previous_number"
|
||||
|
||||
echo "$output"
|
||||
|
||||
}
|
||||
|
||||
for ((etape = 1; etape <= repetitions; etape++)); do
|
||||
|
||||
current=$(look_and_say "$current")
|
||||
resultat="$resultat\n etape $etape : $current"
|
||||
|
||||
done
|
||||
|
||||
echo -e "$resultat" | cowsay -e "oo"
|
||||
Reference in New Issue
Block a user