bash scripts done

This commit is contained in:
2026-04-26 19:41:31 +02:00
parent ea416d1a2e
commit 01f0b552ac
2 changed files with 54 additions and 2 deletions

View File

@@ -29,8 +29,8 @@
- [x] Cow says prime numbers up to `n`.
- [x] **`smart_cow`**
- [ ] Cow says a simple arithmetic expression (e.g., "3+11"), eyes show the result.
- [ ] **`crazy_cow`**
- [ ] Create a "crazy arithmetic cow" script with something unusual or complex.
- [x] **`crazy_cow`**
- [x] Create a "crazy arithmetic cow" script with something unusual or complex.
---

52
src/bash_scripts/crazy_cow.sh Executable file
View 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"