From af9cdf5b68393c98c38e6772fe1040b730400089 Mon Sep 17 00:00:00 2001
From: Orestis <orestis.malaspinas@pm.me>
Date: Wed, 29 Dec 2021 22:51:44 +0100
Subject: [PATCH] aded a few more exercises

---
 short_exercises/.gitignore |  1 +
 short_exercises/Makefile   | 39 +++++++++++++++++
 short_exercises/serie_1.md | 87 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 127 insertions(+)
 create mode 100644 short_exercises/.gitignore
 create mode 100644 short_exercises/Makefile

diff --git a/short_exercises/.gitignore b/short_exercises/.gitignore
new file mode 100644
index 0000000..a136337
--- /dev/null
+++ b/short_exercises/.gitignore
@@ -0,0 +1 @@
+*.pdf
diff --git a/short_exercises/Makefile b/short_exercises/Makefile
new file mode 100644
index 0000000..0725010
--- /dev/null
+++ b/short_exercises/Makefile
@@ -0,0 +1,39 @@
+PDFOPTIONS = -t pdf
+PDFOPTIONS += --pdf-engine xelatex
+
+MD=$(wildcard *.md) # Tous les fichiers .md
+PDF=$(MD:%.md=%.pdf) # Pour les fichier pdf on transforme .md -> .pdf
+MARKDOWN=$(MD:%.md=%.markdown) # Pour les fichier markdown on transforme .md -> .markdown
+
+all: $(PDF) # La cible par défaut (all) exécute les cibles %.pdf
+
+docker: docker-compose.yml
+	docker-compose run slides make all -k || true
+
+docker_clean: docker-compose.yml
+	docker-compose run slides make clean -k || true
+
+
+markdown: $(MARKDOWN) # La markdown les cibles %.markdown
+
+%.pdf: %.md 
+	pandoc -s $(OPTIONS) $(PDFOPTIONS) -o $@ $^
+
+%.markdown: %.md metadata.yaml yq
+	sed '1 { /^---/ { :a N; /\n---/! ba; d} }' $< > no_header
+	grep -v -F -x -f  no_header $< > header.yaml
+	echo "---" > tmp.yaml
+	./yq_linux_amd64 merge metadata.yaml header.yaml >> tmp.yaml
+	cat tmp.yaml no_header > $@
+	rm no_header header.yaml tmp.yaml
+
+yq: # On peut même télécharger un petit programme avec notre makefile
+	wget -nc https://github.com/mikefarah/yq/releases/download/3.4.1/yq_linux_amd64
+	chmod "u+x" yq_linux_amd64 
+
+deploy: all 
+	mkdir -p algo_cours
+	cp *.pdf algo_cours
+
+clean:
+	rm -f *.pdf *.markdown yq_linux_amd64*
diff --git a/short_exercises/serie_1.md b/short_exercises/serie_1.md
index f14df09..a1fd4d6 100644
--- a/short_exercises/serie_1.md
+++ b/short_exercises/serie_1.md
@@ -124,3 +124,90 @@ Exemples:
 "" -> "what is happening"
 ```
 
+## En majuscules
+
+Écrire une fonction qui prend une chaîne de caractères en entrée et retourne
+une chaîne de caractères où toutes les lettres sont mises en majuscule.
+
+Exemples: 
+
+```
+"Hello !" -> "hello !"
+"WHAT IS HAPPENING" -> "what is happening"
+"CSGO is not a game" -> "csgo is not a game"
+```
+
+## Inversion
+
+Écrire une fonction qui prend une chaîne de caractères en entrée et retourne
+une chaîne de caractères où on change la casse de toutes les lettres.
+
+Exemples: 
+
+```
+"Hello !" -> "hELLO !"
+"WHAT IS HAPPENING" -> "what is happening"
+"CSGO is not a game" -> "csgo IS NOT A GAME"
+```
+
+## Écrire bizarrement
+
+Écrire une fonction qui prend une chaîne de caractères en entrée et retourne
+une chaîne de caractères où à chaque caractère on change la casse (peu importe
+la casse de la chaîne en entrée) en commençant par une majuscule.
+
+Exemples: 
+
+```
+"Hello !" -> "HeLlo !"
+"WHAT IS HAPPENING" -> "WhAt Is HaPpEnInG"
+"CSGO is not a game" -> "CsGo Is NoT A GaMe"
+```
+
+## Transformer des caractères en nombres entiers
+
+Écrire une fonction qui prend une chaîne de caractères en entrée qui contient
+que des chiffres de `0` à `9` et la transforme en nombre (interdiction
+d'utiliser `atoi` évidemment).
+
+Exemples: 
+
+```
+"1234" -> 1234
+"012345" -> 12345
+"0000000" -> 0
+"-123" -> -123
+```
+
+## Nombres plus petits ou égaux
+
+Écrire une fonction qui prend deux chaînes de caractères en entrée, `lhs` et
+`rhs` respectivement et déterminant si `lhs <= rhs` où la règle `<=` est la
+comparaison des entiers représentés par `lhs` et `rhs` respectivement
+
+Exemples: 
+
+```
+"1234", "234" -> faux (1234 > 234)
+"1234", "12345" -> vrai (1234 < 12345)
+"1234", "1234" -> vrai (1234 == 1234)
+"1234", "00123" -> faux (1234 > 123)
+"-12345", "1234", "-12312" -> vrai (-12345 < 1234)
+```
+
+## Transformer des caractères en nombres à virgule
+
+Écrire une fonction qui prend une chaîne de caractères en entrée qui contient
+que des chiffres de `0` à `9` et au plus un `.` et la transforme en nombre à virgule (interdiction
+d'utiliser `atof` évidemment).
+
+Exemples: 
+
+```
+"1234.1" -> 1234.1
+"012345" -> 12345.0
+"0000.000" -> 0.0
+"-123.6" -> -123.6
+```
+
+
-- 
GitLab