diff --git a/short_exercises/.gitignore b/short_exercises/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..a1363379944a5745ceb49c0e493d80eb9335c79a --- /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 0000000000000000000000000000000000000000..0725010552e167f66e8d0c6e8f2df6cbd9e5fa64 --- /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 f14df09c6ecddd7ec1be5a5e660a3b6c3e6a6273..a1fd4d644367662b93da6cd3217ac1564cc34527 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 +``` + +