diff --git a/subjects/abort.fr.md b/subjects/abort.fr.md deleted file mode 100644 index 94b837a7..00000000 --- a/subjects/abort.fr.md +++ /dev/null @@ -1,40 +0,0 @@ -## abort - -### Instructions - -Écrire une fonction qui retournes la médiane de 5 arguments. - -### Fonction attendue - -```go -func Abort(a, b, c, d, e int) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - middle := piscine.Abort(2, 3, 8, 5, 7) - fmt.Println(middle) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -5 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/activebits.fr.md b/subjects/activebits.fr.md deleted file mode 100644 index b3bbc65f..00000000 --- a/subjects/activebits.fr.md +++ /dev/null @@ -1,40 +0,0 @@ -## activebits - -### Instructions - -Écrire une fonction, `ActiveBits`, qui retourne le nombre de `bits` actifs (`bits` ayant la valeur 1) dans la représentation binaire d'un nombre entier. - -### Fonction attendue - -```go -func ActiveBits(n int) uint { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - nbits := piscine.ActiveBits(7) - fmt.Println(nbits) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -3 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/addprimesum.fr.md b/subjects/addprimesum.fr.md deleted file mode 100644 index 8c431d06..00000000 --- a/subjects/addprimesum.fr.md +++ /dev/null @@ -1,20 +0,0 @@ -## addprimesum - -### Instructions - -Écrire un programme qui prend un entier positif comme argument et qui affiche la somme de tous les nombres premiers inférieurs ou égaux à celui-ci, suivie d'un retour à la ligne (`'\n'`). - -- Si le nombre d'arguments est différent de 1, ou si l'argument n'est pas un nombre positif, le programme affiche `0` suivi d'un retour à la ligne. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test 5 -10 -student@ubuntu:~/[[ROOT]]/test$ ./test 7 -17 -student@ubuntu:~/[[ROOT]]/test$ ./test 5 7 -0 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/advancedsortwordarr.fr.md b/subjects/advancedsortwordarr.fr.md deleted file mode 100644 index c4fcb75e..00000000 --- a/subjects/advancedsortwordarr.fr.md +++ /dev/null @@ -1,43 +0,0 @@ -## advancedsortwordarr - -### Instructions - -Écrire une fonction `AdvancedSortWordArr` qui trie un tableau de `string`, basé sur la fonction `f` passée en paramètre. - -### Fonction attendue - -```go -func AdvancedSortWordArr(array []string, f func(a, b string) int) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - - result := []string{"a", "A", "1", "b", "B", "2", "c", "C", "3"} - piscine.AdvancedSortWordArr(result, piscine.Compare) - - fmt.Println(result) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -[1 2 3 A B C a b c] -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/alphacount.fr.md b/subjects/alphacount.fr.md deleted file mode 100644 index da478b4f..00000000 --- a/subjects/alphacount.fr.md +++ /dev/null @@ -1,44 +0,0 @@ -## alphacount - -### Instructions - -Write a function that counts only the letters of a `string` and that returns that count. -White spaces or any other characters should not be counted. - -The letters are only the ones from the latin alphabet. - -### Expected function - -```go -func AlphaCount(str string) int { - -} -``` - -### Usage - -Here is a possible program to test your function : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - str := "Hello 78 World! 4455 /" - nb := piscine.AlphaCount(str) - fmt.Println(nb) -} -``` - -And its output : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -10 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/alphamirror.fr.md b/subjects/alphamirror.fr.md deleted file mode 100644 index 0ebbe840..00000000 --- a/subjects/alphamirror.fr.md +++ /dev/null @@ -1,27 +0,0 @@ -## alphamirror - -### Instructions - -Écrire un programme nommé `alphamirror` qui prend une `string` comme argument et qui affiche cette `string` après remplacement de chaque caractère alphabétique avec son opposé. - -Les majuscules restent des majuscules, de même pour le minuscules, par exemple : - -'a' devient 'z', 'Z' devient 'A' -'d' devient 'w', 'M' devient 'N' - -Le résultat final sera suivi d'un retour à la ligne (`'\n'`). - -Si le nombre d'arguments est différent de 1, le programme affiche seulement un retour à la ligne (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/alphamirror$ go build -student@ubuntu:~/[[ROOT]]/alphamirror$ ./alphamirror "abc" -zyx -student@ubuntu:~/[[ROOT]]/alphamirror$ ./alphamirror "My horse is Amazing." | cat -e -Nb slihv rh Znzarmt.$ -student@ubuntu:~/[[ROOT]]/alphamirror$ ./alphamirror | cat -e -$ -student@ubuntu:~/[[ROOT]]/alphamirror$ -``` diff --git a/subjects/any.fr.md b/subjects/any.fr.md deleted file mode 100644 index 25fd46ad..00000000 --- a/subjects/any.fr.md +++ /dev/null @@ -1,49 +0,0 @@ -## any - -### Instructions - -Écrire une fonction `Any` qui retourne `true`, pour un tableau de `string` : - -- si, lorsque ce tableau de `string` est passé à travers une fonction `f`, au moins un element retourne `true`. - -### Fonction attendue - -```go -func Any(f func(string) bool, arr []string) bool { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - tab1 := []string{"Hello", "how", "are", "you"} - tab2 := []string{"This", "is", "4", "you"} - - result1 := piscine.Any(piscine.IsNumeric, tab1) - result2 := piscine.Any(piscine.IsNumeric, tab2) - - fmt.Println(result1) - fmt.Println(result2) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -false -true -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/appendrange.fr.md b/subjects/appendrange.fr.md deleted file mode 100644 index 66f0b91d..00000000 --- a/subjects/appendrange.fr.md +++ /dev/null @@ -1,47 +0,0 @@ -## appendrange - -### Instructions - -Écrire une fonction qui prend un `int` minimum et un `int` maximum comme paramètres. Cette fonction retourne une slice d'`int` avec toutes les valeurs comprises entre le minimum et le maximum. - -Le minimum est inclus, le maximum est exclu. - -Si le minimum est supérieur ou égal au maximum, une slice `nil` est retournée. - -`make` n'est pas autorisé pour cet exercice. - -### Fonction attendue - -```go -func AppendRange(min, max int) []int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - fmt.Println(piscine.AppendRange(5, 10)) - fmt.Println(piscine.AppendRange(10, 5)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -[5 6 7 8 9] -[] -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/atoi.fr.md b/subjects/atoi.fr.md deleted file mode 100644 index 44aca8e0..00000000 --- a/subjects/atoi.fr.md +++ /dev/null @@ -1,77 +0,0 @@ -## atoi - -### Instructions - -- Écrire une fonction qui reproduit le comportement de la fonction `Atoi` en Go. `Atoi` transforme un nombre représenté en `string` (chaîne de caractères) en `int` (entier). - -- `Atoi` retourne `0` si la `string` n'est pas considéré un nombre valide. Pour cet exercice des **`string` non valides seront testées!**. Certaines contiendront d'autres caractères que des chiffres. - -- Pour cet exercice la gestion des signes + ou - **doit être** prise en compte. - -- Cette fonction aura **seulement** à retourner l'`int` (entier). Pour cet exercice le retour d'erreur d'atoi de go n'est pas demandé. - -### Fonction attendue - -```go -func Atoi(s string) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - s := "12345" - s2 := "0000000012345" - s3 := "012 345" - s4 := "Hello World!" - s5 := "+1234" - s6 := "-1234" - s7 := "++1234" - s8 := "--1234" - - n := piscine.Atoi(s) - n2 := piscine.Atoi(s2) - n3 := piscine.Atoi(s3) - n4 := piscine.Atoi(s4) - n5 := piscine.Atoi(s5) - n6 := piscine.Atoi(s6) - n7 := piscine.Atoi(s7) - n8 := piscine.Atoi(s8) - - fmt.Println(n) - fmt.Println(n2) - fmt.Println(n3) - fmt.Println(n4) - fmt.Println(n5) - fmt.Println(n6) - fmt.Println(n7) - fmt.Println(n8) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -12345 -12345 -0 -0 -1234 --1234 -0 -0 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/atoibase.fr.md b/subjects/atoibase.fr.md deleted file mode 100644 index 096bca6a..00000000 --- a/subjects/atoibase.fr.md +++ /dev/null @@ -1,59 +0,0 @@ -## atoibase - -### Instructions - -Écrire une fonction qui prend un nombre `string` et sa base `string` en paramètres et retourne sa conversion en `int`. - -Si la base n'est pas valide elle retourne `0`: - -Règles de validité d'une base : - -- Une base doit contenir au moins 2 caractères. -- Chaque caractère d'une base doit être unique. -- Une base ne doit pas contenir les caractères `+` ou `-`. - -Seuls des nombres en `string` valides seront testés. - -La fonction **ne doit pas** gérer les nombres négatifs. - -### Fonction attendue - -```go -func AtoiBase(s string, base string) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - fmt.Println(piscine.AtoiBase("125", "0123456789")) - fmt.Println(piscine.AtoiBase("1111101", "01")) - fmt.Println(piscine.AtoiBase("7D", "0123456789ABCDEF")) - fmt.Println(piscine.AtoiBase("uoi", "choumi")) - fmt.Println(piscine.AtoiBase("bbbbbab", "-ab")) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -125 -125 -125 -125 -0 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/atoibaseprog.fr.md b/subjects/atoibaseprog.fr.md deleted file mode 100644 index 4af879de..00000000 --- a/subjects/atoibaseprog.fr.md +++ /dev/null @@ -1,69 +0,0 @@ -## atoibaseprog - -##**AVERTISSEMENT! TRÈS IMPORTANT!** - -Pour cet exercice une fonction sera testée **avec le main de l'examen**. Cependant l'étudiant **doit quand même** rendre un programme structuré: - -Cela signifie que: - -- Le package doit être nommé `package main`. -- Le code rendu doit avoir une fonction main déclarée(`func main()`) même si elle est vide. -- La fonction main déclarée doit **aussi passer** le `Restrictions Checker`(le testeur de fonctions illégales). Il est conseillé à l'étudiant de rendre une fonction main vide après ses tests finis. -- Toutes les autres régles sont les mêmes que pour un `programme`. - -### Instructions - -Écrire une fonction qui prend un nombre `string` et sa base `string` en paramètres et retourne sa conversion en `int`. - -Si la base n'est pas valide elle retourne `0`: - -Règles de validité d'une base : - -- Une base doit contenir au moins 2 caractères. -- Chaque caractère d'une base doit être unique. -- Une base ne doit pas contenir les caractères `+` ou `-`. - -Seuls des nombres en `string` valides seront testés. - -La fonction **ne doit pas** gérer les nombres négatifs. - -### Fonction attendue - -```go -func AtoiBase(s string, base string) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" -) - -func main() { - fmt.Println(AtoiBase("125", "0123456789")) - fmt.Println(AtoiBase("1111101", "01")) - fmt.Println(AtoiBase("7D", "0123456789ABCDEF")) - fmt.Println(AtoiBase("uoi", "choumi")) - fmt.Println(AtoiBase("bbbbbab", "-ab")) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/test$ go build -student@ubuntu:~/test$ ./test -125 -125 -125 -125 -0 -student@ubuntu:~/test$ -``` diff --git a/subjects/basicatoi.fr.md b/subjects/basicatoi.fr.md deleted file mode 100644 index 9a68092c..00000000 --- a/subjects/basicatoi.fr.md +++ /dev/null @@ -1,57 +0,0 @@ -## basicatoi - -### Instructions - -- Écrire une fonction qui reproduit le comportement de la fonction atoi en Go. Atoi transforme un nombre représenté en `string` (chaîne de caractères) en `int` (entier). - -- Atoi retourne `0` si la `string` n'est pas considéré un nombre valide. Pour cet exercice **seulement des** `string` **valides** seront testées. Elles ne contiendront que un ou plusieurs chiffres comme charact. - -- Pour cet exercice la gestion des signes `+` ou `-` ne doit pas être prise en compte. - -- Cette fonction aura **seulement** à retourner l'`int` (entier). Pour cet exercice le retour d'erreur d'atoi de go n'est pas demandé. - -### Fonction attendue - -```go -func BasicAtoi(s string) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - s := "12345" - s2 := "0000000012345" - s3 := "000000" - - n := piscine.BasicAtoi(s) - n2 := piscine.BasicAtoi(s2) - n3 := piscine.BasicAtoi(s3) - - fmt.Println(n) - fmt.Println(n2) - fmt.Println(n3) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -12345 -12345 -0 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/basicatoi2.fr.md b/subjects/basicatoi2.fr.md deleted file mode 100644 index 67e6a3b5..00000000 --- a/subjects/basicatoi2.fr.md +++ /dev/null @@ -1,62 +0,0 @@ -## basicatoi2 - -### Instructions - -- Écrire une fonction qui reproduit le comportement de la fonction atoi en Go. Atoi transforme un nombre représenté en `string` (chaîne de caractères) en `int` (entier). - -- Atoi retourne `0` si la `string` n'est pas considérée comme un nombre valide. Pour cet exercice des **`string` non valides seront testées!**. Certaines contiendront d'autres caractères que des chiffres. - -- Pour cet exercice la gestion des signes `+` ou `-` ne doit pas être prise en compte. - -- Cette fonction aura **seulement** à retourner l'`int` (entier). Pour cet exercice le retour d'erreur d'atoi de go n'est pas demandé. - -### Fonction attendue - -```go -func BasicAtoi2(s string) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - s := "12345" - s2 := "0000000012345" - s3 := "012 345" - s4 := "Hello World!" - - n := piscine.BasicAtoi2(s) - n2 := piscine.BasicAtoi2(s2) - n3 := piscine.BasicAtoi2(s3) - n4 := piscine.BasicAtoi2(s4) - - fmt.Println(n) - fmt.Println(n2) - fmt.Println(n3) - fmt.Println(n4) - -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -12345 -12345 -0 -0 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/basicjoin.fr.md b/subjects/basicjoin.fr.md deleted file mode 100644 index 4a4b1a65..00000000 --- a/subjects/basicjoin.fr.md +++ /dev/null @@ -1,40 +0,0 @@ -## basicjoin - -### Instructions - -Écrire une fonction qui retourne la concaténation de toutes les `string` d'un slice de `string` passées en paramètres. - -### Fonction attendue - -```go -func BasicJoin(strs []string) string { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - toConcat := []string{"Hello!", " How", " are", " you?"} - fmt.Println(piscine.BasicJoin(toConcat)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -Hello! How are you? -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/boolean.fr.md b/subjects/boolean.fr.md deleted file mode 100644 index 35314bf7..00000000 --- a/subjects/boolean.fr.md +++ /dev/null @@ -1,50 +0,0 @@ -## boolean - -### Instructions - -Créer un fichier `.go`. - -- Le code ci-dessous doit être copié dans ce fichier. - -- Les changements nécéssaires doivent être appliqués pour que le programme fonctionne. - -- Le programme doit être rendu dans un dossier nommé `boolean`. - -### Code à copier - -```go -func printStr(str string) { - arrayStr := []rune(str) - - for i := 0; i < len(arrayStr); i++ { - z01.PrintRune(arrayStr[i]) - } - z01.PrintRune('\n') -} - -func isEven(nbr int) boolean { - if even(nbr) == 1 { - return yes - } else { - return no - } -} - -func main() { - if isEven(lengthOfArg) == 1 { - printStr(EvenMsg) - } else { - printStr(OddMsg) - } -} -``` - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/boolean$ go build -student@ubuntu:~/[[ROOT]]/boolean$ ./boolean "not" "odd" -I have an even number of arguments -student@ubuntu:~/[[ROOT]]/boolean$ ./boolean "not even" -I have an odd number of arguments -``` diff --git a/subjects/brackets.fr.md b/subjects/brackets.fr.md deleted file mode 100644 index 072828af..00000000 --- a/subjects/brackets.fr.md +++ /dev/null @@ -1,27 +0,0 @@ -## brackets - -### Instructions - -Écrire un programme qui prend un nombre indéfini de `string` en arguments. Pour chaque argument, si l'expression est correctement "entre parenthèses" (bracketed), le programme affiche sur la sortie standard `OK` suivi d'un retour à la ligne (`'\n'`), autrement il affiche `Error` suivi d'un retour à la ligne. - -Les symboles considérés comme des parenthèses sont `(` et `)`, les crochets `[` et `]` et les accolades `{` et `}`. Tout autre symbole est simplement ignoré. - -Une parenthèse ouvrante doit toujours être fermée par la parenthèse correspondante dans l'ordre correct. Une `string` qui ne contient aucune parenthèse est considérée comme une `string` correctement "entre parenthèses". - -Si il n'y a pas d'argument, le programme affiche seulement un retour à la ligne. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/brackets$ go build -student@ubuntu:~/[[ROOT]]/brackets$ ./brackets '(johndoe)' | cat -e -OK$ -student@ubuntu:~/[[ROOT]]/brackets$ ./brackets '([)]' | cat -e -Error$ -student@ubuntu:~/[[ROOT]]/brackets$ ./brackets '' '{[(0 + 0)(1 + 1)](3*(-1)){()}}' | cat -e -OK$ -OK$ -student@ubuntu:~/[[ROOT]]/brackets$ ./brackets | cat -e -$ -student@ubuntu:~/[[ROOT]]/brackets$ -``` diff --git a/subjects/brainfuck.fr.md b/subjects/brainfuck.fr.md deleted file mode 100644 index 32871e9b..00000000 --- a/subjects/brainfuck.fr.md +++ /dev/null @@ -1,35 +0,0 @@ -## brainfuck - -### Instructions - -Écrire un program interpréteur du `Brainfuck`. -Le code source sera donné en premier paramètre. -Le code sera toujours valide, avec moins de 4096 opérations. -Le `Brainfuck` est un langage minimaliste. Il consiste en un slice de `byte` (octets) (dans cet exercise 2048 octets) tous initialisés à zéro, et avec un pointeur sur le premier octet. - -Chaque opérateur consiste en un seul caractère : - -- '>' incrémente le pointeur -- '<' décrémente le pointeur -- '+' incrémente le byte pointé -- '-' décrémente le byte pointé -- '.' affiche le byte pointé sur la sortie standard -- '[' se rend à son ']' correspondant si le byte pointé est 0 (début de la boucle) -- ']' se rend à son '[' correspondant si le byte pointé n'est pas 0 (fin de la boucle) - -Tout autre caractère est un commentaire. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/brainfuck$ go build -student@ubuntu:~/[[ROOT]]/brainfuck$ ./brainfuck "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>." | cat -e -Hello World!$ -student@ubuntu:~/[[ROOT]]/brainfuck$ ./brainfuck "+++++[>++++[>++++H>+++++i<<-]>>>++\n<<<<-]>>--------.>+++++.>." | cat -e -Hi$ -student@ubuntu:~/[[ROOT]]/brainfuck$ ./brainfuck "++++++++++[>++++++++++>++++++++++>++++++++++<<<-]>---.>--.>-.>++++++++++." | cat -e -abc$ -student@ubuntu:~/[[ROOT]]/brainfuck$ ./brainfuck | cat -e -$ -student@ubuntu:~/[[ROOT]]/brainfuck$ -``` diff --git a/subjects/btreeapplybylevel.fr.md b/subjects/btreeapplybylevel.fr.md deleted file mode 100644 index 5fa5f6dc..00000000 --- a/subjects/btreeapplybylevel.fr.md +++ /dev/null @@ -1,46 +0,0 @@ -## btreeapplybylevel - -### Instructions - -Écrire une fonction, `BTreeApplyByLevel`, qui applique la fonction donnée par `fn` à chacune des nodes de l'arbre donné par `root`. - -### Fonction attendue - -```go -func BTreeApplyByLevel(root *TreeNode, fn interface{}) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - root := &piscine.TreeNode{Data: "4"} - piscine.BTreeInsertData(root, "1") - piscine.BTreeInsertData(root, "7") - piscine.BTreeInsertData(root, "5") - piscine.BTreeApplyByLevel(root, fmt.Println) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -4 -1 -7 -5 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/btreeapplyinorder.fr.md b/subjects/btreeapplyinorder.fr.md deleted file mode 100644 index 2eba0075..00000000 --- a/subjects/btreeapplyinorder.fr.md +++ /dev/null @@ -1,47 +0,0 @@ -## btreeapplyinorder - -### Instructions - -Écrire une fonction qui applique une fonction en ordre (in order) à chaque élément de l'arbre (voir les "in order tree walks"). - -### Fonction attendue - -```go -func BTreeApplyInorder(root *TreeNode, f func(...interface{}) (int, error)) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - root := &piscine.TreeNode{Data: "4"} - piscine.BTreeInsertData(root, "1") - piscine.BTreeInsertData(root, "7") - piscine.BTreeInsertData(root, "5") - piscine.BTreeApplyInorder(root, fmt.Println) - -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -1 -4 -5 -7 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/btreeapplypostorder.fr.md b/subjects/btreeapplypostorder.fr.md deleted file mode 100644 index 3d0a2dc2..00000000 --- a/subjects/btreeapplypostorder.fr.md +++ /dev/null @@ -1,47 +0,0 @@ -## btreeapplypostorder - -### Instructions - -Écrire une fonction qui applique une fonction en post-ordre ("postorder walk") à chaque élément de l'arbre. - -### Fonction attendue - -```go -func BTreeApplyPostorder(root *piscine.TreeNode, f func(...interface{}) (int, error)) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine "." -) - -func main() { - root := &piscine.TreeNode{Data: "4"} - piscine.BTreeInsertData(root, "1") - piscine.BTreeInsertData(root, "7") - piscine.BTreeInsertData(root, "5") - BTreeApplyPostorder(root, fmt.Println) - -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/btreeinsertdata$ go build -student@ubuntu:~/[[ROOT]]/btreeinsertdata$ ./btreeinsertdata -1 -5 -7 -4 -student@ubuntu:~/[[ROOT]]/btreeinsertdata$ -``` diff --git a/subjects/btreeapplypreorder.fr.md b/subjects/btreeapplypreorder.fr.md deleted file mode 100644 index 3b8e6373..00000000 --- a/subjects/btreeapplypreorder.fr.md +++ /dev/null @@ -1,47 +0,0 @@ -## btreeapplypreorder - -### Instructions - -Écrire une fonction qui applique une fonction en pré-ordre ("preorder walk") à chaque élément de l'arbre. - -### Fonction attendue - -```go -func BTreeApplyPreorder(root *TreeNode, f func(...interface{}) (int, error)) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - root := &piscine.TreeNode{Data: "4"} - piscine.BTreeInsertData(root, "1") - piscine.BTreeInsertData(root, "7") - piscine.BTreeInsertData(root, "5") - piscine.BTreeApplyPreorder(root, fmt.Println) - -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -4 -1 -7 -5 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/btreedeletenode.fr.md b/subjects/btreedeletenode.fr.md deleted file mode 100644 index 91a8954c..00000000 --- a/subjects/btreedeletenode.fr.md +++ /dev/null @@ -1,58 +0,0 @@ -## btreedeletenode - -### Instructions - -Écrire une fonction, `BTreeDeleteNode`, qui efface `node` d'un arbre donné par `root`. - -L'arbre en résultant devra toujours suivre les règles des arbres de recherche binaires. - -### Fonction attendue - -```go -func BTreeDeleteNode(root, node *TreeNode) *TreeNode { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - root := &piscine.TreeNode{Data: "4"} - piscine.BTreeInsertData(root, "1") - piscine.BTreeInsertData(root, "7") - piscine.BTreeInsertData(root, "5") - node := piscine.BTreeSearchItem(root, "4") - fmt.Println("Before delete:") - piscine.BTreeApplyInorder(root, fmt.Println) - root = piscine.BTreeDeleteNode(root, node) - fmt.Println("After delete:") - piscine.BTreeApplyInorder(root, fmt.Println) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -Before delete: -1 -4 -5 -7 -After delete: -1 -5 -7 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/btreeinsertdata.fr.md b/subjects/btreeinsertdata.fr.md deleted file mode 100644 index 56083792..00000000 --- a/subjects/btreeinsertdata.fr.md +++ /dev/null @@ -1,57 +0,0 @@ -## btreeinsertdata - -### Instructions - -Écrire une fonction qui insère de la nouvelle donnée dans un arbre binaire en suivant les propriétés des arbres de recherche binaires. - -Les nodes doivent être définies comme ci-dessous : - -### Fonction attendue - -```go -type TreeNode struct { - Left, Right, Parent *TreeNode - Data string -} - -func BTreeInsertData(root *TreeNode, data string) *TreeNode { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - root := &piscine.TreeNode{Data: "4"} - piscine.BTreeInsertData(root, "1") - piscine.BTreeInsertData(root, "7") - piscine.BTreeInsertData(root, "5") - fmt.Println(root.Left.Data) - fmt.Println(root.Data) - fmt.Println(root.Right.Left.Data) - fmt.Println(root.Right.Data) - -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/btreeinsertdata$ go build -student@ubuntu:~/[[ROOT]]/btreeinsertdata$ ./btreeinsertdata -1 -4 -5 -7 -student@ubuntu:~/[[ROOT]]/btreeinsertdata$ -``` diff --git a/subjects/btreeisbinary.fr.md b/subjects/btreeisbinary.fr.md deleted file mode 100644 index 26ad752a..00000000 --- a/subjects/btreeisbinary.fr.md +++ /dev/null @@ -1,43 +0,0 @@ -## btreeisbinary - -### Instructions - -Écrire une fonction, `BTreeIsBinary`, qui retourne `true` seulement si l'arbre donné par `root` suit les propriétés des arbres de recherche binaires. - -### Fonction attendue - -```go -func BTreeIsBinary(root *TreeNode) bool { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - root := &piscine.TreeNode{Data: "4"} - piscine.BTreeInsertData(root, "1") - piscine.BTreeInsertData(root, "7") - piscine.BTreeInsertData(root, "5") - fmt.Println(piscine.BTreeIsBinary(root)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -true -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/btreelevelcount.fr.md b/subjects/btreelevelcount.fr.md deleted file mode 100644 index 20a18f92..00000000 --- a/subjects/btreelevelcount.fr.md +++ /dev/null @@ -1,44 +0,0 @@ -## btreelevelcount - -### Instructions - -Écrire une fonction, `BTreeLevelCount`, qui retourne le nombre de niveaux de l'arbre binaire. (la hauteur de l'arbre) - -### Fonction attendue - -```go -func BTreeLevelCount(root *TreeNode) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - - piscine ".." -) - -func main() { - root := &piscine.TreeNode{Data: "4"} - piscine.BTreeInsertData(root, "1") - piscine.BTreeInsertData(root, "7") - piscine.BTreeInsertData(root, "5") - fmt.Println(piscine.BTreeLevelCount(root)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -3 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/btreemax.fr.md b/subjects/btreemax.fr.md deleted file mode 100644 index 60d22364..00000000 --- a/subjects/btreemax.fr.md +++ /dev/null @@ -1,45 +0,0 @@ -## btreemax - -### Instructions - -Écrire une fonction, `BTreeMax`, qui retourne la node avec la valeur maximum de l'arbre donné par `root`. - -### Fonction attendue - -```go -func BTreeMax(root *TreeNode) *TreeNode { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - - piscine ".." -) - -func main() { - root := &piscine.TreeNode{Data: "4"} - piscine.BTreeInsertData(root, "1") - piscine.BTreeInsertData(root, "7") - piscine.BTreeInsertData(root, "5") - max := piscine.BTreeMax(root) - fmt.Println(max.Data) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -7 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/btreemin.fr.md b/subjects/btreemin.fr.md deleted file mode 100644 index 0161f187..00000000 --- a/subjects/btreemin.fr.md +++ /dev/null @@ -1,45 +0,0 @@ -## btreemin - -### Instructions - -Écrire une fonction, `BTreeMin`, qui retourne la node avec la valeur minimum de l'arbre donné par `root`. - -### Fonction attendue - -```go -func BTreeMin(root *TreeNode) *TreeNode { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - - piscine ".." -) - -func main() { - root := &piscine.TreeNode{Data: "4"} - piscine.BTreeInsertData(root, "1") - piscine.BTreeInsertData(root, "7") - piscine.BTreeInsertData(root, "5") - min := piscine.BTreeMin(root) - fmt.Println(min.Data) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -1 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/btreeprintroot.fr.md b/subjects/btreeprintroot.fr.md deleted file mode 100644 index 734d667b..00000000 --- a/subjects/btreeprintroot.fr.md +++ /dev/null @@ -1,47 +0,0 @@ -## btreeprintroot - -### Instructions - -Écrire une fonction qui affiche la valeur de node `root` d'un arbre binaire. -Les nodes doivent être définies comme ci-dessous: - -### Fonction attendue - -```go -type TreeNode struct { - left, right *TreeNode - data string -} - -func PrintRoot(root *TreeNode){ - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -func main() { - //rootNode initialized with the value "who" - //rootNode1 initialized with the value "are" - //rootNode2 initialized with the value "you" - printRoot(rootNode) - printRoot(rootNode1) - printRoot(rootNode2) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/printroot$ go build -student@ubuntu:~/[[ROOT]]/printroot$ ./printroot -who -are -you -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/btreesearchitem.fr.md b/subjects/btreesearchitem.fr.md deleted file mode 100644 index 9e0e97e3..00000000 --- a/subjects/btreesearchitem.fr.md +++ /dev/null @@ -1,73 +0,0 @@ -## btreesearchitem - -### Instructions - -Écrire une fonction qui cherche une node avec un élément de data égal à `elem` et qui retourne cette node. - -### Fonction attendue - -```go -func BTreeSearchItem(root *TreeNode, elem string) *TreeNode { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - root := &piscine.TreeNode{Data: "4"} - piscine.BTreeInsertData(root, "1") - piscine.BTreeInsertData(root, "7") - piscine.BTreeInsertData(root, "5") - selected := piscine.BTreeSearchItem(root, "7") - fmt.Print("Item selected -> ") - if selected != nil { - fmt.Println(selected.Data) - } else { - fmt.Println("nil") - } - - fmt.Print("Parent of selected item -> ") - if selected.Parent != nil { - fmt.Println(selected.Parent.Data) - } else { - fmt.Println("nil") - } - - fmt.Print("Left child of selected item -> ") - if selected.Left != nil { - fmt.Println(selected.Left.Data) - } else { - fmt.Println("nil") - } - - fmt.Print("Right child of selected item -> ") - if selected.Right != nil { - fmt.Println(selected.Right.Data) - } else { - fmt.Println("nil") - } -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -Item selected -> 7 -Parent of selected item -> 4 -Left child of selected item -> 5 -Right child of selected item -> nil -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/btreetransplant.fr.md b/subjects/btreetransplant.fr.md deleted file mode 100644 index c5a425d6..00000000 --- a/subjects/btreetransplant.fr.md +++ /dev/null @@ -1,49 +0,0 @@ -## btreetransplant - -### Instructions - -Afin de déplacer les sous-arbres dans l'arbre de recherche binaire, écrire une fonction, `BTreeTransplant`, qui remplace le sous-arbre commencé par `node` avec la node `rplc` dans l'arbre donné par `root`. - -### Fonction attendue - -```go -func BTreeTransplant(root, node, rplc *TreeNode) *TreeNode { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - root := &piscine.TreeNode{Data: "4"} - piscine.BTreeInsertData(root, "1") - piscine.BTreeInsertData(root, "7") - piscine.BTreeInsertData(root, "5") - node := piscine.BTreeSearchItem(root, "1") - replacement := &piscine.TreeNode{Data: "3"} - root = piscine.BTreeTransplant(root, node, replacement) - piscine.BTreeApplyInorder(root, fmt.Println) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -3 -4 -5 -7 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/capitalize.fr.md b/subjects/capitalize.fr.md deleted file mode 100644 index 1cd67916..00000000 --- a/subjects/capitalize.fr.md +++ /dev/null @@ -1,41 +0,0 @@ -## capitalize - -### Instructions - -Écrire une fonction qui met en majuscule la première lettre de chaque mot et en minuscule les autres lettres du reste du mot d'une `string`. - -Un mot est une suite de caractères **alphanumériques**. - -### Fonction attendue - -```go -func Capitalize(s string) string { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - fmt.Println(piscine.Capitalize("Hello! How are you? How+are+things+4you?")) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -Hello! How Are You? How+Are+Things+4you? -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/capitalizeprog.fr.md b/subjects/capitalizeprog.fr.md deleted file mode 100644 index 1ad465d5..00000000 --- a/subjects/capitalizeprog.fr.md +++ /dev/null @@ -1,24 +0,0 @@ -## capitalizeprog - -### Instructions - -Écrire un programme qui met en majuscule la première lettre de chaque mot et en minuscule les autres lettres du reste du mot d'une `string`. - -- Un mot est une suite de caractères **alphanumériques**. - -- Si il y a plus d'un argument le programme doit afficher `Too many arguments`. - -- Si il n'y a pas d'arguments le programme doit afficher un retour à la ligne (`'\n'`). - -### Utilisation : - -```console -student@ubuntu:~/capitalizeprog$ go build -student@ubuntu:~/capitalizeprog$ ./capitalizeprog "Hello! How are you? How+are+things+4you?" | cat -e -Hello! How Are You? How+Are+Things+4you?$ -student@ubuntu:~/capitalizeprog$ ./capitalizeprog Hello! How are you? | cat -e -Too many arguments$ -student@ubuntu:~/capitalizeprog$ ./capitalizeprog - -student@ubuntu:~/capitalizeprog$ -``` diff --git a/subjects/cat.fr.md b/subjects/cat.fr.md deleted file mode 100644 index 4629e309..00000000 --- a/subjects/cat.fr.md +++ /dev/null @@ -1,41 +0,0 @@ -## cat - -### Instructions - -Écrire un programme qui a le même comportement que la ligne de commande `cat`. - -- Les `options` ne doivent pas être gérés. - -- Si le programme est éxécuté sans arguments il doit prendre l'`input` et l'afficher. - -- Dans le dossier du programme créer deux fichiers nommés `quest8.txt` et `quest8T.txt`. - -- Copier dans le fichier `quest8.txt` la phrase suivante : - -`"Programming is a skill best acquired by pratice and example rather than from books" by Alan Turing` - -- Copier dans le fichier `quest8T.txt` la phrase suivante : - -`"Alan Mathison Turing was an English mathematician, computer scientist, logician, cryptanalyst. Turing was highly influential in the development of theoretical computer science, providing a formalisation of the concepts of algorithm and computation with the Turing machine, which can be considered a model of a general-purpose computer. Turing is widely considered to be the father of theoretical computer science and artificial intelligence."` - -- En cas d'erreur le programme doit afficher l'erreur. - -- Le programme doit être rendu dans un dossier nommé `cat`. - -### Utilisation: - -```console -student@ubuntu:~/[[ROOT]]/cat$ go build -student@ubuntu:~/[[ROOT]]/cat$ ./cat abc -open abc: no such file or directory -student@ubuntu:~/[[ROOT]]/cat$ ./cat quest8.txt -"Programming is a skill best acquired by pratice and example rather than from books" by Alan Turing -student@ubuntu:~/[[ROOT]]/cat$ ./cat -Hello -Hello -^C -student@ubuntu:~/[[ROOT]]/cat$ ./cat quest8.txt quest8T.txt -"Programming is a skill best acquired by pratice and example rather than from books" by Alan Turing - -"Alan Mathison Turing was an English mathematician, computer scientist, logician, cryptanalyst. Turing was highly influential in the development of theoretical computer science, providing a formalisation of the concepts of algorithm and computation with the Turing machine, which can be considered a model of a general-purpose computer. Turing is widely considered to be the father of theoretical computer science and artificial intelligence." -``` diff --git a/subjects/cl-camp1.fr.md b/subjects/cl-camp1.fr.md deleted file mode 100644 index 8ffabc99..00000000 --- a/subjects/cl-camp1.fr.md +++ /dev/null @@ -1,21 +0,0 @@ -## cl-camp1 - -### Instructions - -Une petite voix dans votre esprit vous dit: - -"Maintenant que tu sais qui tu es. Tu dois te souvenir de ce que tu peux faire..." - -Les instincts resurgissent... - -Mettez dans un fichier `mastertheLS` la ligne de commande qui: - -- listera les fichiers et dossiers dans le dossier courant. -- Ignorera les fichiers cachés, le "." et le "..". -- Separarera le resultat avec des virgules. -- Les triera pas ordre croissant de date de création. -- Placera un `/` en face des dossiers. - -### Indice - -Lisez le man... diff --git a/subjects/cl-camp2.fr.md b/subjects/cl-camp2.fr.md deleted file mode 100644 index 974f36b1..00000000 --- a/subjects/cl-camp2.fr.md +++ /dev/null @@ -1,17 +0,0 @@ -## cl-camp2 - -### Instructions - -"Continue l'entrainement ..." - -Créez un fichier `r`, qui affiche `R` sur une ligne quand la commande `cat` est exécutée. - -Une ligne est une suite de caractères précédant le caractère [fin de ligne](https://en.wikipedia.org/wiki/Newline) (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ cat -e r -R$ -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/cl-camp3.fr.md b/subjects/cl-camp3.fr.md deleted file mode 100644 index 558e16b6..00000000 --- a/subjects/cl-camp3.fr.md +++ /dev/null @@ -1,15 +0,0 @@ -## cl-camp3 - -### Instructions - -"commences à chercher ..." - -Créer un fichier `look`, qui cherchera et montrera, dans le répertoire courant et ses sous-répertoires, tous les fichiers qui: - -- commence avec `a` et, -- tous les fichiers qui se terminent avec `z` et, -- tous les fichiers qui commencent avec `z` et qui se finissent avec `a!`. - -### Indice - -Lisez le man de `find`... diff --git a/subjects/cl-camp4.fr.md b/subjects/cl-camp4.fr.md deleted file mode 100644 index 0b2305f6..00000000 --- a/subjects/cl-camp4.fr.md +++ /dev/null @@ -1,24 +0,0 @@ -## cl-camp4 - -### Instructions - -"quelqu'un de familier" - -Créer un fichier `myfamily.sh`, qui affichera la famille d'un individu (clef: relatives). - -- Les guillemets doivent être enlevés. - -- L'individu sera choisi en fonction de son ID qui sera contenu dans la variable d'environment HERO_ID. - -* Où chercher : https://[[DOMAIN]]/assets/superhero/all.json - -* Quoi utiliser : `curl`, `jq` et d'autres... - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ export HERO_ID=1 -student@ubuntu:~/[[ROOT]]/test$ ./myfamily.sh -Marlo Chandler-Jones (wife); Polly (aunt); Mrs. Chandler (mother-in-law); Keith Chandler, Ray Chandler, three unidentified others (brothers-in-law); unidentified father (deceased); Jackie Shorr (alleged mother; unconfirmed) -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/cl-camp5.fr.md b/subjects/cl-camp5.fr.md deleted file mode 100644 index 10595ab7..00000000 --- a/subjects/cl-camp5.fr.md +++ /dev/null @@ -1,25 +0,0 @@ -## cl-camp5 - -### Instructions - -"continues à chercher..." - -Créer un fichier `lookagain.sh`, qui cherchera et montrera, dans le répertoire courant et ses sous-répertoires, tous les fichiers qui: - -- qui finissent avec `.sh`. - -Cette commande montrera le nom des fichiers sans le`.sh`. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ ./lookagain.sh | cat -e -file1$ -file2$ -file3$ -student@ubuntu:~/[[ROOT]]/test$ -``` - -### Indice - -Un petit `cut`ter pourrait être utile... diff --git a/subjects/cl-camp6.fr.md b/subjects/cl-camp6.fr.md deleted file mode 100644 index 49f0dd57..00000000 --- a/subjects/cl-camp6.fr.md +++ /dev/null @@ -1,15 +0,0 @@ -## cl-camp6 - -### Instructions - -"Maintenant, fais ton inventaire" - -Créer un fichier `countfiles.sh`, qui affichera le nombre **(et seulement le nombre)** de fichiers réguliers et répertoires contenu dans le répertoire courant et ses sous-répertoires : - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ ./countfiles.sh | cat -e -12$ -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/cl-camp7.fr.md b/subjects/cl-camp7.fr.md deleted file mode 100644 index 3e5da1b8..00000000 --- a/subjects/cl-camp7.fr.md +++ /dev/null @@ -1,15 +0,0 @@ -## cl-camp7 - -### Instructions - -"Sois précis" - -Créer un fichier `"\?$*'ChouMi'*$?\"` qui contiendra "01" et **rien d'autre**. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ ls | cat -e -"\?$*'ChouMi'*$?\" $ -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/cl-camp8.fr.md b/subjects/cl-camp8.fr.md deleted file mode 100644 index 1bbe3842..00000000 --- a/subjects/cl-camp8.fr.md +++ /dev/null @@ -1,11 +0,0 @@ -## cl-camp8 - -### Instructions - -"Choisis ton équipement" - -écrire une ligne dans un fichier `skip.sh` qui affiche le résultat d'un `ls -l` qui saute 1 ligne sur 2, en commençant par la **première**. - -### Indice - -`awk` ou `sed` peuvent faire le travail. diff --git a/subjects/cl.fr.md b/subjects/cl.fr.md deleted file mode 100644 index ef81d490..00000000 --- a/subjects/cl.fr.md +++ /dev/null @@ -1,21 +0,0 @@ -## cl-camp1 - -### Instructions - -A little voice speaks in your head: - -"Now that you know who you are. You need to remember what you can do..." - -The instincts are coming back... - -Put in a file `mastertheLS` the command line that will: - -- list the files and folders of the current folder. -- Ignore the hidden files, the "." and the "..". -- Separates the results with commas. -- Order them by ascending order of creation date. -- Have the folders have a `/` in front of them. - -### Hint - -Read the man... diff --git a/subjects/cleanstr.fr.md b/subjects/cleanstr.fr.md deleted file mode 100644 index 5f7c17f8..00000000 --- a/subjects/cleanstr.fr.md +++ /dev/null @@ -1,28 +0,0 @@ -## cleanstr - -### Instructions - -Écrire un programme qui prend une `string`, et qui affiche cette `string` avec exactement: - -- un espace entre les mots. -- aucun espace ni de tabulation ni au début ni à la fin. -- le résultat avecsuivi d'un saut de ligne("`\n`"). - -Un "mot" est défini comme une partie de `string` délimité par soit des espaces/tabulations soit par le début/fin d'une `string`. - -Si le nombre d'arguments est différent de 1, ou si il n'y a pas de mots à afficher, alors le programme affiche un saut de ligne("`\n`"). - -### Utilisation : - -```console -student@ubuntu:~/[[ROOT]]/cleanstr$ go build -student@ubuntu:~/[[ROOT]]/cleanstr$ ./cleanstr "you see it's easy to display the same thing" | cat -e -you see it's easy to display the same thing$ -student@ubuntu:~/[[ROOT]]/cleanstr$ ./cleanstr " only it's harder " -only it's harder$ -student@ubuntu:~/[[ROOT]]/cleanstr$ ./cleanstr " how funny" "Did you hear Mathilde ?" -$ -student@ubuntu:~/[[ROOT]]/cleanstr$ ./cleanstr "" | cat -e -$ -student@ubuntu:~/[[ROOT]]/cleanstr$ -``` diff --git a/subjects/collatzcountdown.fr.md b/subjects/collatzcountdown.fr.md deleted file mode 100644 index 005b4d0c..00000000 --- a/subjects/collatzcountdown.fr.md +++ /dev/null @@ -1,42 +0,0 @@ -## collatzcountdown - -### Instructions - -Écrire une fonction, `CollatzCountdown`, qui retournes le nombre d'étapes nécéssaires pour atteindre 1 en utilisant le comptage de collatz. - -- Elle doit renvoyer `-1` si `start` est égal à 0 ou négatif. - -### Fonction attendue - -```go -func CollatzCountdown(start int) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - steps := piscine.CollatzCountdown(12) - fmt.Println(steps) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -10 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/comcheck.fr.md b/subjects/comcheck.fr.md deleted file mode 100644 index d0352491..00000000 --- a/subjects/comcheck.fr.md +++ /dev/null @@ -1,20 +0,0 @@ -## comcheck - -### Instructions - -écrire un programme `comcheck` qui affiche sur la sortie standard `Alert!!!` suivi d'un retour à la ligne (`'\n'`) si au moins un des arguments passé ne paramètre correspond aux `string`: - -- `01`, `galaxy` ou `galaxy 01`. - -- si aucun des paramètres correspond, le programme affiche rien. - -### Usage - -```console -student@ubuntu:~/[[ROOT]]/comcheck$ go build -student@ubuntu:~/[[ROOT]]/comcheck$ ./comcheck "I" "Will" "Enter" "the" "galaxy" -Alert!!! -student@ubuntu:~/[[ROOT]]/comcheck$ ./comcheck "galaxy 01" "do" "you" "hear" "me" -Alert!!! -student@ubuntu:~/[[ROOT]]/comcheck$ -``` diff --git a/subjects/commandments.fr.md b/subjects/commandments.fr.md deleted file mode 100644 index e2fe4082..00000000 --- a/subjects/commandments.fr.md +++ /dev/null @@ -1,114 +0,0 @@ ---- -tier: 0 -team: 1 -duration: 1 hour -objectives: reading the rules -skills: git, github, reading ---- - -## commandments - -A few basic principles to follow - -

- -

- -### The Commandements _(read them)_ - -- Le numérique est ta passion. - -- Ton objectif à 42 : développer ton talent et tes compétences pour le marché du numérique. - -- L’objectif de 42 pour toi : te faire accéder au marché de l’emploi, à une longue et pérenne carrière dans le numérique, et te faire progresser socialement. - -- L’ambition de 42 pour toi : être un pionnier du numérique de demain. - -- Il est de ta responsabilité de gérer ta progression : 42 te propose un parcours individualisé adapté à ton rythme. - -- Des challenges jalonnent ton parcours. 42 ne fournira aucun élément de solution. C’est ton rôle de chercher et trouver par toi-même ces solutions pour atteindre l’objectif. - -- Sois actif. N’attend pas que les choses se fassent pour toi. 42 est un parcours 100% pratique. - -- Sois autonome dans ton cursus. N’attend pas que l’on te dise quoi faire. - -- Sois collaboratif, autant sur les projets solos que les projets de groupe. Face aux challenges à resoudre, l’échange et le debat sont tes meilleures armes. - -- Ne "crois" pas. Sois sûr. Techniquement, relationnelement, organisationellement, administrativement. - -- Pour être sûr, teste, contrôle. - -- N’ai pas peur de te tromper, d’échouer. L’échec est une étape normale vers le succès. - -- Teste à nouveau. Collabore davantage pour tester davantage. - -- Ose. Le risque est de se tromper. Voir le commandement 12. - -- Sois rigoureux dans ton travail. - -- Sois investi dans ton cursus : 50 heures par semaine est un minimum. Ta capacité de travail est une valeur. L’école est ouverte 24h/24 et 7j/7. - -- Sois régulier dans ton travail. Un jour oui, un jour non, un coup nocturne, un coup diurne... le chaos t’empêche d’avancer. - -- Prévois un groupe de travail large et hétérogène pour y trouver facilement des idées neuves et des groupes de projet. - -- Pour tes collaborations et ton travail en groupe, privilégie des étudiants qui n’ont pas déjà la solution au problème. - -- Sois investi dans ton groupe de projet, et ne le laisse pas faire ton travail à ta place. - -- Ton groupe de projet est solidaire, son succès comme son échec est de la responsabilité de tous, et les conflits se règlent en interne. - -- Travaille à l’école. Faire du peer-learning, collaborer, cela demande d’être physiquement avec les autres. A distance cela ne fonctionne pas. - -- Implique toi dans les évaluations de tes projets. Elles te permettent de prendre du recul. - -- Implique toi dans tes évaluations des projets des autres. La qualité de la communauté en dépend. - -- Sois juste et teste rigoureusement tes projets comme ceux des autres en évaluation avec tes propres jeux de tests. - -- Joue pleinement le jeu de ta scolarité dans l’état d’esprit demandé, fait tous les exercices et projets demandés. - -- Ne cherche pas des biais et des failles dans le système. Tu vas fausser ta propre formation et ta valeur sur le marché. - -- Ne triche pas intentionellement. C’est amoral, cela contredit le commandement 12, et c’est du temps inutilement passé à ne pas développer tes compétences pour faire croire aux autres que tu sais coder alors que ce n’est pas le cas. - -- Ne rends pas un projet que tu ne serais pas capable de reproduire seul à huis clos. Même si c’est parfois involontaire, c’est aussi de la triche. - -- C’est pas pour tes parents que tu travailles, ni pour le staff. C’est pour toi. - -- Participe à la vie de la communauté, à son épanouissement, et sa qualité en sortie de formation. - -- Aide au respect de ces commandements par la communauté. - -- Sois bienveillant et empathique vis à vis de tes camarades comme des personnes avec qui tu interagis, échanges, débats. - -- N’ai pas peur du monde professionnel. - -- Respecte le matériel. Des consignes spécifiques sont données en ce sens. - -- Respecte les locaux. Des consignes spécifiques sont données en ce sens. - -- Respecte les gens, étudiants, staffs, partenaires, visiteurs. - -- Respecte la loi en vigueur dans le pays. - -- Respecte les lois et consignes en vigueur liées à la consommation d’alcool. - -- Respecte les lois et consignes en vigueur liées à la consommation de tabac, stupéfiants, ou produits assimilés. - -- N’hésite pas à interagir avec le staff, pour parler de tes problèmes, pour remonter des problèmes dans le cursus, pour contribuer au cursus. - -- Si tu t’interroges ou ne comprends pas nos choix pédagogiques, demande nous. On ne fait généralement rien au hasard. - -### Required - -You [clone](http://lmgtfy.com/?q=git+clone) your [fork](http://lmgtfy.com/?q=github+fork) of this [repository](http://lmgtfy.com/?q=git+repository) -and in it, you must create a file named `turn_in` () in which you write EXACTLY the following sentence ending by a line break. - -

- -

- -### Submiting your solution - -Your work should be commited and pushed in the master branch of your own fork of this repository. diff --git a/subjects/compact.fr.md b/subjects/compact.fr.md deleted file mode 100644 index 42bc8b4a..00000000 --- a/subjects/compact.fr.md +++ /dev/null @@ -1,69 +0,0 @@ -## compact - -### Instructions - -Écrire une fonction `Compact` qui prend un pointeur sur slice de `string` comme paramètre. -Cette fonction doit: - -- Retourner le nombre d'éléments avec des valeurs non-`nil` - -- Comprimer, c.à.d., effacer les éléments qui ont une valeur `nil` dans la slice. - -### Fonction attendue - -```go -func Compact(ptr *[]string) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - - piscine ".." -) - -const N = 6 - -func main() { - arr := make([]string, N) - arr[0] = "a" - arr[2] = "b" - arr[4] = "c" - - for _, v := range arr { - fmt.Println(v) - } - - fmt.Println("Size after compacting:", piscine.Compact(&arr)) - - for _, v := range arr { - fmt.Println(v) - } -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -a - -b - -c - -Size after compacting: 3 -a -b -c -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/compare.fr.md b/subjects/compare.fr.md deleted file mode 100644 index 67f08cab..00000000 --- a/subjects/compare.fr.md +++ /dev/null @@ -1,43 +0,0 @@ -## compare - -### Instructions - -Écrire une fonction qui se comporte comme la fonction [`Compare`](https://golang.org/pkg/strings/#Compare). - -### Fonction attendue - -```go -func Compare(a, b string) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - fmt.Println(piscine.Compare("Hello!", "Hello!")) - fmt.Println(piscine.Compare("Salut!", "lut!")) - fmt.Println(piscine.Compare("Ola!", "Ol")) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -0 --1 -1 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/compareprog.fr.md b/subjects/compareprog.fr.md deleted file mode 100644 index a3179ebb..00000000 --- a/subjects/compareprog.fr.md +++ /dev/null @@ -1,24 +0,0 @@ -## compareprog - -### Instructions - -Écrire un programme qui se comporte comme la fonction `Compare`. - -Ce programme affiche un nombre après avoir comparé deux `string` lexicalement. - -### Utilisation : - -```console -student@ubuntu:~/compareprog$ go build -student@ubuntu:~/compareprog$ ./compareprog a b | cat -e --1$ -student@ubuntu:~/compareprog$ ./compareprog a a | cat -e -0$ -student@ubuntu:~/compareprog$ ./compareprog b a | cat -e -1$ -student@ubuntu:~/compareprog$ ./compareprog b a d | cat -e -$ -student@ubuntu:~/compareprog$ ./compareprog | cat -e -$ -student@ubuntu:~/compareprog$ -``` diff --git a/subjects/concat.fr.md b/subjects/concat.fr.md deleted file mode 100644 index 948ef1de..00000000 --- a/subjects/concat.fr.md +++ /dev/null @@ -1,40 +0,0 @@ -## concat - -### Instructions - -Écrire une fonction qui retourne la concaténation de deux `string` passées en paramètres. - -### Fonction attendue - -```go -func Concat(str1 string, str2 string) string { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - fmt.Println(piscine.Concat("Hello!", " How are you?")) - -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -Hello! How are you? -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/concatparams.fr.md b/subjects/concatparams.fr.md deleted file mode 100644 index 01cfb074..00000000 --- a/subjects/concatparams.fr.md +++ /dev/null @@ -1,45 +0,0 @@ -## concatparams - -### Instructions - -Écrire une fonction qui prend les arguments en paramètres et les retournes dans une `string`. - -Les arguments doivent être **séparés** par un `\n`. - -### Fonction attendue - -```go -func ConcatParams(args []string) string { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - test := []string{"Hello", "how", "are", "you?"} - fmt.Println(piscine.ConcatParams(test)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -Hello -how -are -you? -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/convertbase.fr.md b/subjects/convertbase.fr.md deleted file mode 100644 index 545abdf8..00000000 --- a/subjects/convertbase.fr.md +++ /dev/null @@ -1,44 +0,0 @@ -## convertbase - -### Instructions - -Écrire une fonction qui retourne la convertion d'un nombre `string` d'une baseFrom `string` à une baseTo `string`. - -Seules des bases valides seront testées. - -Les nombres négatifs ne seront pas testés. - -### Fonction attendue - -```go -func ConvertBase(nbr, baseFrom, baseTo string) string { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - result := piscine.ConvertBase("101011", "01", "0123456789") - fmt.Println(result) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -43 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/countdown.fr.md b/subjects/countdown.fr.md deleted file mode 100644 index 86ba97e3..00000000 --- a/subjects/countdown.fr.md +++ /dev/null @@ -1,14 +0,0 @@ -## countdown - -### Instructions - -Écrire un programme qui affiche les chiffres dans l'ordre décroissant sur une seule ligne, suivi par un retour à la ligne (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -9876543210 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/countif.fr.md b/subjects/countif.fr.md deleted file mode 100644 index 591e99bf..00000000 --- a/subjects/countif.fr.md +++ /dev/null @@ -1,45 +0,0 @@ -## countif - -### Instructions - -Écrire une fonction `CountIf` qui retournes le nombre d'éléments d'un tableau de `string` pour lesquels la fonction `f` retourne `true`. - -### Fonction attendue - -```go -func CountIf(f func(string) bool, tab []string) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - tab1 := []string{"Hello", "how", "are", "you"} - tab2 := []string{"This","1", "is", "4", "you"} - answer1 := piscine.CountIf(piscine.IsNumeric, tab1) - answer2 := piscine.CountIf(piscine.IsNumeric, tab2) - fmt.Println(answer1) - fmt.Println(answer2) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -0 -2 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/createelem.fr.md b/subjects/createelem.fr.md deleted file mode 100644 index efae0c95..00000000 --- a/subjects/createelem.fr.md +++ /dev/null @@ -1,45 +0,0 @@ -## createelem - -### Instructions - -Écrire une fonction `CreateElem` qui crée un nouvel élément de type `Node`. - -### Fonction attendue et structure - -```go -type Node struct { - Data interface{} -} - -func CreateElem(n *Node, value int) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - n := &node{} - n.CreateElem(1234) - fmt.Println(n) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -&{1234} -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/disclaimer.fr.md b/subjects/disclaimer.fr.md deleted file mode 100644 index a79a45aa..00000000 --- a/subjects/disclaimer.fr.md +++ /dev/null @@ -1,10 +0,0 @@ -## **AVERTISSEMENT! TRÈS IMPORTANT!** - -Pour cet exercice une fonction sera testée **avec le main de l'examen**. Cependant l'étudiant **doit quand même** rendre un programme structuré: - -Cela signifie que: - -- Le package doit être nommé `package main`. -- Le code rendu doit avoir une fonction main déclarée(`func main()`) même si elle est vide. -- La fonction main déclarée doit **aussi passer** le `Restrictions Checker`(le testeur de fonctions illégales). Il est conseillé à l'étudiant de rendre une fonction main vide après ses tests finis. -- Toutes les autres régles sont les mêmes que pour un `programme`. diff --git a/subjects/displaya.fr.md b/subjects/displaya.fr.md deleted file mode 100644 index 0ca007b2..00000000 --- a/subjects/displaya.fr.md +++ /dev/null @@ -1,18 +0,0 @@ -## displaya - -### Instructions - -Écrire un programme qui prend une `string`, et qui affiche le premier caractère `a` qu'il trouve dedans, suivi par un retour à la ligne (`'\n'`). Si il n'y a pas de caractère `a` dans la `string`, le programme affiche juste un `a` suivi d'un retour à la ligne (`'\n'`). Si le nombre de paramètres n'est pas 1, le programme affiche un `a` suivi d'un retour à la ligne (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test "abc" -a -student@ubuntu:~/[[ROOT]]/test$ ./test "bcvbvA" -a -student@ubuntu:~/[[ROOT]]/test$ ./test "nbv" -a -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/displayalpham.fr.md b/subjects/displayalpham.fr.md deleted file mode 100644 index f36c8a67..00000000 --- a/subjects/displayalpham.fr.md +++ /dev/null @@ -1,14 +0,0 @@ -## displayalpham - -### Instructions - -Écrire un programme qui affiche l'alphabet, avec les lettres paires en majuscule, et les lettres impaires en minuscule, suivi d'un retour à la ligne (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/displayalpham$ go build -student@ubuntu:~/[[ROOT]]/displayalpham$ ./displayalpham | cat -e -aBcDeFgHiJkLmNoPqRsTuVwXyZ$ -student@ubuntu:~/[[ROOT]]/displayalpham$ -``` diff --git a/subjects/displayalrevm.fr.md b/subjects/displayalrevm.fr.md deleted file mode 100644 index a02be54d..00000000 --- a/subjects/displayalrevm.fr.md +++ /dev/null @@ -1,14 +0,0 @@ -## displayalrevm - -### Instructions - -Écrire un programme qui affiche l'alphabet à l'envers, avec les lettres paires en majuscule, et les lettres impaires en minuscule, suivi d'un retour à la ligne (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/displayalrevm$ go build -student@ubuntu:~/[[ROOT]]/displayalrevm$ ./displayalrevm | cat -e -zYxWvUtSrQpOnMlKjIhGfEdCbA$ -student@ubuntu:~/[[ROOT]]/displayalrevm$ -``` diff --git a/subjects/displayfile.fr.md b/subjects/displayfile.fr.md deleted file mode 100644 index 3460b566..00000000 --- a/subjects/displayfile.fr.md +++ /dev/null @@ -1,25 +0,0 @@ -## Display File - -### Instructions - -Écrire un programme qui affiche, sur la sortie standard, le contenu d'un fichier donné en argument. - -- Créer un fichier `quest8.txt` et écrire dedans la phrase `Almost there!!` - -- L'argument pour ce programme sera, dans ce cas, `quest8.txt`. - -- En cas d'erreur le programme doit afficher un des deux messages suivants de manière approprié: - - `File name missing`. - - `Too many arguments`. - -### Utilisation : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -File name missing -student@ubuntu:~/[[ROOT]]/test$ ./test quest8.txt main.go -Too many arguments -student@ubuntu:~/[[ROOT]]/test$ ./test quest8.txt -Almost there!! -``` diff --git a/subjects/displayfirstparam.fr.md b/subjects/displayfirstparam.fr.md deleted file mode 100644 index af723e46..00000000 --- a/subjects/displayfirstparam.fr.md +++ /dev/null @@ -1,17 +0,0 @@ -## displayfirstparam - -### Instructions - -Écrire un programme qui prend des `string` comme arguments, et qui affiche le premier argument. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test hello there -hello -student@ubuntu:~/[[ROOT]]/test$ ./test "hello there" how are you -hello there -student@ubuntu:~/[[ROOT]]/test$ ./test -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/displaylastparam.fr.md b/subjects/displaylastparam.fr.md deleted file mode 100644 index 5db93344..00000000 --- a/subjects/displaylastparam.fr.md +++ /dev/null @@ -1,19 +0,0 @@ -## displaylastparam - -### Instructions - -Écrire un programme qui prend des `string` comme arguments, et qui affiche le dernier argument. - -### Expected output - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test hello there -there -student@ubuntu:~/[[ROOT]]/test$ ./test "hello there" how are you -you -student@ubuntu:~/[[ROOT]]/test$ ./test "hello there" -hello there -student@ubuntu:~/[[ROOT]]/test$ ./test -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/displayz.fr.md b/subjects/displayz.fr.md deleted file mode 100644 index 6fd35f31..00000000 --- a/subjects/displayz.fr.md +++ /dev/null @@ -1,18 +0,0 @@ -## displayz - -### Instructions - -Écrire un programme qui prend une `string`, et qui affiche le premier caractère `z` qu'il trouve dedans, suivi par un retour à la ligne (`'\n'`). Si il n'y a pas de caractère `z` dans la `string`, le programme affiche juste un `z` suivi d'un retour à la ligne (`'\n'`). Si le nombre de paramètres n'est pas 1, le programme affiche un `z` suivi d'un retour à la ligne (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test "xyz" -z -student@ubuntu:~/[[ROOT]]/test$ ./test "bcvbvZ" -z -student@ubuntu:~/[[ROOT]]/test$ ./test "nbv" -z -student@ubuntu:~/[[ROOT]]/test$ ./test -``` diff --git a/subjects/divmod.fr.md b/subjects/divmod.fr.md deleted file mode 100644 index cb266582..00000000 --- a/subjects/divmod.fr.md +++ /dev/null @@ -1,50 +0,0 @@ -## divmod - -### Instructions - -- Écrire une fonction qui aura le format ci-dessous. - -### Fonction attendue - -```go -func DivMod(a int, b int, div *int, mod *int) { - -} -``` - -- Cette fonction divisera les int **a** et **b**. -- Le résultat de la division sera stocké dans l'int pointé par **div**. -- Le reste de cette division sera stocké dans l'int pointé par **mod**. - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - a := 13 - b := 2 - var div int - var mod int - piscine.DivMod(a, b, &div, &mod) - fmt.Println(div) - fmt.Println(mod) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -6 -1 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/doop.fr.md b/subjects/doop.fr.md deleted file mode 100644 index 5fe81bdd..00000000 --- a/subjects/doop.fr.md +++ /dev/null @@ -1,40 +0,0 @@ -## doop - -### Instructions - -Écrire un [programme](TODO-LINK) qui s'apelle `doop`. - -Le programme doit être utilisé avec trois arguments: - -- Une valeur -- Un opérateur -- Une autre valeur - -En cas d'opérateur invalide le programme affiche `0`. - -En cas de nombre invalide d'arguments le programme affiche rien. - -Le programme doit géré les opérations modulo et division par 0 comme dans les examples ci-dessous. - -`fmt.Print` est autorisé. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build doop.go -student@ubuntu:~/[[ROOT]]/test$ ./doop -student@ubuntu:~/[[ROOT]]/test$ ./doop 1 + 1 | cat -e -2$ -student@ubuntu:~/[[ROOT]]/test$ ./doop hello + 1 | cat -e -0$ -student@ubuntu:~/[[ROOT]]/test$ ./doop 1 p 1 | cat -e -0$ -student@ubuntu:~/[[ROOT]]/test$ ./doop 1 / 0 | cat -e -No division by 0$ -student@ubuntu:~/[[ROOT]]/test$ ./doop 1 % 0 | cat -e -No modulo by 0$ -student@ubuntu:~/[[ROOT]]/test$ ./doop 1 "*" 1 -1 -student@ubuntu:~/[[ROOT]]/test$ ./doop 1 "*" -1 --1 -``` diff --git a/subjects/eightqueens.fr.md b/subjects/eightqueens.fr.md deleted file mode 100644 index 46641de1..00000000 --- a/subjects/eightqueens.fr.md +++ /dev/null @@ -1,33 +0,0 @@ -## eightqueens - -### Instructions - -Écrire une [fonction](TODO-LINK) qui affiche toutes les solutions du [problème des huit dames](https://en.wikipedia.org/wiki/Eight_queens_puzzle). - -La récursion doit être utilisée pour résoudre ce problème. - -L'affichage sera quelque chose comme ça : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -15863724 -16837425 -17468253 -... -``` - -Chaque solution sera sur une ligne unique. -L'index du placement d'une reine commence à 1. -Elle se lit de gauche à droite et chaque chiffre est la position pour chacune des colonnes. -Les solutions seront affichées dans l'ordre croissant. - -### Fonction attendue - -```go -package main - -func EightQueens() { - -} -``` diff --git a/subjects/enigma.fr.md b/subjects/enigma.fr.md deleted file mode 100644 index 57cbf1d8..00000000 --- a/subjects/enigma.fr.md +++ /dev/null @@ -1,88 +0,0 @@ -## enigma - -### Instructions - -Écrire une fonction nommé `Enigma` qui prends des pointeurs comme arguments et qui interchanges leurs valeurs pour les cacher. -Cette fonction déplacera : - -- `a` dans `c`. -- `c` dans `d`. -- `d` dans `b`. -- `b` dans `a`. - -### Fonction attendue - -```go -func Enigma(a ***int, b *int, c *******int, d ****int) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - x := 5 - y := &x - z := &y - a := &z - - w := 2 - b := &w - - u := 7 - e := &u - f := &e - g := &f - h := &g - i := &h - j := &i - c := &j - - k := 6 - l := &k - m := &l - n := &m - d := &n - - fmt.Println(***a) - fmt.Println(*b) - fmt.Println(*******c) - fmt.Println(****d) - - student.Enigma(a, b, c, d) - - fmt.Println("After using Enigma") - fmt.Println(***a) - fmt.Println(*b) - fmt.Println(*******c) - fmt.Println(****d) - -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -5 -2 -7 -6 -After using Enigma -2 -6 -5 -7 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/expandstr.fr.md b/subjects/expandstr.fr.md deleted file mode 100644 index d2447329..00000000 --- a/subjects/expandstr.fr.md +++ /dev/null @@ -1,26 +0,0 @@ -## expandstr - -### Instructions - -Écrire un programme qui prend une `string` et qui l'affiche avec exactement 3 espaces entre chaque mot, sans espace ou tabulation ni au début ni à la fin. - -La `string` sera suivie d'un retour à la ligne (`'\n'`). - -Un mot est une suite de caractères alphanumériques. - -Si le nombre de paramètres n'est pas 1, ou si il n'y a pas de mot, le programme affiche un retour à la ligne. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/expandstr$ go build -student@ubuntu:~/[[ROOT]]/expandstr$ ./expandstr "you see it's easy to display the same thing" | cat -e -you see it's easy to display the same thing$ -student@ubuntu:~/[[ROOT]]/expandstr$ ./expandstr " only it's harder " | cat -e -only it's harder$ -student@ubuntu:~/[[ROOT]]/expandstr$ ./expandstr " how funny it is" "did you hear, Mathilde ?" | cat -e -$ -student@ubuntu:~/[[ROOT]]/expandstr$ ./expandstr | cat -e -$ -student@ubuntu:~/[[ROOT]]/expandstr$ -``` diff --git a/subjects/fibonacci.fr.md b/subjects/fibonacci.fr.md deleted file mode 100644 index 8d05b3ef..00000000 --- a/subjects/fibonacci.fr.md +++ /dev/null @@ -1,50 +0,0 @@ -## fibonacci - -### Instructions - -Écrire une fonction **récursive** qui renvoie la valeur de la suite de fibonacci correspondant à l'index passé en paramètre. - -La premiére valeur est à l'index `0`. - -La suite débute ainsi: 0, 1, 1, 2, 3 etc... - -Un index négatif renvoie `-1`. - -`for` est **interdit** pour cet exercice. - -### Fonction attendue - -```go -package piscine - -func Fibonacci(index int) int { - -} -``` - -### Utilisation - -Voici un éventuel `main.go` : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - arg1 := 4 - fmt.Println(piscine.Fibonacci(arg1)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$go build -student@ubuntu:~/[[ROOT]]/test$ ./test -3 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/findnextprime.fr.md b/subjects/findnextprime.fr.md deleted file mode 100644 index 1fe3a100..00000000 --- a/subjects/findnextprime.fr.md +++ /dev/null @@ -1,45 +0,0 @@ -## findnextprime - -### Instructions - -Écrire une fonction qui renvoie le premier nombre premier qui est égal ou supérieur à l'`int` passé en paramètre. - -La fonction devra être optimisée pour éviter les time-outs avec le testeur. - -### Fonction attendue - -```go -func FindNextPrime(nb int) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - arg1 := 5 - arg2 := 4 - fmt.Println(piscine.FindNextPrime(arg1)) - fmt.Println(piscine.FindNextPrime(arg2)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -5 -5 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/firebase-demo.fr.md b/subjects/firebase-demo.fr.md deleted file mode 100644 index e68fc092..00000000 --- a/subjects/firebase-demo.fr.md +++ /dev/null @@ -1 +0,0 @@ -## firebase-demo diff --git a/subjects/firstrune.fr.md b/subjects/firstrune.fr.md deleted file mode 100644 index 17b39e4e..00000000 --- a/subjects/firstrune.fr.md +++ /dev/null @@ -1,42 +0,0 @@ -## firstrune - -### Instructions - -Écrire une fonction qui retourne la première `rune` d'une `string`. - -### Fonction attendue - -```go -func FirstRune(s string) rune { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "github.com/01-edu/z01" - piscine ".." -) - -func main() { - z01.PrintRune(piscine.FirstRune("Hello!")) - z01.PrintRune(piscine.FirstRune("Salut!")) - z01.PrintRune(piscine.FirstRune("Ola!")) - z01.PrintRune('\n') -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -HSO -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/firstruneprog.fr.md b/subjects/firstruneprog.fr.md deleted file mode 100644 index 96902d14..00000000 --- a/subjects/firstruneprog.fr.md +++ /dev/null @@ -1,19 +0,0 @@ -## firstruneprog - -### Instructions - -Écrire un programme qui reçoit une `string` et qui retourne la première `rune` de cette `string`. - -### Utilisation : - -```console -student@ubuntu:~/[[ROOT]]/firstruneprog$ go build -student@ubuntu:~/[[ROOT]]/firstruneprog$ ./firstruneprog "this is not happening" -t -student@ubuntu:~/[[ROOT]]/firstruneprog$ ./firstruneprog "hello" | cat-e -h$ -student@ubuntu:~/[[ROOT]]/firstruneprog$ ./firstruneprog "this" "is" "not" "happening" -student@ubuntu:~/[[ROOT]]/firstruneprog$ -student@ubuntu:~/[[ROOT]]/firstruneprog$ ./firstruneprog -student@ubuntu:~/[[ROOT]]/firstruneprog$ -``` diff --git a/subjects/firstword.fr.md b/subjects/firstword.fr.md deleted file mode 100644 index 5bca5b64..00000000 --- a/subjects/firstword.fr.md +++ /dev/null @@ -1,26 +0,0 @@ -## firstword - -### Instructions - -Écrire un programme qui prend une `string` et qui affiche son premier mot, suivi d'un retour à la ligne (`'\n'`). - -- Un mot est une section de `string` délimité par des espace ou par le début/fin d'une `string`. - -- L'output sera suivi d'un retour à la ligne (`'\n'`). - -- Si le nombre de paramètres n'est pas 1, ou si il n'y a pas de mots, le programme affiche un retour à la ligne (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test "hello there" -hello -student@ubuntu:~/[[ROOT]]/test$ ./test "hello ......... bye" -hello -student@ubuntu:~/[[ROOT]]/test$ ./test - -student@ubuntu:~/[[ROOT]]/test$ ./test "hello" "there" - -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/fixthemain.fr.md b/subjects/fixthemain.fr.md deleted file mode 100644 index 8d7b97c0..00000000 --- a/subjects/fixthemain.fr.md +++ /dev/null @@ -1,48 +0,0 @@ -## Fix the Main - -### Instructions - -Réparer le programme ci-dessous. - -### Programme à réparer - -```go -package piscine - -func PrintStr(str string) { - arrayRune := []rune(str) - for _, s := range arrayRune { - z01.PrintRune(s) - } -} - -func CloseDoor(ptrDoor *Door) bool { - PrintStr("Door Closing...") - state = CLOSE - return true -} - -func IsDoorOpen(Door Door) { - PrintStr("is the Door opened ?") - return Door.state = OPEN -} - -func IsDoorClose(ptrDoor *Door) bool { - PrintStr("is the Door closed ?") -} - -func main() { - door := &Door{} - - OpenDoor(door) - if IsDoorClose(door) { - OpenDoor(door) - } - if IsDoorOpen(door) { - CloseDoor(door) - } - if door.state == OPEN { - CloseDoor(door) - } -} -``` diff --git a/subjects/flags.fr.md b/subjects/flags.fr.md deleted file mode 100644 index d703c8e2..00000000 --- a/subjects/flags.fr.md +++ /dev/null @@ -1,49 +0,0 @@ -## flags - -### Instructions - -Write a **program** that can have as arguments `--insert` (or `-i`), `--order` (or `-o`) and a `string`. - -This program should : - -- Insert the string given to the `--insert` (or `-i`), in the `string` argument, if given. -- Order the `string` argument (in ASCII order) if given the flag `--order` (or `-o`). -- In case there are no arguments or the flag `--help` (or `-h`) is given, it should print the options, as shown in the example. - -Example of output : - -```console -student@ubuntu:~/[[ROOT]]/flags$ go build -student@ubuntu:~/[[ROOT]]/flags$ ./flags --insert=4321 --order asdad -1234aadds -student@ubuntu:~/[[ROOT]]/flags$ ./flags --insert=4321 asdad -asdad4321 -student@ubuntu:~/[[ROOT]]/flags$ ./flags asdad -asdad -student@ubuntu:~/[[ROOT]]/flags$ ./flags --order 43a21 -1234a -student@ubuntu:~/[[ROOT]]/flags$ ./flags ---insert - -i - This flag inserts the string into the string passed as argument. ---order - -o - This flag will behave like a boolean, if it is called it will order the argument. -student@ubuntu:~/[[ROOT]]/flags$ -student@ubuntu:~/[[ROOT]]/flags$ ./flags -h ---insert - -i - This flag inserts the string into the string passed as argument. ---order - -o - This flag will behave like a boolean, if it is called it will order the argument. -student@ubuntu:~/[[ROOT]]/flags$ -student@ubuntu:~/[[ROOT]]/flags$ ./flags --help ---insert - -i - This flag inserts the string into the string passed as argument. ---order - -o - This flag will behave like a boolean, if it is called it will order the argument. -student@ubuntu:~/[[ROOT]]/flags$ -``` diff --git a/subjects/foreach.fr.md b/subjects/foreach.fr.md deleted file mode 100644 index 6f69a27b..00000000 --- a/subjects/foreach.fr.md +++ /dev/null @@ -1,37 +0,0 @@ -## foreach - -### Instructions - -Écrire une fonction `ForEach` qui, pour un tableau d'`int`, applique une fonction sur chaque éléments de ce tableau. - -### Fonction attendue - -```go -func ForEach(f func(int), arr []int) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import piscine ".." - -func main() { - arr := []int{1, 2, 3, 4, 5, 6} - piscine.ForEach(piscine.PutNbr, arr) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -123456 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/fprime.fr.md b/subjects/fprime.fr.md deleted file mode 100644 index 7dbb7f7b..00000000 --- a/subjects/fprime.fr.md +++ /dev/null @@ -1,34 +0,0 @@ -## fprime - -### Instructions - -Écrire un programme qui prend un `int` positif et qui affiche ses facteurs premiers sur la sortie standard, suivi d'un retour à la ligne (`'\n'`). - -- Les facteurs doivent être affichés en ordre croissant et séparés par `*`. - -- Si le nombre de paramètres est différent de 1, le programme affiche un retour à la ligne. - -- L'input (l'entrée), quand il y en a un, sera toujours valide. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test 225225 -3*3*5*5*7*11*13 -student@ubuntu:~/[[ROOT]]/test$ ./test 8333325 -3*3*5*5*7*11*13*37 -student@ubuntu:~/[[ROOT]]/test$ ./test 9539 -9539 -student@ubuntu:~/[[ROOT]]/test$ ./test 804577 -804577 -student@ubuntu:~/[[ROOT]]/test$ ./test 42 -2*3*7 -student@ubuntu:~/[[ROOT]]/test$ ./test a - -student@ubuntu:~/[[ROOT]]/test$ ./test 0 - -student@ubuntu:~/[[ROOT]]/test$ ./test 1 - -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/functions.fr.md b/subjects/functions.fr.md deleted file mode 100644 index c5ba5ff2..00000000 --- a/subjects/functions.fr.md +++ /dev/null @@ -1,3 +0,0 @@ -## functions - -This repository aggregate every functions of the Zone 01 organization diff --git a/subjects/gcd.fr.md b/subjects/gcd.fr.md deleted file mode 100644 index 9787b6cb..00000000 --- a/subjects/gcd.fr.md +++ /dev/null @@ -1,30 +0,0 @@ -## gcd - -### Instructions - -Écrire un programme qui prend deux `string` représentant deux entiers strictement positifs qui rentrent dans un `int`. - -Afficher leur plus grand diviseur commun suivi d'un retour à la ligne (`'\n'`). - -Si le nombre de paramètres est différent de 2, le programme affiche un retour à la ligne. - -Tous les arguments testés seront des `int` positifs. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/gcd$ go build -student@ubuntu:~/[[ROOT]]/gcd$ ./gcd 42 10 | cat -e -2$ -student@ubuntu:~/[[ROOT]]/gcd$ ./gcd 42 12 | cat -e -6$ -student@ubuntu:~/[[ROOT]]/gcd$ ./gcd 14 77 | cat -e -7$ -student@ubuntu:~/[[ROOT]]/gcd$ ./gcd 17 3 | cat -e -1$ -student@ubuntu:~/[[ROOT]]/gcd$ ./gcd | cat -e -$ -student@ubuntu:~/[[ROOT]]/gcd$ ./gcd 50 12 4 | cat -e -$ -student@ubuntu:~/[[ROOT]]/gcd$ -``` diff --git a/subjects/hello.fr.md b/subjects/hello.fr.md deleted file mode 100644 index f9fa9f50..00000000 --- a/subjects/hello.fr.md +++ /dev/null @@ -1,14 +0,0 @@ -## hello - -### Instructions - -Écrire un programme qui affiche "Hello World!" suivi d'un retour à la ligne (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -Hello World! -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/hiddenp.fr.md b/subjects/hiddenp.fr.md deleted file mode 100644 index 0f4b796b..00000000 --- a/subjects/hiddenp.fr.md +++ /dev/null @@ -1,26 +0,0 @@ -## hiddenp - -### Instructions - -Écrire un programme nommé `hiddenp` qui prend deux `string` et qui, si la première `string` est cachée dans la deuxième, affiche `1` suivi d'un retour à la ligne (`'\n'`), autrement il affiche `0` suivi d'un retour à la ligne. - -Considérons s1 et s2 comme étant des `string`. Il est considéré que s1 est cachée dans s2 si il est possbile de trouver chaque caractère de s1 dans s2, **dans le même ordre d'apparence que s1.** - -Si s1 est une `string` vide elle est considérée cachée dans n'importe quelle `string`. - -Si le nombre de paramètres est différent de 2, le programme affiche un retour à la ligne. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/hiddenp$ go build -student@ubuntu:~/[[ROOT]]/hiddenp$ ./hiddenp "fgex.;" "tyf34gdgf;'ektufjhgdgex.;.;rtjynur6" | cat -e -1$ -student@ubuntu:~/[[ROOT]]/hiddenp$ ./hiddenp "abc" "2altrb53c.sse" | cat -e -1$ -student@ubuntu:~/[[ROOT]]/hiddenp$ ./hiddenp "abc" "btarc" | cat -e -0$ -student@ubuntu:~/[[ROOT]]/hiddenp$ ./hiddenp | cat -e -$ -student@ubuntu:~/[[ROOT]]/hiddenp$ -``` diff --git a/subjects/index.fr.md b/subjects/index.fr.md deleted file mode 100644 index 28b64b12..00000000 --- a/subjects/index.fr.md +++ /dev/null @@ -1,43 +0,0 @@ -## index - -### Instructions - -Écrire une fonction qui se comporte comme la fonction [`Index`](https://golang.org/pkg/strings/#Index). - -### Fonction attendue - -```go -func Index(s string, toFind string) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - fmt.Println(piscine.Index("Hello!", "l")) - fmt.Println(piscine.Index("Salut!", "alu")) - fmt.Println(piscine.Index("Ola!", "hOl")) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -2 -1 --1 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/inter.fr.md b/subjects/inter.fr.md deleted file mode 100644 index f5aa5ff0..00000000 --- a/subjects/inter.fr.md +++ /dev/null @@ -1,20 +0,0 @@ -## inter - -### Instructions - -Écrire un programme qui prend deux `string` et qui affiche, sans doublons, les caractères qui apparaissent dans les deux `string`, dans l'ordre dans lequel ils apparaissent dans la première. - -- L'affichage sera suivi d'un retour à la ligne (`'\n'`). - -- Si le nombre d'arguments est différent de 2, le programme affiche un retour à la ligne (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test "padinton" "paqefwtdjetyiytjneytjoeyjnejeyj" -padinto -student@ubuntu:~/[[ROOT]]/test$ ./test ddf6vewg64f twthgdwthdwfteewhrtag6h4ffdhsd -df6ewg4 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/introduction.fr.md b/subjects/introduction.fr.md deleted file mode 100644 index e8e09175..00000000 --- a/subjects/introduction.fr.md +++ /dev/null @@ -1,45 +0,0 @@ -## Introduction - -### Instructions - -#### 1- get-ready - -Créer dans votre compte `git` le repository nommé `[[ROOT]]`. - -Une fois créé, cloner ce repository sur votre desktop. -Si votre nom d'utilisateur `git` était `choumi` voici la commande qui devrait être utilisé : - -`git clone https://[[DOMAIN]]/git/choumi/[[ROOT]]` - -Cette commande doit être adaptée avec **votre propre username**. - -Ce repository sera le dossier où tous les exercises doivent être uploadés. - -#### 2- set - -Une fois que le repository est créé, écrire votre premier programme shell nommé `hello.sh` - -Quand ce programme est éxécuté il doit afficher `Hello {username}!` -Où `{username}` est votre `username` - -##### Utilisation - -Si l'`{username}` est `choumi` : - -```console -user@host:~/[[ROOT]]$ ./hello.sh -Hello choumi! -user@host:~/[[ROOT]]$ -``` - -#### 3- go-say-hello - -Après que `hello.sh` s'exécute proprement, il doit être uploadé dans le repository avec les commandes ci-dessous : - -1. `git add hello.sh` -2. `git commit -m "My very first commit"` -3. `git push origin master` - -Une fois ces étapes appliquées, le fichier peut maintenant être soumis pour correction sur la platforme en cliquant le bouton `submit`. - -Cette action fera passer les tests sur le fichier rendu `hello.sh`. diff --git a/subjects/isalpha.fr.md b/subjects/isalpha.fr.md deleted file mode 100644 index f410a82a..00000000 --- a/subjects/isalpha.fr.md +++ /dev/null @@ -1,46 +0,0 @@ -## isalpha - -### Instructions - -Écrire une fonction qui retourne `true` si la `string` passée en paramètre contient seulement des caractères alphanumériques, et qui retourne `false` autrement. - -### Fonction attendue - -```go -func IsAlpha(str string) bool { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - fmt.Println(piscine.IsAlpha("Hello! How are you?")) - fmt.Println(piscine.IsAlpha("HelloHowareyou")) - fmt.Println(piscine.IsAlpha("What's this 4?")) - fmt.Println(piscine.IsAlpha("Whatsthis4")) - -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -false -true -false -true -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/islower.fr.md b/subjects/islower.fr.md deleted file mode 100644 index a0657d8d..00000000 --- a/subjects/islower.fr.md +++ /dev/null @@ -1,42 +0,0 @@ -## islower - -### Instructions - -Écrire une fonction qui retourne `true` si la `string` passée en paramètre contient seulement des caractères minuscules, et qui retourne `false` autrement. - -### Fonction attendue - -```go -func IsLower(str string) bool { - -} -``` - -### Utilisation - -Voici un éventuel programmes pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - fmt.Println(piscine.IsLower("hello")) - fmt.Println(piscine.IsLower("hello!")) - -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -true -false -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/isnegative.fr.md b/subjects/isnegative.fr.md deleted file mode 100644 index 3633b5fd..00000000 --- a/subjects/isnegative.fr.md +++ /dev/null @@ -1,40 +0,0 @@ -## isnegative - -### Instructions - -Écrire une fonction qui affiche `'T'` (true) sur une seule ligne si l'`int` passé en paramètre est négatif, sinon elle affiche `'F'` (false). - -### Fonction attendue - -```go -func IsNegative(nb int) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import piscine ".." - -func main() { - piscine.IsNegative(1) - piscine.IsNegative(0) - piscine.IsNegative(-1) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -F -F -T -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/isnumeric.fr.md b/subjects/isnumeric.fr.md deleted file mode 100644 index 6ff3b314..00000000 --- a/subjects/isnumeric.fr.md +++ /dev/null @@ -1,42 +0,0 @@ -## isnumeric - -### Instructions - -Écrire une fonction qui retourne `true` si la `string` passée en paramètre contient seulement des caractères numériques, et qui retourne `false` autrement. - -### Fonction attendue - -```go -func IsNumeric(str string) bool { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - fmt.Println(piscine.IsNumeric("010203")) - fmt.Println(piscine.IsNumeric("01,02,03")) - -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -true -false -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/ispowerof2.fr.md b/subjects/ispowerof2.fr.md deleted file mode 100644 index 257a0fa8..00000000 --- a/subjects/ispowerof2.fr.md +++ /dev/null @@ -1,28 +0,0 @@ -## ispowerof2 - -### Instructions - -Écrire un programme qui détermine si un nombre donné est une puissance de 2. - -Ce programme doit afficher `true` si le nombre donné est une puissance de 2, autrement il affiche `false`. - -- Si il y a plus d'un ou aucun argument le programme doit afficher un retour à la ligne (`'\n'`). - -- WSi il n'y a qu'un seul argument, ce sera toujours un int positif. - -### Usage : - -```console -student@ubuntu:~/ispowerof2$ go build -student@ubuntu:~/ispowerof2$ ./ispowerof2 2 | cat -e -true$ -student@ubuntu:~/ispowerof2$ ./ispowerof2 64 | cat -e -true$ -student@ubuntu:~/ispowerof2$ ./ispowerof2 513 | cat -e -false$ -student@ubuntu:~/ispowerof2$ ./ispowerof2 - -student@ubuntu:~/ispowerof2$ ./ispowerof2 64 1024 - -student@ubuntu:~/ispowerof2$ -``` diff --git a/subjects/isprime.fr.md b/subjects/isprime.fr.md deleted file mode 100644 index fb488387..00000000 --- a/subjects/isprime.fr.md +++ /dev/null @@ -1,43 +0,0 @@ -## isprime - -### Instructions - -Écrire une fonction qui renvoie `true` si l'`int` passé en paramètre est un nombre premier. Autrement elle renvoie `false`. - -La fonction devra être optimisée pour éviter les time-outs avec le testeur. - -### Fonction attendue - -```go -func IsPrime(nb int) bool { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - fmt.Println(piscine.IsPrime(5)) - fmt.Println(piscine.IsPrime(4)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -true -false -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/isprintable.fr.md b/subjects/isprintable.fr.md deleted file mode 100644 index cd886477..00000000 --- a/subjects/isprintable.fr.md +++ /dev/null @@ -1,42 +0,0 @@ -## isprintable - -### Instructions - -Écrire une fonction qui retourne `true` si la `string` passée en paramètre contient seulement des caractères majuscules, et qui retourne `false` autrement. - -### Fonction attendue - -```go -func IsPrintable(str string) bool { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - fmt.Println(piscine.IsPrintable("Hello")) - fmt.Println(piscine.IsPrintable("Hello\n")) - -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -true -false -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/issorted.fr.md b/subjects/issorted.fr.md deleted file mode 100644 index 54bfdbe0..00000000 --- a/subjects/issorted.fr.md +++ /dev/null @@ -1,51 +0,0 @@ -## issorted - -### Instructions - -Écrire une fonction `IsSorted` qui retourne `true` si la slice d'`int` est triée, et qui retourne `false` autrement. - -La fonction passée en paramètre retourne un `int` positive si `a` (le premier argument) est supérieur à `b`(le deuxième argument), elle retourne `0` si ils sont égaux et elle retourne un `int` négatif autrement. - -Pour faire vos tests, vous devez coder votre propre fonction `f`. - -### Fonction attendue - -```go -func IsSorted(f func(a, b int) int, tab []int) bool { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction (sans `f`) : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - tab1 := []int{0, 1, 2, 3, 4, 5} - tab2 := []int{0, 2, 1, 3} - - result1 := piscine.IsSorted(f, tab1) - result2 := piscine.IsSorted(f, tab2) - - fmt.Println(result1) - fmt.Println(result2) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -true -false -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/isupper.fr.md b/subjects/isupper.fr.md deleted file mode 100644 index 68199723..00000000 --- a/subjects/isupper.fr.md +++ /dev/null @@ -1,42 +0,0 @@ -## isupper - -### Instructions - -Écrire une fonction qui retourne `true` si la `string` passée en paramètre contient seulement des caractères majuscules, et qui retourne `false` autrement. - -### Fonction attendue - -```go -func IsUpper(str string) bool { - -} -``` - -### Utilisation - -Voici un éventuel [programme](TODO-LINK) pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - fmt.Println(piscine.IsUpper("HELLO")) - fmt.Println(piscine.IsUpper("HELLO!")) - -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -true -false -stude0t@ubuntu:~$ -``` diff --git a/subjects/iterativefactorial.fr.md b/subjects/iterativefactorial.fr.md deleted file mode 100644 index bb25fcc8..00000000 --- a/subjects/iterativefactorial.fr.md +++ /dev/null @@ -1,42 +0,0 @@ -## iterativefactorial - -### Instructions - -Écrire une fonction **itérative** qui renvoie la factorielle d'un `int` passé en paramètre. - -Les erreurs (valeurs non possibles ou overflows) renverront `0`. - -### Fonction attendue - -```go -func IterativeFactorial(nb int) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - arg := 4 - fmt.Println(piscine.IterativeFactorial(arg)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -24 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/iterativepower.fr.md b/subjects/iterativepower.fr.md deleted file mode 100644 index 6aba45db..00000000 --- a/subjects/iterativepower.fr.md +++ /dev/null @@ -1,44 +0,0 @@ -## iterativepower - -### Instructions - -Écrire une fonction **itérative** qui renvoie la puissance de deux `int` passés en paramètre. - -Les puissances négatives renverront `0`. Les overflows **ne doivent pas** être gérés. - -### Fonction attendue - -```go -func IterativePower(nb int, power int) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - - -func main() { - arg1 := 4 - arg2 := 3 - fmt.Println(piscine.IterativePower(arg1, arg2)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -64 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/itoa.fr.md b/subjects/itoa.fr.md deleted file mode 100644 index e6e0bad6..00000000 --- a/subjects/itoa.fr.md +++ /dev/null @@ -1,15 +0,0 @@ -## itoa - -### Instructions - -- Écrire une fonction qui reproduit le comportement de la fonction `Itoa` en Go. `Itoa` transforme un nombre représenté en `int` (entier) en `string` (chaîne de caractères). - -- Pour cet exercice la gestion des signes + ou - **doit être** prise en compte. - -## Fonction attendue - -```go -func Itoa(n int) string { - -} -``` diff --git a/subjects/itoabase.fr.md b/subjects/itoabase.fr.md deleted file mode 100644 index 30ed68b0..00000000 --- a/subjects/itoabase.fr.md +++ /dev/null @@ -1,24 +0,0 @@ -## itoabase - -### Instructions - -Écrire une fonction qui: - -- convertit une valeur `int` en `string` en utilisant la base spécifiée en argument -- et qui retourne cette `string` - -Cette base est exprimée comme un `int`, de 2 à 16. Les caractères compris dans la base sont les chiffres de 0 à 9, suivis des lettres majuscules de A à F. - -Par exemple, la base `4` sera équivalente à "0123" et la base `16` sera équivalente à "0123456789ABCDEF". - -Si la valeur est négative, la `string` résultante doit être précédée d'un signe moins `-`. - -Seuls des arguments valables seront testés. - -### Fonction attendue - -```go -func ItoaBase(value, base int) string { - -} -``` diff --git a/subjects/itoabaseprog.fr.md b/subjects/itoabaseprog.fr.md deleted file mode 100644 index 5bf1191a..00000000 --- a/subjects/itoabaseprog.fr.md +++ /dev/null @@ -1,35 +0,0 @@ -## itoabase - -##**AVERTISSEMENT! TRÈS IMPORTANT!** - -Pour cet exercice une fonction sera testée **avec le main de l'examen**. Cependant l'étudiant **doit quand même** rendre un programme structuré: - -Cela signifie que: - -- Le package doit être nommé `package main`. -- Le code rendu doit avoir une fonction main déclarée(`func main()`) même si elle est vide. -- La fonction main déclarée doit **aussi passer** le `Restrictions Checker`(le testeur de fonctions illégales). Il est conseillé à l'étudiant de rendre une fonction main vide après ses tests finis. -- Toutes les autres régles sont les mêmes que pour un `programme`. - -### Instructions - -Écrire une fonction qui: - -- convertit une valeur `int` en `string` en utilisant la base spécifiée en argument -- et qui retourne cette `string` - -Cette base est exprimée comme un `int`, de 2 à 16. Les caractères compris dans la base sont les chiffres de 0 à 9, suivis des lettres majuscules de A à F. - -Par exemple, la base `4` sera équivalente à "0123" et la base `16` sera équivalente à "0123456789ABCDEF". - -Si la valeur est négative, la `string` résultante doit être précédée d'un signe moins `-`. - -Seuls des arguments valables seront testés. - -### Fonction attendue - -```go -func ItoaBase(value, base int) string { - -} -``` diff --git a/subjects/join.fr.md b/subjects/join.fr.md deleted file mode 100644 index 6c36ae4a..00000000 --- a/subjects/join.fr.md +++ /dev/null @@ -1,40 +0,0 @@ -## join - -### Instructions - -Écrire une fonction qui retourne la concaténation de deux `string` **séparées** par le séparateur passées en paramètres. - -### Fonction attendue - -```go -func Join(strs []string, sep string) string{ - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - toConcat := []string{"Hello!", " How", " are", " you?"} - fmt.Println(piscine.Join(toConcat, ":")) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -Hello!: How: are: you? -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/lastrune.fr.md b/subjects/lastrune.fr.md deleted file mode 100644 index 2f30f71b..00000000 --- a/subjects/lastrune.fr.md +++ /dev/null @@ -1,42 +0,0 @@ -## lastrune - -### Instructions - -Écrire une fonction qui retourne la dernière `rune` d'une `string`. - -### Fonction attendue - -```go -func LastRune(s string) rune { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "github.com/01-edu/z01" - piscine ".." -) - -func main() { - z01.PrintRune(piscine.LastRune("Hello!")) - z01.PrintRune(piscine.LastRune("Salut!")) - z01.PrintRune(piscine.LastRune("Ola!")) - z01.PrintRune('\n') -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -!!! -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/lastruneprog.fr.md b/subjects/lastruneprog.fr.md deleted file mode 100644 index 73e9ecce..00000000 --- a/subjects/lastruneprog.fr.md +++ /dev/null @@ -1,19 +0,0 @@ -## lastruneprog - -### Instructions - -Écrire un programme qui reçoit une `string` en paramètre et qui retourne la dernière `rune` de la `string`. - -### Utilisation : - -```console -student@ubuntu:~/[[ROOT]]/firstruneprog$ go build -student@ubuntu:~/[[ROOT]]/firstruneprog$ ./firstruneprog "this is not happening" -g -student@ubuntu:~/[[ROOT]]/firstruneprog$ ./firstruneprog "hello" | cat -e -o$ -student@ubuntu:~/[[ROOT]]/firstruneprog$ ./firstruneprog "this" "is" "not" "happening" -student@ubuntu:~/[[ROOT]]/firstruneprog$ -student@ubuntu:~/[[ROOT]]/firstruneprog$ ./firstruneprog -student@ubuntu:~/[[ROOT]]/firstruneprog$ -``` diff --git a/subjects/lastword.fr.md b/subjects/lastword.fr.md deleted file mode 100644 index b7a1e4ee..00000000 --- a/subjects/lastword.fr.md +++ /dev/null @@ -1,28 +0,0 @@ -## lastword - -### Instructions - -Écrire un programme qui prend une `string` et qui affiche son dernier mot, suivi d'un retour à la ligne (`'\n'`). - -- Un mot est une section de `string` délimitée par des espaces ou par le début/fin d'une `string`. - -- L'output sera suivi d'un retour à la ligne (`'\n'`). - -- Si le nombre de paramètres est différent de 1, ou si il n'y a pas de mot, le programme affiche un retour à la ligne (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/lastword$ go build -student@ubuntu:~/[[ROOT]]/lastword$ ./lastword "FOR PONY" | cat -e -PONY$ -student@ubuntu:~/[[ROOT]]/lastword$ ./lastword "this ... is sparta, then again, maybe not" | cat -e -not$ -student@ubuntu:~/[[ROOT]]/lastword$ ./lastword " " | cat -e -$ -student@ubuntu:~/[[ROOT]]/lastword$ ./lastword "a" "b" | cat -e -$ -student@ubuntu:~/[[ROOT]]/lastword$ ./lastword " lorem,ipsum " | cat -e -lorem,ipsum$ -student@ubuntu:~/[[ROOT]]/lastword$ -``` diff --git a/subjects/listat.fr.md b/subjects/listat.fr.md deleted file mode 100644 index e84afc9a..00000000 --- a/subjects/listat.fr.md +++ /dev/null @@ -1,58 +0,0 @@ -## listat - -### Instructions - -Écrire une fonction `ListAt` qui prend un pointeur sur la liste `l` et un `int pos` comme paramètres. Cette fonction devra afficher la `NodeL` à la position `pos` de la liste chaînée `l`. - -- En cas d'erreur la fonction affichera `nil`. - -### Fonction et structure attendues - -```go -type NodeL struct { - Data interface{} - Next *NodeL -} - - -func ListAt(l *NodeL, pos int) *NodeL{ - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - link := &piscine.List{} - - piscine.ListPushBack(link, "hello") - piscine.ListPushBack(link, "how are") - piscine.ListPushBack(link, "you") - piscine.ListPushBack(link, 1) - - fmt.Println(piscine.ListAt(link.Head, 3).Data) - fmt.Println(piscine.ListAt(link.Head, 1).Data) - fmt.Println(piscine.ListAt(link.Head, 7)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -1 -how are - -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/listclear.fr.md b/subjects/listclear.fr.md deleted file mode 100644 index 5cbfab0e..00000000 --- a/subjects/listclear.fr.md +++ /dev/null @@ -1,68 +0,0 @@ -## listclear - -### Instructions - -Écrire une fonction `ListClear` qui efface toutes les `nodes` d'une liste chaînée `l`. - -- Indice: assigner le pointeur de la liste à `nil`. - -### Fonction et structure attendues - -```go -func ListClear(l *List) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - - piscine ".." -) - -type List = piscine.List -type Node = piscine.NodeL - -func PrintList(l *List) { - link := l.Head - for link != nil { - fmt.Print(link.Data, " -> ") - link = link.Next - } - fmt.Println(nil) -} - -func main() { - link := &List{} - - piscine.ListPushBack(link, "I") - piscine.ListPushBack(link, 1) - piscine.ListPushBack(link, "something") - piscine.ListPushBack(link, 2) - - fmt.Println("------list------") - PrintList(link) - piscine.ListClear(link) - fmt.Println("------updated list------") - PrintList(link) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -------list------ -I -> 1 -> something -> 2 -> -------updated list------ - -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/listfind.fr.md b/subjects/listfind.fr.md deleted file mode 100644 index 1ed1f1fe..00000000 --- a/subjects/listfind.fr.md +++ /dev/null @@ -1,70 +0,0 @@ -## listfind - -### Instructions - -Écrire une fonction `ListFind` qui retourne l'adresse de la première node dans la liste `l` qui est déterminée comme étant égale à `ref` par la fonction `CompStr`. - -- Pour cet exercice la fonction `CompStr` doit être utilisée. - -### Fonction et structure attendues - -```go -type NodeL struct { - Data interface{} - Next *NodeL -} - -type List struct { - Head *NodeL - Tail *NodeL -} - -func CompStr(a, b interface{}) bool { - return a == b -} - -func ListFind(l *List, ref interface{}, comp func(a, b interface{}) bool) *interface{} { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - link := &piscine.List{} - - piscine.ListPushBack(link, "hello") - piscine.ListPushBack(link, "hello1") - piscine.ListPushBack(link, "hello2") - piscine.ListPushBack(link, "hello3") - - found := piscine.ListFind(link, interface{}("hello2"), piscine.CompStr) - - fmt.Println(found) - fmt.Println(*found) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -0xc42000a0a0 -hello2 -student@ubuntu:~/[[ROOT]]/test$ -``` - -### Note - -- L'addresse peut être différente à chaque exécution du programme. diff --git a/subjects/listforeach.fr.md b/subjects/listforeach.fr.md deleted file mode 100644 index 729f85ab..00000000 --- a/subjects/listforeach.fr.md +++ /dev/null @@ -1,86 +0,0 @@ -## listforeach - -### Instructions - -Écrire une fonction `ListForEach` qui applique un fonction donnée en argument à la data contenue dans chacune des nodes d'une liste `l`. - -- La fonction donnée en argument doit avoir un pointeur comme argument: `l *List` - -- Copier les fonctions `Add2_node` et `Subtract3_node` dans le même fichier où la fonction `ListForEach` est définie. - -### Fonction et struture attendues - -```go -type NodeL struct { - Data interface{} - Next *NodeL -} - -type List struct { - Head *NodeL - Tail *NodeL -} - -func ListForEach(l *List, f func(*NodeL)) { -} - -func Add2_node(node *NodeL) { - switch node.Data.(type) { - case int: - node.Data = node.Data.(int) + 2 - case string: - node.Data = node.Data.(string) + "2" - } -} - -func Subtract3_node(node *NodeL) { - switch node.Data.(type) { - case int: - node.Data = node.Data.(int) - 3 - case string: - node.Data = node.Data.(string) + "-3" - } -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - link := &piscine.List{} - - piscine.ListPushBack(link, "1") - piscine.ListPushBack(link, "2") - piscine.ListPushBack(link, "3") - piscine.ListPushBack(link, "5") - - piscine.ListForEach(link, piscine.Add2_node) - - it := link.Head - for it != nil { - fmt.Println(it.Data) - it = it.Next - } -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -12 -22 -32 -52 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/listforeachif.fr.md b/subjects/listforeachif.fr.md deleted file mode 100644 index e2afd2e6..00000000 --- a/subjects/listforeachif.fr.md +++ /dev/null @@ -1,132 +0,0 @@ -## listforeachif - -### Instructions - -Écrire une fonction `ListForEachIf` qui applique un fonction donnée en argument à la data contenue dans certaines des nodes d'une liste `l`. - -- Cette fonction reçoit deux fonctions: - - - `f` est la fonction qui est appliqué à la node. - - - `cond` est une fonction qui retourne un `boolean` et qui sera utilisée pour déterminer si la fonction`f` doit être appliquée à la node. - -- La fonction donnée en argument doit avoir un pointeur `*NodeL` comme argument. - -### Fonction et structure attendues - -```go -type NodeL struct { - Data interface{} - Next *NodeL -} - -type List struct { - Head *NodeL - Tail *NodeL -} - -func IsPositive_node(node *NodeL) bool { - switch node.Data.(type) { - case int, float32, float64, byte: - return node.Data.(int) > 0 - case string, rune: - return false - } - return false -} - -func IsNegative_node(node *NodeL) bool { - switch node.Data.(type) { - case int, float32, float64, byte: - return node.Data.(int) > 0 - case string, rune: - return false - } - return false -} - -func IsNotNumeric_node(node *NodeL) bool { - switch node.Data.(type) { - case int, float32, float64, byte: - return false - case string, rune: - return true - } - return true -} - -func ListForEachIf(l *List, f func(*NodeL), cond func(*NodeL) bool) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - piscine ".." - "fmt" -) - -func PrintElem(node *piscine.NodeL) { - fmt.Println(node.Data) -} - -func StringToInt(node *piscine.NodeL) { - node.Data = 2 -} - -func PrintList(l *piscine.List) { - it := l.Head - for it != nil { - fmt.Print(it.Data, "->") - it = it.Next - } - fmt.Print("nil","\n") -} - -func main() { - link := &piscine.List{} - - piscine.ListPushBack(link, 1) - piscine.ListPushBack(link, "hello") - piscine.ListPushBack(link, 3) - piscine.ListPushBack(link, "there") - piscine.ListPushBack(link, 23) - piscine.ListPushBack(link, "!") - piscine.ListPushBack(link, 54) - - PrintList(link) - - fmt.Println() - fmt.Println("--------function applied--------") - piscine.ListForEachIf(link, PrintElem, piscine.IsPositive_node) - - piscine.ListForEachIf(link, StringToInt, piscine.IsNotNumeric_node) - - fmt.Println("--------function applied--------") - PrintList(link) - - fmt.Println() -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -1->hello->3->there->23->!->54->nil ---------function applied-------- -1 -3 -23 -54 ---------function applied-------- -1->2->3->2->23->2->54->nil -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/listlast.fr.md b/subjects/listlast.fr.md deleted file mode 100644 index 480addd4..00000000 --- a/subjects/listlast.fr.md +++ /dev/null @@ -1,59 +0,0 @@ -## listlast - -### Instructions - -Écrire une fonction `ListLast` qui retourne le dernier élément d'une liste chaînée `l`. - -### Fonction et structure attendue - -```go -type Node struct { - Data interface{} - Next *NodeL -} - -type List struct { - Head *NodeL - Tail *NodeL -} - -func ListLast(l *List) interface{} { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - - piscine ".." -) - -func main() { - link := &piscine.List{} - link2 := &piscine.List{} - - piscine.ListPushBack(link, "three") - piscine.ListPushBack(link, 3) - piscine.ListPushBack(link, "1") - - fmt.Println(piscine.ListLast(link)) - fmt.Println(piscine.ListLast(link2)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -1 - -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/listmerge.fr.md b/subjects/listmerge.fr.md deleted file mode 100644 index 49e092b7..00000000 --- a/subjects/listmerge.fr.md +++ /dev/null @@ -1,80 +0,0 @@ -## listmerge - -### Instructions - -Écrire une fonction `ListMerge` qui place les éléments d'une liste `l2` à la fin d'une autre liste `l1`. - -- Des nouveaux éléments ne doivent pas être créés! - -### Fonction et structure attendues - -```go -type NodeL struct { - Data interface{} - Next *NodeL -} - -type List struct { - Head *NodeL - Tail *NodeL -} - -func ListMerge(l1 *List, l2 *List) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - - piscine ".." -) - -func PrintList(l *piscine.List) { - it := l.Head - for it != nil { - fmt.Print(it.Data, " -> ") - it = it.Next - } - fmt.Print(nil, "\n") -} - -func main() { - link := &piscine.List{} - link2 := &piscine.List{} - - piscine.ListPushBack(link, "a") - piscine.ListPushBack(link, "b") - piscine.ListPushBack(link, "c") - piscine.ListPushBack(link, "d") - fmt.Println("-----first List------") - PrintList(link) - - piscine.ListPushBack(link2, "e") - piscine.ListPushBack(link2, "f") - piscine.ListPushBack(link2, "g") - piscine.ListPushBack(link2, "h") - fmt.Println("-----second List------") - PrintList(link2) - - fmt.Println("-----Merged List-----") - piscine.ListMerge(link, link2) - PrintList(link) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -a -> b -> c -> d -> e -> f -> g -> h -> -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/listpushback.fr.md b/subjects/listpushback.fr.md deleted file mode 100644 index e76314f7..00000000 --- a/subjects/listpushback.fr.md +++ /dev/null @@ -1,61 +0,0 @@ -## listpushback - -### Instructions - -Écrire une fonction `ListPushBack` qui insère un nouvel élément `NodeL` à la fin de la liste `l` en utilisant la structure `List`. - -### Fonction et structure attendues - -```go -type NodeL struct { - Data interface{} - Next *NodeL -} - -type List struct { - Head *NodeL - Tail *NodeL -} - -func ListPushBack(l *List, data interface{}) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - - link := &piscine.List{} - - piscine.ListPushBack(link, "Hello") - piscine.ListPushBack(link, "man") - piscine.ListPushBack(link, "how are you") - - for link.Head != nil { - fmt.Println(link.Head.Data) - link.Head = link.Head.Next - } -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -Hello -man -how are you -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/listpushfront.fr.md b/subjects/listpushfront.fr.md deleted file mode 100644 index 93d33569..00000000 --- a/subjects/listpushfront.fr.md +++ /dev/null @@ -1,62 +0,0 @@ -## listpushfront - -### Instructions - -Écrire une fonction `ListPushFront` qui insère un nouvel élément `NodeL` au début de la liste `l` en utilisant la structure `List`. - -### Fonction et structue attendues - -```go -type NodeL struct { - Data interface{} - Next *NodeL -} - -type List struct { - Head *NodeL - Tail *NodeL -} - -func ListPushFront(l *List, data interface{}) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - - piscine ".." -) - -func main() { - - link := &piscine.List{} - - piscine.ListPushFront(link, "Hello") - piscine.ListPushFront(link, "man") - piscine.ListPushFront(link, "how are you") - - it := link.Head - for it != nil { - fmt.Print(it.Data, " ") - it = it.Next - } - fmt.Println() -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -how are you man Hello -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/listpushparams.fr.md b/subjects/listpushparams.fr.md deleted file mode 100644 index 591e99bf..00000000 --- a/subjects/listpushparams.fr.md +++ /dev/null @@ -1,45 +0,0 @@ -## countif - -### Instructions - -Écrire une fonction `CountIf` qui retournes le nombre d'éléments d'un tableau de `string` pour lesquels la fonction `f` retourne `true`. - -### Fonction attendue - -```go -func CountIf(f func(string) bool, tab []string) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - tab1 := []string{"Hello", "how", "are", "you"} - tab2 := []string{"This","1", "is", "4", "you"} - answer1 := piscine.CountIf(piscine.IsNumeric, tab1) - answer2 := piscine.CountIf(piscine.IsNumeric, tab2) - fmt.Println(answer1) - fmt.Println(answer2) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -0 -2 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/listremoveif.fr.md b/subjects/listremoveif.fr.md deleted file mode 100644 index 610f9857..00000000 --- a/subjects/listremoveif.fr.md +++ /dev/null @@ -1,95 +0,0 @@ -## listremoveif - -### Instructions - -Écrire une fonction `ListRemoveIf` qui supprime tous les éléments qui sont égaux à la `data_ref` introduite dans l'argument de la fonction. - -### Fonction et structure attendues - -```go -type NodeL struct { - Data interface{} - Next *NodeL -} - -type List struct { - Head *NodeL - Tail *NodeL -} - -func ListRemoveIf(l *List, data_ref interface{}) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - - piscine ".." -) - -func PrintList(l *piscine.List) { - it := l.Head - for it != nil { - fmt.Print(it.Data, " -> ") - it = it.Next - } - - fmt.Print(nil, "\n") -} - -func main() { - link := &piscine.List{} - link2 := &piscine.List{} - - fmt.Println("----normal state----") - piscine.ListPushBack(link2, 1) - PrintList(link2) - piscine.ListRemoveIf(link2, 1) - fmt.Println("------answer-----") - PrintList(link2) - fmt.Println() - - fmt.Println("----normal state----") - piscine.ListPushBack(link, 1) - piscine.ListPushBack(link, "Hello") - piscine.ListPushBack(link, 1) - piscine.ListPushBack(link, "There") - piscine.ListPushBack(link, 1) - piscine.ListPushBack(link, 1) - piscine.ListPushBack(link, "How") - piscine.ListPushBack(link, 1) - piscine.ListPushBack(link, "are") - piscine.ListPushBack(link, "you") - piscine.ListPushBack(link, 1) - PrintList(link) - - piscine.ListRemoveIf(link, 1) - fmt.Println("------answer-----") - PrintList(link) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -----normal state---- -1 -> -------answer----- - - -----normal state---- -1 -> Hello -> 1 -> There -> 1 -> 1 -> How -> 1 -> are -> you -> 1 -> -------answer----- -Hello -> There -> How -> are -> you -> -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/listreverse.fr.md b/subjects/listreverse.fr.md deleted file mode 100644 index 5bc676be..00000000 --- a/subjects/listreverse.fr.md +++ /dev/null @@ -1,71 +0,0 @@ -## listreverse - -### Instructions - -Écrire une fonction `ListReverse` qui inverse l'ordre des éléments d'une liste chaînée `l` donnée. - -### Fonction et structure attendues - -```go -type NodeL struct { - Data interface{} - Next *NodeL -} - -type List struct { - Head *NodeL - Tail *NodeL -} - -func ListReverse(l *List) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - link := &piscine.List{} - - piscine.ListPushBack(link, 1) - piscine.ListPushBack(link, 2) - piscine.ListPushBack(link, 3) - piscine.ListPushBack(link, 4) - - piscine.ListReverse(link) - - it := link.Head - - for it != nil { - fmt.Println(it.Data) - it = it.Next - } - - fmt.Println("Tail", link.Tail) - fmt.Println("Head", link.Head) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -4 -3 -2 -1 -Tail -Head &{4 0xc42000a140} -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/listsize.fr.md b/subjects/listsize.fr.md deleted file mode 100644 index de0dd961..00000000 --- a/subjects/listsize.fr.md +++ /dev/null @@ -1,56 +0,0 @@ -## listsize - -### Instructions - -Écrire une fonction `ListSize` qui retourne le nombre d'éléments dans une liste chaînée `l`. - -### Fonction et structure attendues - -```go -type NodeL struct { - Data interface{} - Next *NodeL -} - -type List struct { - Head *NodeL - Tail *NodeL -} - -func ListSize(l *List) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - link := &piscine.List{} - - piscine.ListPushFront(link, "Hello") - piscine.ListPushFront(link, "2") - piscine.ListPushFront(link, "you") - piscine.ListPushFront(link, "man") - - fmt.Println(piscine.ListSize(link)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -4 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/listsort.fr.md b/subjects/listsort.fr.md deleted file mode 100644 index f1bd1b17..00000000 --- a/subjects/listsort.fr.md +++ /dev/null @@ -1,78 +0,0 @@ -## listsort - -### Instructions - -Écrire une fonction `ListSort` qui trie les nodes d'une liste chaînée par ordre croissant. - -- La structure `NodeI` sera la seule utilisée. - -### Fonction et structure attendues - -```go -type NodeI struct { - Data int - Next *NodeI -} - -func ListSort(l *NodeI) *NodeI { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - - piscine ".." -) - -func PrintList(l *piscine.NodeI) { - it := l - for it != nil { - fmt.Print(it.Data, " -> ") - it = it.Next - } - fmt.Print(nil, "\n") -} - -func listPushBack(l *piscine.NodeI, data int) *piscine.NodeI { - n := &piscine.NodeI{Data: data} - - if l == nil { - return n - } - iterator := l - for iterator.Next != nil { - iterator = iterator.Next - } - iterator.Next = n - return l -} - -func main() { - var link *piscine.NodeI - - link = listPushBack(link, 5) - link = listPushBack(link, 4) - link = listPushBack(link, 3) - link = listPushBack(link, 2) - link = listPushBack(link, 1) - - PrintList(piscine.ListSort(link)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -1 -> 2 -> 3 -> 4 -> 5 -> -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/make-it-better.fr.md b/subjects/make-it-better.fr.md deleted file mode 100644 index 26615dd2..00000000 --- a/subjects/make-it-better.fr.md +++ /dev/null @@ -1,32 +0,0 @@ -## make-it-better - -### Instructions - -Créer les fichiers et dossiers de tel sorte que lorsque cette commande `ls` ci-dessous est utilisée, l'`output` ressemble à cela : - -```console -user@host:~/make-it-better$ TZ=utc ls -l --time-style='+%F %R' | sed 1d | awk '{print $1, $6, $7, $8, $9, $10}' -dr-------x 1986-01-05 00:00 0 --r------w- 1986-11-13 00:01 1 --rw----r-- 1988-03-05 00:10 2 -lrwxrwxrwx 1990-02-16 00:11 3 -> 0 --r-x--x--- 1990-10-07 01:00 4 --r--rw---- 1990-11-07 01:01 5 --r--rw---- 1991-02-08 01:10 6 --r-x--x--- 1991-03-08 01:11 7 --rw----r-- 1994-05-20 10:00 8 --r------w- 1994-06-10 10:01 9 -dr-------x 1995-04-10 10:10 A -user@host:~/make-it-better$ -``` - -Une fois fini, utilisez la commande ci-dessous pour créer le fichier `done.tar` de rendu. - -```console -user@host:~/make-it-better$ tar -cf done.tar * -user@host:~/make-it-better$ ls -0 1 2 3 4 5 6 7 8 9 A done.tar -user@host:~/make-it-better$ -``` - -**Seulement `done.tar` doit être rendu.** diff --git a/subjects/makerange.fr.md b/subjects/makerange.fr.md deleted file mode 100644 index 003f1c51..00000000 --- a/subjects/makerange.fr.md +++ /dev/null @@ -1,47 +0,0 @@ -## makerange - -### Instructions - -Écrire une fonction qui prend un `int` minimum et un `int` maximum comme paramètres. Cette fonction retournes une slice d'`int` avec toutes les valeurs comprises entre le minimum et le maximum. - -Le minimum est inclus, le maximum est exclu. - -Si le minimum est supérieur ou égal au maximum, une slice `nil` est retournée. - -`append` n'est pas autorisé pour cet exercice. - -### Fonction attendue - -```go -func MakeRange(min, max int) []int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - fmt.Println(piscine.MakeRange(5, 10)) - fmt.Println(piscine.MakeRange(10, 5)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -[5 6 7 8 9] -[] -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/map.fr.md b/subjects/map.fr.md deleted file mode 100644 index 2be10700..00000000 --- a/subjects/map.fr.md +++ /dev/null @@ -1,41 +0,0 @@ -## map - -### Instructions - -Écrire une fonction `Map` qui, pour un tableau d'`int`, applique une fonction de type `func(int) bool` sur chaque éléments de ce tableau et retournes un tableau de toutes les valeurs de retour. - -### Fonction attendue - -```go -func Map(f func(int) bool, arr []int) []bool { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - arr := []int{1, 2, 3, 4, 5, 6} - result := piscine.Map(piscine.IsPrime, arr) - fmt.Println(result) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -[false true true false true false] -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/max.fr.md b/subjects/max.fr.md deleted file mode 100644 index 67fba091..00000000 --- a/subjects/max.fr.md +++ /dev/null @@ -1,41 +0,0 @@ -## max - -### Instructions - -Écrire une fonction, `Max`, qui retourne la valeur maximum dans une slice d'entiers. - -### Fonction attendue - -```go -func Max(arr []int) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - arrInt := []int{23, 123, 1, 11, 55, 93} - max := piscine.Max(arrInt) - fmt.Println(max) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -123 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/nbrconvertalpha.fr.md b/subjects/nbrconvertalpha.fr.md deleted file mode 100644 index 4d2d054a..00000000 --- a/subjects/nbrconvertalpha.fr.md +++ /dev/null @@ -1,25 +0,0 @@ -## nbrconvertalpha - -### Instructions - -Write a **program** that prints the corresponding letter in the `n` position of the classic latin alphabet, where `n` is each argument received. - -For example `1` matches `a`, `2` matches `b`, etc. If `n` does not match a valid position of the alphabet or if the argument is not an integer, the **program** should print a space (" "). - -A flag `--upper` should be implemented. When used the program prints the result in upper case. - -### Usage - -```console -student@ubuntu:~/student/test$ go build -student@ubuntu:~/student/test$ ./nbrconvertalpha | cat -e -$ -student@ubuntu:~/student/test$ ./nbrconvertalpha 8 5 12 12 15 | cat -e -hello$ -student@ubuntu:~/student/test$ ./nbrconvertalpha 12 5 7 5 14 56 4 1 18 25 | cat -e -legen dary$ -student@ubuntu:~/student/test$ ./nbrconvertalpha 32 86 h | cat -e - $ -student@ubuntu:~/student/test$ ./nbrconvertalpha --upper 8 5 25 | cat -e -HEY$ -``` diff --git a/subjects/now-get-to-work.fr.md b/subjects/now-get-to-work.fr.md deleted file mode 100644 index 4df22713..00000000 --- a/subjects/now-get-to-work.fr.md +++ /dev/null @@ -1,21 +0,0 @@ -## now-get-to-work - -### Instructions - -"Quelque chose de terrible est arrivé" - -Faîtes un clone de repo : https://github.com/01-edu/the-final-cl-test - -Rendez votre solution dans un fichier `my_answer.sh` qui l'affichera quand exécuté. - -### Usage - -```console -student@ubuntu:~/[[ROOT]]/test$ ./my_answer.sh | cat -e -John Doe$ -student@ubuntu:~/[[ROOT]]/test$ -``` - -### Hint - -"Vous pouvez combinez `head` et `tail`s..." diff --git a/subjects/nrune.fr.md b/subjects/nrune.fr.md deleted file mode 100644 index 0c9b2db8..00000000 --- a/subjects/nrune.fr.md +++ /dev/null @@ -1,42 +0,0 @@ -## nrune - -### Instructions - -Écrire une fonction qui retourne la énième `rune` d'une `string`. - -### Fonction attendue - -```go -func NRune(s string, n int) rune { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "github.com/01-edu/z01" - piscine ".." -) - -func main() { - z01.PrintRune(piscine.NRune("Hello!", 3)) - z01.PrintRune(piscine.NRune("Salut!", 2)) - z01.PrintRune(piscine.NRune("Ola!", 4)) - z01.PrintRune('\n') -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -la! -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/nruneprog.fr.md b/subjects/nruneprog.fr.md deleted file mode 100644 index fc013786..00000000 --- a/subjects/nruneprog.fr.md +++ /dev/null @@ -1,22 +0,0 @@ -## nruneprog - -### Instructions - -Écrire un programme qui reçoit une `string` en paramètre et qui retourne la énième `rune` de la `string`. - -### Utilisation : - -```console -student@ubuntu:~/[[ROOT]]/nruneprog$ ./nruneprog "hello" 2 -e -student@ubuntu:~/[[ROOT]]/nruneprog$ ./nruneprog "hello" 4 | cat -e -l$ -student@ubuntu:~/[[ROOT]]/nruneprog$ ./nruneprog "hello" 5 -o -student@ubuntu:~/[[ROOT]]/nruneprog$ ./nruneprog "hello" -student@ubuntu:~/[[ROOT]]/nruneprog$ ./nruneprog "hello" f | cat -e -"f" is not an integer value$ -student@ubuntu:~/[[ROOT]]/nruneprog$ ./nruneprog "hello" 9 -Invalid position: "9" in "hello" -student@ubuntu:~/[[ROOT]]/nruneprog$ -``` diff --git a/subjects/onlya.fr.md b/subjects/onlya.fr.md deleted file mode 100644 index 5d8badd1..00000000 --- a/subjects/onlya.fr.md +++ /dev/null @@ -1,5 +0,0 @@ -## onlya - -### Instructions - -Écrire un programme qui affiche un caractère `a` sur la sortie standard. (et rien d'autre) diff --git a/subjects/onlyz.fr.md b/subjects/onlyz.fr.md deleted file mode 100644 index 390faadb..00000000 --- a/subjects/onlyz.fr.md +++ /dev/null @@ -1,5 +0,0 @@ -## onlyz - -### Instructions - -Écrire un programme qui affiche un caractère `z` sur la sortie standard. (et rien d'autre) diff --git a/subjects/options.fr.md b/subjects/options.fr.md deleted file mode 100644 index b110b67b..00000000 --- a/subjects/options.fr.md +++ /dev/null @@ -1,34 +0,0 @@ -# options - -## Instructions - -Écrire un programme qui prend un nombre indéfini d'arguments qui peuvent être considérés comme des `options` et qui affiche sur la sortie standard une représentation de ces `options` comme groupes de `bytes`(octets) suivi d'un retour à la ligne (`'\n'`). - -- Une `option` est un argument qui commence avec un `-` et qui peux avoir de multiples caractères qui peuvent être : - -abcdefghijklmnopqrstuvwxyz - -- Toutes les `options` sont stockées dans un seul `int` et chaque `option` représente un bit de cet `int`, et doit être stocké comme ci-dessous : - - - 00000000 00000000 00000000 00000000 - - ******zy xwvutsrq ponmlkji hgfedcba - -- L'éxécution du programme sans argument ou avec l'option `-h` activée doit afficher toutes les `options` valides sur la sortie standard, comme montré dans un des exemples ci-dessous. - -- Une mauvaise `option` doit afficher `Invalid Option` suivi d'un retour à la ligne. - -## Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test | cat -e -options: abcdefghijklmnopqrstuvwxyz$ -student@ubuntu:~/[[ROOT]]/test$ ./test -abc -ijk | cat -e -00000000 00000000 00000111 00000111$ -student@ubuntu:~/[[ROOT]]/test$ ./test -z | cat -e -00000010 00000000 00000000 00000000$ -student@ubuntu:~/[[ROOT]]/test$ ./test -abc -hijk | cat -e -options: abcdefghijklmnopqrstuvwxyz$ -student@ubuntu:~/[[ROOT]]/test$ ./test -% | cat -e -Invalid Option$ -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/paramcount.fr.md b/subjects/paramcount.fr.md deleted file mode 100644 index ccb282bb..00000000 --- a/subjects/paramcount.fr.md +++ /dev/null @@ -1,20 +0,0 @@ -## paramcount - -### Instructions - -Écrire un programme qui affiche le nombre d'arguments passés à ce programme. Ce nombre sera suivi d'un retour à la ligne (`'\n'`). - -Si il n'y a pas d'argument, le programme affiche `0` suivi d'un retour à la ligne. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/paramcount$ go build -student@ubuntu:~/[[ROOT]]/paramcount$ ./paramcount 1 2 3 5 7 24 -6 -student@ubuntu:~/[[ROOT]]/paramcount$ ./paramcount 6 12 24 | cat -e -3$ -student@ubuntu:~/[[ROOT]]/paramcount$ ./paramcount | cat -e -0$ -student@ubuntu:~/[[ROOT]]/paramcount$ -``` diff --git a/subjects/pilot.fr.md b/subjects/pilot.fr.md deleted file mode 100644 index 0660cb33..00000000 --- a/subjects/pilot.fr.md +++ /dev/null @@ -1,26 +0,0 @@ -## pilot - -### Instructions - -Écrire un fichier `go` de manière à ce que le programme ci-dessous compile. - -### Utilisation - -```go -package main - -import ( - "fmt" - student ".." -) - -func main() { - var donnie student.Pilot - donnie.Name = "Donnie" - donnie.Life = 100.0 - donnie.Age = 24 - donnie.Aircraft = student.AIRCRAFT1 - - fmt.Println(donnie) -} -``` diff --git a/subjects/point.fr.md b/subjects/point.fr.md deleted file mode 100644 index 957ca929..00000000 --- a/subjects/point.fr.md +++ /dev/null @@ -1,37 +0,0 @@ -## point - -### Instructions - -Créer un fichier `.go`. - -- Le code ci-dessous doit être copié dans ce fichier. - -- Les changements nécéssaires doivent être appliquer et the code below into that file and do the necessary changes so that the program works. - -- Le programme doit être rendu dans un dossier nommé `boolean`. - -### Code à copier - -```go -func setPoint(ptr *point) { - ptr.x = 42 - ptr.y = 21 -} - -func main() { - points := &point{} - - setPoint(points) - - fmt.Printf("x = %d, y = %d\n",points.x, points.y) -} -``` - -### Usage - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -x = 42, y = 21 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/pointone.fr.md b/subjects/pointone.fr.md deleted file mode 100644 index 66f29a44..00000000 --- a/subjects/pointone.fr.md +++ /dev/null @@ -1,41 +0,0 @@ -## pointone - -### Instructions - -- Écrire une fonction qui prend un **pointeur sur int** en argument et qui assignes à cet int la valeur 1. - -### Fonction attendue - -```go -func PointOne(n *int) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - n := 0 - piscine.PointOne(&n) - fmt.Println(n) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -1 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/printalphabet.fr.md b/subjects/printalphabet.fr.md deleted file mode 100644 index 12a03c65..00000000 --- a/subjects/printalphabet.fr.md +++ /dev/null @@ -1,16 +0,0 @@ -## printalphabet - -### Instructions - -Écrire un programme qui affiche l'alphabet latin en minuscule sur une seule ligne. - -Une ligne est une suite de caractères précédant le caractère [fin de ligne](https://en.wikipedia.org/wiki/Newline) (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/printalphabet$ go build -student@ubuntu:~/[[ROOT]]/printalphabet$ ./printalphabet -abcdefghijklmnopqrstuvwxyz -student@ubuntu:~/[[ROOT]]/printalphabet$ -``` diff --git a/subjects/printbits.fr.md b/subjects/printbits.fr.md deleted file mode 100644 index 724a1c24..00000000 --- a/subjects/printbits.fr.md +++ /dev/null @@ -1,22 +0,0 @@ -## printbits - -### Instructions - -Écrire un programme qui prend un nombre en argument, et qui l'affiche en valeur binaire **sans newline à la fin**. - -- Si l'argument n'est pas un nombre le programme doit afficher `00000000`. - -### Expected output : - -```console -student@ubuntu:~/printbits$ go build -student@ubuntu:~/printbits$ ./printbits 1 -00000001student@ubuntu:~/printbits$ -student@ubuntu:~/printbits$ ./printbits 192 -11000000student@ubuntu:~/printbits$ -student@ubuntu:~/printbits$ ./printbits a -00000000student@ubuntu:~/printbits$ -student@ubuntu:~/printbits$ ./printbits 1 1 -student@ubuntu:~/printbits$ ./printbits -student@ubuntu:~/printbits$ -``` diff --git a/subjects/printcomb.fr.md b/subjects/printcomb.fr.md deleted file mode 100644 index 53bae5e6..00000000 --- a/subjects/printcomb.fr.md +++ /dev/null @@ -1,42 +0,0 @@ -## printcomb - -### Instructions - -Écrire une fonction qui affiche sur une seule ligne dans l'ordre croissant toutes les combinaisons possibles de trois chiffres différents tels que le premier est inférieur au second et le second est inférieur au troisième. - -Les combinaisons sont séparées par une virgule et un espace. - -### Fonction attendue - -```go -func PrintComb() { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import piscine ".." - -func main() { - piscine.PrintComb() -} -``` - -Voici la sortie tronquée : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test | cat -e -012, 013, 014, 015, 016, 017, 018, 019, 023, ..., 689, 789$ -student@ubuntu:~/[[ROOT]]/test$ -``` - -`000` et `999` ne sont pas des combinations valides parce que les chiffres ne sont pas différents. - -`987` ne doit pas être affiché parce que le premier chiffre n'est pas inférieur au second. diff --git a/subjects/printcomb2.fr.md b/subjects/printcomb2.fr.md deleted file mode 100644 index cf52e375..00000000 --- a/subjects/printcomb2.fr.md +++ /dev/null @@ -1,38 +0,0 @@ -## printcomb2 - -### Instructions - -Écrire une fonction qui affiche sur une seule ligne dans l'ordre croissant toutes les combinaisons possibles de deux nombres différents à deux chiffres. - -Les combinaisons sont séparées par une virgule et un espace. - -### Fonction attendue - -```go -func PrintComb2() { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import piscine ".." - -func main() { - piscine.PrintComb2() -} -``` - -Voici la sortie tronquée : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test | cat -e -00 01, 00 02, 00 03, ..., 00 98, 00 99, 01 02, 01 03, ..., 97 98, 97 99, 98 99$ -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/printcombn.fr.md b/subjects/printcombn.fr.md deleted file mode 100644 index 0e377667..00000000 --- a/subjects/printcombn.fr.md +++ /dev/null @@ -1,48 +0,0 @@ -## printcombn - -### Instructions - -- Écrire une fonction qui affiche toutes les combinaisons possibles de **n** chiffres différents en ordre croissant. - -- n sera défini tel que: 0 < n < 10 - -ci-dessous vos références pour le **format d'affichage** attendu. - -- (pour n = 1) '0, 1, 2, 3, ...8, 9' - -- (pour n = 3) '012, 013, 014, 015, 016, 017, 018, 019, 023,...689, 789' - -### Fonction attendue - -```go -func PrintCombN(n int) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import piscine ".." - -func main() { - piscine.PrintCombN(1) - piscine.PrintCombN(2) - piscine.PrintCombN(3) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -0, 1, 2, 3, 4, 5, 6, 7, 8, 9 -012, 013, 014, 015, 016, 017, 018, ... 679, 689, 789 -012345678, 012345679, ..., 123456789 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/printcombprog.fr.md b/subjects/printcombprog.fr.md deleted file mode 100644 index 9d908100..00000000 --- a/subjects/printcombprog.fr.md +++ /dev/null @@ -1,22 +0,0 @@ -## printcombprog - -### Instructions - -Écrire un programme qui affiche sur une seule ligne dans l'ordre croissant toutes les combinaisons possibles de trois chiffres différents tels que le premier est inférieur au second et le second est inférieur au troisième. - -Les combinaisons sont séparées par une virgule et un espace. - -### Utilisation - -Voici une sortie **tronquée** : - -```console -student@ubuntu:~/[[ROOT]]/printcombprog$ go build -student@ubuntu:~/[[ROOT]]/printcombprog$ ./printcombprog | cat -e -012, 013, 014, 015, 016, 017, 018, 019, 023, ..., 689, 789$ -student@ubuntu:~/[[ROOT]]/printcombprog$ -``` - -`000` et `999` ne sont pas des combinations valides parce que les chiffres ne sont pas différents. - -`987` ne doit pas être affiché parce que le premier chiffre n'est pas inférieur au second. diff --git a/subjects/printdigits.fr.md b/subjects/printdigits.fr.md deleted file mode 100644 index 948e31d3..00000000 --- a/subjects/printdigits.fr.md +++ /dev/null @@ -1,16 +0,0 @@ -## printdigits - -### Instructions - -Écrire un programme qui affiche les chiffres décimaux dans l'ordre croissant (de `0` à `9`) sur une seule ligne. - -Une ligne est une suite de caractères précédant le caractère [fin de ligne](https://en.wikipedia.org/wiki/Newline) (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/printdigits$ go build -student@ubuntu:~/[[ROOT]]/printdigits$ ./printdigits -0123456789 -student@ubuntu:~/[[ROOT]]/printdigits$ -``` diff --git a/subjects/printhex.fr.md b/subjects/printhex.fr.md deleted file mode 100644 index 4727fe9d..00000000 --- a/subjects/printhex.fr.md +++ /dev/null @@ -1,25 +0,0 @@ -## printhex - -### Instructions - -Écrire un programme qui prend un nombre positif (ou zéro) écrit en base 10, et qui l'affiche en base 16 (avec les lettres en minuscule) suivi d'un retour à la ligne (`'\n'`). - -- Si le nombre de paramètres est différent de 1, le programme affiche un retour à la ligne. -- Les cas d'erreurs doivent être gérés comme montré dans l'exemple ci-dessous. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test "10" -a -student@ubuntu:~/[[ROOT]]/test$ ./test "255" -ff -student@ubuntu:~/[[ROOT]]/test$ ./test "5156454" -4eae66 -student@ubuntu:~/[[ROOT]]/test$ ./test - -student@ubuntu:~/[[ROOT]]/test$ ./test "123 132 1" | cat -e -0$ -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/printmemory.fr.md b/subjects/printmemory.fr.md deleted file mode 100644 index c78518d0..00000000 --- a/subjects/printmemory.fr.md +++ /dev/null @@ -1,53 +0,0 @@ -## printmemory - -##**AVERTISSEMENT! TRÈS IMPORTANT!** - -Pour cet exercice une fonction sera testée **avec le main de l'examen**. Cependant l'étudiant **doit quand même** rendre un programme structuré: - -Cela signifie que: - -- Le package doit être nommé `package main`. -- Le code rendu doit avoir une fonction main déclarée(`func main()`) même si elle est vide. -- La fonction main déclarée doit **aussi passer** le `Restrictions Checker`(le testeur de fonctions illégales). Il est conseillé à l'étudiant de rendre une fonction main vide après ses tests finis. -- Toutes les autres régles sont les mêmes que pour un `programme`. - -### Instructions - -Écrire une fonction qui prend `(arr [10]int)`, et qui affiche la mémoire comme dans l'exemple. - -### Fonction attendue - -```go -func PrintMemory(arr [10]int) { - -} -``` - -### Utilisation - -Voici un éventuel [programme](TODO-LINK) pour tester votre fonction : - -```go -package main - -import ( - piscine ".." -) - -func main() { - arr := [10]int{104, 101, 108, 108, 111, 16, 21, 42} - piscine.PrintMemory(arr) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test | cat -e -6800 0000 6500 0000 6c00 0000 6c00 0000 $ -6f00 0000 1000 0000 1500 0000 2a00 0000 $ -0000 0000 0000 0000 $ -hello..*..$ -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/printnbr.fr.md b/subjects/printnbr.fr.md deleted file mode 100644 index e3c97f97..00000000 --- a/subjects/printnbr.fr.md +++ /dev/null @@ -1,40 +0,0 @@ -## printnbr - -### Instructions - -Écrire une fonction qui affiche un `int` passé en paramètre. -Toutes les valeurs de type `int` doivent être affichables. -Vous ne pouvez pas convertir en `int64`. - -### Fonction attendue - -```go -func PrintNbr(n int) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import piscine ".." - -func main() { - piscine.PrintNbr(-123) - piscine.PrintNbr(0) - piscine.PrintNbr(123) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test --1230123 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/printnbrbase.fr.md b/subjects/printnbrbase.fr.md deleted file mode 100644 index 76d817ba..00000000 --- a/subjects/printnbrbase.fr.md +++ /dev/null @@ -1,63 +0,0 @@ -## putnbrbase - -### Instructions - -Écrire une fonction qui affiche un `int` dans une base en `string` passés en paramètres. - -Si la base n'est pas valide, la fonction affiche `NV` (Not Valid): - -Règles de validité d'une base : - -- Une base doit contenir au moins 2 caractères. -- Chaque caractère d'une base doit être unique. -- Une base ne doit pas contenir les caractères `+` ou `-`. - -La fonction doit gérer les nombres négatifs (comme montré sur l'exemple). - -### Fonction attendue - -```go -func PrintNbrBase(nbr int, base string) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - "github.com/01-edu/z01" - piscine ".." -) - -func main() { - piscine.PrintNbrBase(125, "0123456789") - z01.PrintRune('\n') - piscine.PrintNbrBase(-125, "01") - z01.PrintRune('\n') - piscine.PrintNbrBase(125, "0123456789ABCDEF") - z01.PrintRune('\n') - piscine.PrintNbrBase(-125, "choumi") - z01.PrintRune('\n') - piscine.PrintNbrBase(125, "aa") - z01.PrintRune('\n') -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -125 --1111101 -7D --uoi -NV -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/printnbrinorder.fr.md b/subjects/printnbrinorder.fr.md deleted file mode 100644 index 832b6cb7..00000000 --- a/subjects/printnbrinorder.fr.md +++ /dev/null @@ -1,40 +0,0 @@ -## printnbrinorder - -### Instructions - -Write a function which prints the digits of an `int` passed in parameter in ascending order. -All possible values of type `int` have to go through, besides negative numbers. -Convertion to `int64` is not allowed. - -### Expected function - -```go -func PrintNbrInOrder(n int) { - -} -``` - -### Usage - -Here is a possible program to test your function : - -```go -package main - -import piscine ".." - -func main() { - piscine.PrintNbrInOrder(321) - piscine.PrintNbrInOrder(0) - piscine.PrintNbrInOrder(321) -} -``` - -And its output : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -1230123 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/printparams.fr.md b/subjects/printparams.fr.md deleted file mode 100644 index 09224cbe..00000000 --- a/subjects/printparams.fr.md +++ /dev/null @@ -1,18 +0,0 @@ -## printparams - -### Instructions - -Écrire un **programme** qui affiche les arguments en ligne de commande. - -Exemple de résultat : - -```console -student@ubuntu:~/[[ROOT]]/printparams$ go build -student@ubuntu:~/[[ROOT]]/printparams$ ./printparams choumi is the best cat -choumi -is -the -best -cat -student@ubuntu:~/[[ROOT]]/printparams$ -``` diff --git a/subjects/printprogramname.fr.md b/subjects/printprogramname.fr.md deleted file mode 100644 index d6e1b79e..00000000 --- a/subjects/printprogramname.fr.md +++ /dev/null @@ -1,14 +0,0 @@ -## printprogramname - -### Instructions - -Écrire un **programme** qui affiche le nom du programme. - -Exemple de résultat : - -```console -student@ubuntu:~/[[ROOT]]/printprogramname$ go build main.go -student@ubuntu:~/[[ROOT]]/printprogramname$ ./main -./main -student@ubuntu:~/[[ROOT]]/printprogramname$ -``` diff --git a/subjects/printrevcombprog.fr.md b/subjects/printrevcombprog.fr.md deleted file mode 100644 index 8b8af2af..00000000 --- a/subjects/printrevcombprog.fr.md +++ /dev/null @@ -1,22 +0,0 @@ -## printrevcombprog - -### Instructions - -Écrire un programme qui affiche sur une seule ligne dans l'ordre décroissant toutes les combinaisons possibles de trois chiffres différents tels que le premier est supérieur au second et le second est supérieur au troisième. - -Les combinaisons sont séparées par une virgule et un espace. - -### Utilisation - -Voici une sortie **tronquée** : - -```console -student@ubuntu:~/[[ROOT]]/printcombprog$ go build -student@ubuntu:~/[[ROOT]]/printcombprog$ ./printcombprog | cat -e -987, 986, 985, 984, 983, 982, 981, 980, 976, ..., 310, 210$ -student@ubuntu:~/[[ROOT]]/printcombprog$ -``` - -`999` et `000` ne sont pas des combinations valides parce que les chiffres ne sont pas différents. - -`789` ne doit pas être affiché parce que le premier chiffre n'est pas inférieur au second. diff --git a/subjects/printreversealphabet.fr.md b/subjects/printreversealphabet.fr.md deleted file mode 100644 index 382930e0..00000000 --- a/subjects/printreversealphabet.fr.md +++ /dev/null @@ -1,18 +0,0 @@ -## printreversealphabet - -### Instructions - -Écrire un programme qui affiche l'alphabet latin en minuscule dans l'ordre inverse (de `'z'` à `'a'`) sur une seule ligne. - -Une ligne est une suite de caractères précédant le caractère [fin de ligne](https://en.wikipedia.org/wiki/Newline) (`'\n'`). - -Attention il faut bien noter que le `casting` n'est pas autorisé pour cet exercice. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/printreversealphabet$ go build -student@ubuntu:~/[[ROOT]]/printreversealphabet$ ./printreversealphabet -zyxwvutsrqponmlkjihgfedcba -student@ubuntu:~/[[ROOT]]/printreversealphabet$ -``` diff --git a/subjects/printstr.fr.md b/subjects/printstr.fr.md deleted file mode 100644 index 270f3145..00000000 --- a/subjects/printstr.fr.md +++ /dev/null @@ -1,37 +0,0 @@ -## prinstr - -### Instructions - -- Écrire une fonction qui affiche un à un les caractères d'une `string` à l'écran. - -### Fonction attendue - -```go -func PrintStr(str string) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import piscine ".." - -func main() { - str := "Hello World!" - piscine.PrintStr(str) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test | cat -e -Hello World!% -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/printstrprog.fr.md b/subjects/printstrprog.fr.md deleted file mode 100644 index 043940b0..00000000 --- a/subjects/printstrprog.fr.md +++ /dev/null @@ -1,17 +0,0 @@ -## printstrprog - -### Instructions - -- Écrire un programme qui affiche un à un les caractères d'une `string` passée en argument du programme. - -### Utilisation : - -```console -student@ubuntu:~/[[ROOT]]/printstrprog$ go build -student@ubuntu:~/[[ROOT]]/printstrprog$ ./printstrprog "Hello World!" | cat -e -Hello World!$ -student@ubuntu:~/[[ROOT]]/printstrprog$ ./printstrprog -student@ubuntu:~/[[ROOT]]/printstrprog$ -student@ubuntu:~/[[ROOT]]/printstrprog$ ./printstrprog "Hello" "World" -student@ubuntu:~/[[ROOT]]/printstrprog$ -``` diff --git a/subjects/printwordstables.fr.md b/subjects/printwordstables.fr.md deleted file mode 100644 index c636bc56..00000000 --- a/subjects/printwordstables.fr.md +++ /dev/null @@ -1,46 +0,0 @@ -## printwordstables - -### Instructions - -Écrire une fonction qui affiche les mots d'un tableau de `string` qui sera le resultat d'une fonction `SplitWhiteSpaces`. (les tests seront effectués avec la notre) - -Chaque mot est sur une seule ligne. - -Chaque mot fini avec un `\n`. - -### Fonction attendue - -```go -func PrintWordsTables(table []string) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import piscine ".." - -func main() { - - str := "Hello how are you?" - table := piscine.SplitWhiteSpaces(str) - piscine.PrintWordsTables(table) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build main.go -student@ubuntu:~/[[ROOT]]/test$ ./main -Hello -how -are -you? -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/public.fr.md b/subjects/public.fr.md deleted file mode 100644 index 7f8d501a..00000000 --- a/subjects/public.fr.md +++ /dev/null @@ -1 +0,0 @@ -## public diff --git a/subjects/raid1a.fr.md b/subjects/raid1a.fr.md deleted file mode 100644 index 52b15543..00000000 --- a/subjects/raid1a.fr.md +++ /dev/null @@ -1,117 +0,0 @@ -## raid1a - -### Instructions - -Écrire une fonction `Raid1a` qui affiche un rectangle **valide** de largeur `x` et de hauteur `y`. - -Cette fonction doit dessiner les rectangles comme sur les examples. - -### Fonction attendue - -```go -func Raid1a(x,y int) { - -} -``` - -### Utilisation - -Voici d'éventuels programmes pour tester votre fonction : - -Programme #1 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1a(5,3) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -o---o -| | -o---o -student@ubuntu:~/[[ROOT]]/test$ -``` - -Programme #2 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1a(5,1) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -o---o -student@ubuntu:~/[[ROOT]]/test$ -``` - -Programme #3 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1a(1,1) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -o -student@ubuntu:~/[[ROOT]]/test$ -``` - -Programme #4 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1a(1,5) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -o -| -| -| -o -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/raid1b.fr.md b/subjects/raid1b.fr.md deleted file mode 100644 index 6db8712c..00000000 --- a/subjects/raid1b.fr.md +++ /dev/null @@ -1,117 +0,0 @@ -## raid1b - -### Instructions - -Écrire une fonction `Raid1b` qui affiche un rectangle **valide** de largeur `x` et de hauteur `y`. - -Cette fonction doit dessiner les rectangles comme sur les examples. - -### Fonction attendue - -```go -func Raid1b(x,y int) { - -} -``` - -### Utilisation - -Voici d'éventuels programmes pour tester votre fonction : - -Programme #1 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1b(5,3) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -/***\ -* * -\***/ -student@ubuntu:~/[[ROOT]]/test$ -``` - -Programme #2 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1b(5,1) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -/***\ -student@ubuntu:~/[[ROOT]]/test$ -``` - -Programme #3 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1b(1,1) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -/ -student@ubuntu:~/[[ROOT]]/test$ -``` - -Programme #4 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1b(1,5) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -/ -* -* -* -\ -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/raid1c.fr.md b/subjects/raid1c.fr.md deleted file mode 100644 index 555365f2..00000000 --- a/subjects/raid1c.fr.md +++ /dev/null @@ -1,117 +0,0 @@ -## raid1c - -### Instructions - -Écrire une fonction `Raid1c` qui affiche un rectangle **valide** de largeur `x` et de hauteur `y`. - -Cette fonction doit dessiner les rectangles comme sur les examples. - -### Fonction attendue - -```go -func Raid1c(x,y int) { - -} -``` - -### Utilisation - -Voici d'éventuels programmes pour tester votre fonction :: - -Programme #1 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1c(5,3) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -ABBBA -B B -CBBBC -student@ubuntu:~/[[ROOT]]/test$ -``` - -Programme #2 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1c(5,1) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -ABBBA -student@ubuntu:~/[[ROOT]]/test$ -``` - -Programme #3 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1c(1,1) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -A -student@ubuntu:~/[[ROOT]]/test$ -``` - -Programme #4 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1c(1,5) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -A -B -B -B -C -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/raid1d.fr.md b/subjects/raid1d.fr.md deleted file mode 100644 index 61ac87a5..00000000 --- a/subjects/raid1d.fr.md +++ /dev/null @@ -1,117 +0,0 @@ -## raid1d - -### Instructions - -Écrire une fonction `Raid1d` qui affiche un rectangle **valide** de largeur `x` et de hauteur `y`. - -Cette fonction doit dessiner les rectangles comme sur les examples. - -### Fonction attendue - -```go -func Raid1d(x,y int) { - -} -``` - -### Utilisation - -Voici d'éventuels programmes pour tester votre fonction : - -Programme #1 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1d(5,3) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -ABBBC -B B -ABBBC -student@ubuntu:~/[[ROOT]]/test$ -``` - -Programme #2 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1d(5,1) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -ABBBC -student@ubuntu:~/[[ROOT]]/test$ -``` - -Programme #3 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1d(1,1) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -A -student@ubuntu:~/[[ROOT]]/test$ -``` - -Programme #4 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1d(1,5) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -A -B -B -B -A -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/raid1e.fr.md b/subjects/raid1e.fr.md deleted file mode 100644 index 7e511aad..00000000 --- a/subjects/raid1e.fr.md +++ /dev/null @@ -1,117 +0,0 @@ -## raid1e - -### Instructions - -Écrire une fonction `Raid1e` qui affiche un rectangle **valide** de largeur `x` et de hauteur `y`. - -Cette fonction doit dessiner les rectangles comme sur les examples. - -### Fonction attendue - -```go -func Raid1e(x,y int) { - -} -``` - -### Utilisation - -Voici d'éventuels programmes pour tester votre fonction : - -Programme #1 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1e(5,3) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -ABBBC -B B -CBBBA -student@ubuntu:~/[[ROOT]]/test$ -``` - -Programme #2 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1e(5,1) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -ABBBC -student@ubuntu:~/[[ROOT]]/test$ -``` - -Programme #3 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1e(1,1) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -A -student@ubuntu:~/[[ROOT]]/test$ -``` - -Programme #4 - -```go -package main - -import ( - student "./student" -) - -func main() { - student.Raid1e(1,5) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -A -B -B -B -C -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/raid2.fr.md b/subjects/raid2.fr.md deleted file mode 100644 index ff843ad3..00000000 --- a/subjects/raid2.fr.md +++ /dev/null @@ -1,42 +0,0 @@ -## raid2 - -### Instructions - -- Créer un programme qui résout un sudoku. - -- Un sudoku valide a seulement une solution possible. - -### Usage - -#### Example 1: - -Exemple d'output pour un sudoku valide : - -```console -student@ubuntu:~/[[ROOT]]/raid2$ go build -student@ubuntu:~/[[ROOT]]/raid2$ ./raid2 ".96.4...1" "1...6...4" "5.481.39." "..795..43" ".3..8...." "4.5.23.18" ".1.63..59" ".59.7.83." "..359...7" | cat -e -3 9 6 2 4 5 7 8 1$ -1 7 8 3 6 9 5 2 4$ -5 2 4 8 1 7 3 9 6$ -2 8 7 9 5 1 6 4 3$ -9 3 1 4 8 6 2 7 5$ -4 6 5 7 2 3 9 1 8$ -7 1 2 6 3 8 4 5 9$ -6 5 9 1 7 4 8 3 2$ -8 4 3 5 9 2 1 6 7$ -student@ubuntu:~/[[ROOT]]/raid2$ -``` - -#### Example 2: - -Examples d'outputs pour des inputs ou un sudoku invalides : - -```console -student@ubuntu:~/[[ROOT]]/raid2$ ./raid2 1 2 3 4 | cat -e -Error$ -student@ubuntu:~/[[ROOT]]/raid2$ ./raid2 | cat -e -Error$ -student@ubuntu:~/[[ROOT]]/raid2$ ./raid2 ".96.4...1" "1...6.1.4" "5.481.39." "..795..43" ".3..8...." "4.5.23.18" ".1.63..59" ".59.7.83." "..359...7" | cat -e -Error$ -student@ubuntu:~/[[ROOT]]/raid2$ -``` diff --git a/subjects/raid3.fr.md b/subjects/raid3.fr.md deleted file mode 100644 index 8bb400df..00000000 --- a/subjects/raid3.fr.md +++ /dev/null @@ -1,67 +0,0 @@ -## raid3 - -### Instructions - -Ce raid est basé sur les fonctions du `raid1`. - -Créer un programme `raid3` qui prend une `string` comme argument et qui affiche le nom du `raid1` correspondant et ses dimensions. - -- Si l'argument n'est pas un des `raid1` le programme affiche `Not a Raid function`. - -- Toutes les réponses doivent se terminer avec un retour à la ligne (`'\n'`). - -- Si il y a plus d'un `raid1` correspondant, le programme doit les afficher tous en ordre alphabétique et séparé par un `||`. - -### Utilisation - -- Si c'est `radi1a` - -```console -student@ubuntu:~/[[ROOT]]/raid3$ ls -l --rw-r--r-- 1 student student nov 23 14:30 raid3.go --rwxr-xr-x 1 student student nov 23 19:18 raid3 --rwxr-xr-x 1 student student nov 23 19:50 raid1a -drwxr-xr-x 2 student student nov 23 19:02 raid1aProg --rwxr-xr-x 1 student student nov 23 19:50 raid1b -drwxr-xr-x 2 student student nov 22 23:36 raid1bProg --rwxr-xr-x 1 student student nov 23 19:50 raid1c -drwxr-xr-x 2 student student nov 23 19:02 raid1cProg --rwxr-xr-x 1 student student nov 23 19:50 raid1d -drwxr-xr-x 2 student student nov 23 00:40 raid1dProg --rwxr-xr-x 1 student student nov 23 19:50 raid1e -drwxr-xr-x 2 student student nov 23 19:02 raid1eProg -student@ubuntu:~/[[ROOT]]/raid3$ ./raid1a 3 3 | ./raid3 -[raid1a] [3] [3] -student@ubuntu:~/[[ROOT]]/raid3$ -student@ubuntu:~/[[ROOT]]/raid3$ -student@ubuntu:~/[[ROOT]]/raid3$ -student@ubuntu:~/[[ROOT]]/raid3$ -``` - -- Si c'est `raidc 1 1` : - -```console -student@ubuntu:~/[[ROOT]]/raid3$ ./raid1c 1 1 -A -student@ubuntu:~/[[ROOT]]/raid3$ ./raid1d 1 1 -A -student@ubuntu:~/[[ROOT]]/raid3$ ./raid1e 1 1 -A -student@ubuntu:~/[[ROOT]]/raid3$ ./raid1c 1 1 | ./raid3 -[raid1c] [2] [1] || [raid1d] [2] [1] || [raid1e] [2] [1] -student@ubuntu:~/[[ROOT]]/raid3$ -``` - -- Si c'est `raidc 1 2` : - -```console -student@ubuntu:~/[[ROOT]]/raid3$ ./raid1e 1 2 -A -C -student@ubuntu:~/[[ROOT]]/raid3$ ./raid1c 1 2 -A -C -student@ubuntu:~/[[ROOT]]/raid3$ ./raid1e 1 2 | ./raid3 -[raid1c] [1] [2] || [raid1e] [1] [2] -student@ubuntu:~/[[ROOT]]/raid3$ -``` diff --git a/subjects/range.fr.md b/subjects/range.fr.md deleted file mode 100644 index cd5bedde..00000000 --- a/subjects/range.fr.md +++ /dev/null @@ -1,30 +0,0 @@ -## range - -### Instructions - -Écrire un programme qui doit: - -- Allouer (avec `make`) une slice d'entiers. - -- Le remplir avec des valeurs consécutives qui commencent au premier argument et qui finissent au deuxième (En incluant les valeurs des deux arguments !) - -- Et qui affiche cette slice. - -Les erreurs doivent être gérées. - -Si le nombre d'arguments est différent de 2 le programme affiche un retour à la ligne (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/range$ go build -student@ubuntu:~/range$ ./range 1 3 -[1 2 3] -student@ubuntu:~/range$ ./range -1 2 | cat -e -[-1 0 1 2]$ -student@ubuntu:~/range$ ./range 0 0 -[0] -student@ubuntu:~/reverserange$ ./reverserange 0 nan | cat -e -strconv.Atoi: parsing "nan": invalid syntax$ -student@ubuntu:~/range$ -``` diff --git a/subjects/rectangle.fr.md b/subjects/rectangle.fr.md deleted file mode 100644 index 038f378e..00000000 --- a/subjects/rectangle.fr.md +++ /dev/null @@ -1,52 +0,0 @@ -## Rectangle - -### Instructions - -Considérer qu'un point est défini par ses coordonnées et qu'un rectangle est défini par les points de son coin du haut à gauche et son coin du bas à droite. - -- Définir deux structures nommées, `point` et `rectangle`. - -- La structure `point` doit avoir deux variables, `x` et `y`, de type `int`. - -- La structure `rectangle` doit avoir deux variables, `upLeft` et `downRight` de type `point`. - -- Le but est de faire un programme qui: - - Avec une slice de points donnée de taille `n` retournes le plus petit rectangle qui contient tous les points dans le vecteur de points0. Le nom de cette fonction est `defineRectangle`. - - Et qui calcules et affiche l'airethe de ce rectangle défini. - -### Main et fonctions attendues pour ce programme - -```go -func defineRectangle(ptr *point, n int) *rectangle { - -} - -func calArea(ptr *rectangle) int { - -} - -func main() { - vPoint := []point{} - rectangle := &rectangle{} - n := 7 - - for i := 0; i < n; i++ { - val := point{ - x: i%2 + 1, - y: i + 2, - } - vPoint = append(vPoint, val) - } - rectangle = defineRectangle(vPoint, n) - fmt.Println("area of the rectangle:", calArea(rectangle)) -} -``` - -### Expected output - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -area of the rectangle: 6 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/recursivefactorial.fr.md b/subjects/recursivefactorial.fr.md deleted file mode 100644 index 4d64e80b..00000000 --- a/subjects/recursivefactorial.fr.md +++ /dev/null @@ -1,44 +0,0 @@ -## recursivefactorial - -### Instructions - -Écrire une fonction **récursive** qui renvoie la factorielle d'un `int` passé en paramètre. - -Les erreurs (valeurs non possibles ou overflows) renverront `0`. - -`for` est **interdit** pour cet exercice. - -### Fonction attendue - -```go -func RecursiveFactorial(nb int) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - arg := 4 - fmt.Println(piscine.RecursiveFactorial(arg)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -24 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/recursivepower.fr.md b/subjects/recursivepower.fr.md deleted file mode 100644 index 5d3bdc4d..00000000 --- a/subjects/recursivepower.fr.md +++ /dev/null @@ -1,45 +0,0 @@ -## recursivepower - -### Instructions - -Écrire une fonction **récursive** qui renvoie la puissance de deux `int` passés en paramètre. - -Les puissances négatives renverront `0`. Les overflows **ne doivent pas** être gérés. - -`for` est **interdit** pour cet exercice. - -### Fonction attendue - -```go -func RecursivePower(nb int, power int) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( -        "fmt" -        piscine ".." -) - -func main() { - arg1 := 4 - arg2 := 3 - fmt.Println(piscine.RecursivePower(arg1, arg2)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~$ go build -student@ubuntu:~$ ./recursivepower -64 -student@ubuntu:~$ -``` diff --git a/subjects/repeatalpha.fr.md b/subjects/repeatalpha.fr.md deleted file mode 100644 index d39ad9d4..00000000 --- a/subjects/repeatalpha.fr.md +++ /dev/null @@ -1,30 +0,0 @@ -## repeatalpha - -### Instructions - -Écrire un programme `repeat_alpha` qui prend une `string` et qui affiche la répétition de chaque caractère de l'alphabet autant de fois que l'index de cette lettre. - -Le résultat doit être suivi d'un retour à la ligne (`'\n'`). - -`'a'` devient `'a'`, `'b'` devient `'bb'`, `'e'` devient `'eeeee'`, etc... - -Si une lettre est en majuscule, elle reste en majuscule, de même si elle est en minuscule. - -Si le nombre d'arguments est différent de 1, le programme affiche un retour à la ligne (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/repeatalpha$ go build -student@ubuntu:~/[[ROOT]]/repeatalpha$ ./repeatalpha "abc" | cat -e -abbccc -student@ubuntu:~/[[ROOT]]/repeatalpha$ ./repeatalpha "Choumi." | cat -e -CCChhhhhhhhooooooooooooooouuuuuuuuuuuuuuuuuuuuummmmmmmmmmmmmiiiiiiiii.$ -student@ubuntu:~/[[ROOT]]/repeatalpha$ ./repeatalpha "abacadaba 01!" | cat -e -abbacccaddddabba 01!$ -student@ubuntu:~/[[ROOT]]/repeatalpha$ ./repeatalpha | cat -e -$ -student@ubuntu:~/[[ROOT]]/repeatalpha$ ./repeatalpha "" | cat -e -$ -student@ubuntu:~/[[ROOT]]/repeatalpha$ -``` diff --git a/subjects/reversebits.fr.md b/subjects/reversebits.fr.md deleted file mode 100644 index 2c4ea454..00000000 --- a/subjects/reversebits.fr.md +++ /dev/null @@ -1,34 +0,0 @@ -## reversebits - -## **AVERTISSEMENT! TRÈS IMPORTANT!** - -Pour cet exercice une fonction sera testée **avec le main de l'examen**. Cependant l'étudiant **doit quand même** rendre un programme structuré: - -Cela signifie que: - -- Le package doit être nommé `package main`. -- Le code rendu doit avoir une fonction main déclarée(`func main()`) même si elle est vide. -- La fonction main déclarée doit **aussi passer** le `Restrictions Checker`(le testeur de fonctions illégales). Il est conseillé à l'étudiant de rendre une fonction main vide après ses tests finis. -- Toutes les autres régles sont les mêmes que pour un `programme`. - -### Instructions - -Écrire une fonction qui prend un `byte`, qui l'inverse `bit` par `bit` (comme montré sur l'exemple) et qui retourne le résultat. - -### Fonction attendue - -```go -func ReverseBits(oct byte) byte { - -} - -``` - -Exemple: - - 1 byte -_____________ - 0010 0110 - || - \/ - 0110 0100 diff --git a/subjects/reverserange.fr.md b/subjects/reverserange.fr.md deleted file mode 100644 index fc145494..00000000 --- a/subjects/reverserange.fr.md +++ /dev/null @@ -1,32 +0,0 @@ -## reverserange - -### Instructions - -Écrire un programme qui doit: - -- Allouer (avec `make`) une slice d'entiers. - -- Le remplir avec des valeurs consécutives qui commencent au deuxième argument et qui finissent au premier (en incluant les valeurs des deux arguments !) - -- Et qui affiche cette slice. - -Les erreurs doivent être gérées. - -Si le nombre d'arguments est différent de 2 le programme affiche un retour à la ligne (`'\n'`). - -### Utilisation : - -```console -student@ubuntu:~/reverserange$ go build -student@ubuntu:~/reverserange$ ./reverserange 1 3 -[3 2 1] -student@ubuntu:~/reverserange$ ./reverserange -1 2 | cat -e -[2 1 0 -1]$ -student@ubuntu:~/reverserange$ ./reverserange 0 0 -[0] -student@ubuntu:~/reverserange$ ./reverserange 0 -3 -[-3 -2 -1 0] -student@ubuntu:~/reverserange$ ./reverserange 0 nan | cat -e -strconv.Atoi: parsing "nan": invalid syntax$ -student@ubuntu:~/reverserange$ -``` diff --git a/subjects/reversestrcap.fr.md b/subjects/reversestrcap.fr.md deleted file mode 100644 index 6485c066..00000000 --- a/subjects/reversestrcap.fr.md +++ /dev/null @@ -1,26 +0,0 @@ -## reversestrcap - -### Instructions - -Écrire un programme avec une ou plusieurs `string` comme arguments et qui, **pour chaque argument**: --place le dernier caractère de chaque mot (si c'est une lettre) en majuscule et le reste en minuscule. --affiche ensuite le résultat suivi d'un retour à la ligne (`'\n'`). - -Un mot est une suite de caractères alphanumériques. - -Si il n'y a pas de paramètre, le programme affiche un retour à la ligne. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/reversestrcap$ go build -student@ubuntu:~/[[ROOT]]/reversestrcap$ ./reversestrcap "First SMALL TesT" | cat -e -firsT smalL tesT$ -student@ubuntu:~/[[ROOT]]/reversestrcap$ ./reversestrcap go run reversestrcap.go "SEconD Test IS a LItTLE EasIEr" "bEwaRe IT'S NoT HARd WhEN " " Go a dernier 0123456789 for the road e" | cat -e -seconD tesT iS A littlE easieR$ -bewarE it'S noT harD wheN $ - gO A dernieR 0123456789 foR thE roaD E$ -student@ubuntu:~/[[ROOT]]/reversestrcap$ ./reversestrcap | cat -e -$ -student@ubuntu:~/[[ROOT]]/reversestrcap$ -``` diff --git a/subjects/revparams.fr.md b/subjects/revparams.fr.md deleted file mode 100644 index c9c2f68d..00000000 --- a/subjects/revparams.fr.md +++ /dev/null @@ -1,18 +0,0 @@ -## revparams - -### Instructions - -Écrire un **programme** qui affiche les arguments en ligne de commande en ordre inverse. - -Exemple de résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./revparams choumi is the best cat -cat -best -the -is -choumi -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/revwstr.fr.md b/subjects/revwstr.fr.md deleted file mode 100644 index 2eb541fd..00000000 --- a/subjects/revwstr.fr.md +++ /dev/null @@ -1,26 +0,0 @@ -## revWstr - -### Instructions - -Écrire un programme qui prend une `string` comme paramètre, et affiche ses mots en sens inverse. - -- Un mot est une suite de caractères **alphanumériques.** - -- Si le nombre de paramètres est différent de 1, le programme affiche un retour à la ligne (`'\n'`). - -- Dans les paramètres qui seront testés, il n'y aura pas d'espaces extra. (ce qui signifie qu'il n'y aura pas d'espaces additionnels, ni au début, ni à la fin de la `string` et que les mots seront toujours séparés par un seul espace). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test "the time of contempt precedes that of indifference" -indifference of that precedes contempt of time the -student@ubuntu:~/[[ROOT]]/test$ ./test "abcdefghijklm" -abcdefghijklm -student@ubuntu:~/[[ROOT]]/test$ ./test "he stared at the mountain" -mountain the at stared he -student@ubuntu:~/[[ROOT]]/test$ ./test "" | cat-e -$ -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/rostring.fr.md b/subjects/rostring.fr.md deleted file mode 100644 index ea7e4d3b..00000000 --- a/subjects/rostring.fr.md +++ /dev/null @@ -1,28 +0,0 @@ -## rostring - -### Instructions - -Écrire un programme qui prend une `string` et affiche cette `string` après avoir déplacé un mot vers la gauche. - -Le premier mot devient donc le dernier, et le reste des mots reste dans le même ordre. - -Un mot est une suite de caractères **alphanumériques.** - -Les mots devront être séparés par un seul espace dans l'output. - -Si le nombre d'arguments est différent de 1, le programme affiche un retour à la ligne. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/rostring$ go build -student@ubuntu:~/[[ROOT]]/rostring$ ./rostring "abc " | cat -e -abc$ -student@ubuntu:~/[[ROOT]]/rostring$ ./rostring "Let there be light" -there be light Let -student@ubuntu:~/[[ROOT]]/rostring$ ./rostring " AkjhZ zLKIJz , 23y" -zLKIJz , 23y AkjhZ -student@ubuntu:~/[[ROOT]]/rostring$ ./rostring | cat -e -$ -student@ubuntu:~/[[ROOT]]/rostring$ -``` diff --git a/subjects/rot13.fr.md b/subjects/rot13.fr.md deleted file mode 100644 index a17a91e0..00000000 --- a/subjects/rot13.fr.md +++ /dev/null @@ -1,24 +0,0 @@ -## rot13 - -### Instructions - -Écrire un programme qui prend une `string` et qui l'affiche, en remplaçant chacune de ses lettres par la lettre qui est 13 positions plus loin dans l'ordre alphabétique. - -- 'z' devient 'm' et 'Z' devient 'M'. Les majuscules restent des majuscules, de même pour les minuscules. - -- l'output sera suivi d'un retour à la ligne (`'\n'`). - -- Si le nombre d'arguments est différent de 1, le programme affiche un retour à la ligne (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test "abc" -nop -student@ubuntu:~/[[ROOT]]/test$ ./test "hello there" -uryyb gurer -student@ubuntu:~/[[ROOT]]/test$ ./test - -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/rot14.fr.md b/subjects/rot14.fr.md deleted file mode 100644 index 678c02dc..00000000 --- a/subjects/rot14.fr.md +++ /dev/null @@ -1,47 +0,0 @@ -## rot14 - -### Instructions - -Écrire une fonction `rot14` qui retourne la `string` en paramètre transformée en `string rot14`. - -- Il faut savoir ce que `rot13` signifie. - -### Fonction attendue - -```go -func Rot14(str string) string { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - piscine ".." - "github.com/01-edu/z01" -) - -func main() { - result := piscine.Rot14("Hello How are You") - arrayRune := []rune(result) - - for _, s := range arrayRune { - z01.PrintRune(s) - } - z01.PrintRune('\n') -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -Vszzc Vck ofs Mci -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/rot14prog.fr.md b/subjects/rot14prog.fr.md deleted file mode 100644 index 5d3b2736..00000000 --- a/subjects/rot14prog.fr.md +++ /dev/null @@ -1,18 +0,0 @@ -## rot14 - -### Instructions - -Écrire un programme qui retourne la `string` en paramètre transformée en `string rot14`.. - -### Utilisation - -```console -student@ubuntu:~/rot14prog$ go build -student@ubuntu:~/rot14prog$ ./rot14prog "Hello How are You" | cat -e -Vszzc Vck ofs Mci$ -student@ubuntu:~/rot14prog$ ./rot14prog Hello How are You - -student@ubuntu:~/rot14prog$ ./rot14prog - -student@ubuntu:~/rot14prog$ -``` diff --git a/subjects/rotatevowels.fr.md b/subjects/rotatevowels.fr.md deleted file mode 100644 index 7ab9f283..00000000 --- a/subjects/rotatevowels.fr.md +++ /dev/null @@ -1,28 +0,0 @@ -## rotatevowels - -### Instructions - -Write a **program** that checks the arguments for vowels. - -- If the argument contains vowels (for this exercise `y` is not considered a vowel) the program has to **"mirror"** the position of the vowels in the argument (see the examples). -- If the number of arguments is less than 1, the program display a new line ("`\n`"). -- If the arguments does not have any vowels, the program just prints the arguments. - -Example of output : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./rotatevowels "Hello World" | cat -e -Hollo Werld$ -student@ubuntu:~/[[ROOT]]/test$ ./rotatevowels "HEllO World" "problem solved" -Hello Werld problom sOlvEd -student@ubuntu:~/[[ROOT]]/test$ ./rotatevowels "str" "shh" "psst" -str shh psst -student@ubuntu:~/[[ROOT]]/test$ ./rotatevowels "happy thoughts" "good luck" -huppy thooghts guod lack -student@ubuntu:~/[[ROOT]]/test$ ./rotatevowels "aEi" "Ou" -uOi Ea -student@ubuntu:~/[[ROOT]]/test$ ./rotatevowels - -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/rpncalc.fr.md b/subjects/rpncalc.fr.md deleted file mode 100644 index b68d6643..00000000 --- a/subjects/rpncalc.fr.md +++ /dev/null @@ -1,56 +0,0 @@ -## rpncalc - -### Instructions - -Écrire un programme qui prend une `string` qui contient une équation écrite en `Reverse Polish Notation` (RPN) comme premier argument, qui évalue l'équation, et qui affiche le résultat sur la sortie standard suivi d'un retour à la ligne (`'\n'`). - -La `Reverse Polish Notation` est une notation mathématique dans laquelle chaque opérateur devance les valeurs qu'il va opérer. -En RPN, chaque opérateur évalue les deux précédentes valeurs, et le résultat de cette opération devient ensuite la première des valeurs de l'opérateur. Les valeurs et les opérateurs doivent être espacés d'au moins un espace. - -Les opérateurs suivants doivent être implémentés : `+`, `-`, `*`, `/`, et `%`. - -Si la `string` n'est pas valide ou si il n'y pas exactement un argument, le mot `Error` doit être affiché sur la sortie standard suivi d'un retour à la ligne. -Si la `string` a des espaces extra elle est toujours considérée valide. - -Toutes les valeurs données doivent rentrer dans un `int`. - -Exemples de formules converties en RPN: - -3 + 4 >> 3 4 + -((1 _ 2) _ 3) - 4 >> 1 2 _ 3 _ 4 - ou 3 1 2 \* _ 4 - -50 _ (5 - (10 / 9)) >> 5 10 9 / - 50 \* - -Voici comment évaluer une formule en RPN: - -``` -1 2 * 3 * 4 - -2 3 * 4 - -6 4 - -2 -``` - -ou: - -``` -3 1 2 * * 4 - -3 2 * 4 - -6 4 - -2 -``` - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/rpncalc$ go build -student@ubuntu:~/[[ROOT]]/rpncalc$ ./rpncalc "1 2 * 3 * 4 +" | cat -e -10$ -student@ubuntu:~/[[ROOT]]/rpncalc$ ./rpncalc 1 2 3 4 +" | cat -e -Error$ -student@ubuntu:~/[[ROOT]]/rpncalc$ ./rpncalc | cat -e -Error$ -student@ubuntu:~/[[ROOT]]/rpncalc$ ./rpncalc " 1 3 * 2 -" | cat -e -1 -student@ubuntu:~/[[ROOT]]/rpncalc$ ./rpncalc " 1 3 * ksd 2 -" | cat -e -Error$ -student@ubuntu:~/[[ROOT]]/rpncalc$ -``` diff --git a/subjects/searchreplace.fr.md b/subjects/searchreplace.fr.md deleted file mode 100644 index de0e90a5..00000000 --- a/subjects/searchreplace.fr.md +++ /dev/null @@ -1,22 +0,0 @@ -## searchreplace - -### Instructions - -Écrire un programme qui prends 3 arguments, le premier argument est une `string` dans laquelle une lettre (le 2éme argument) est remplacée par une autre (3éme argument). - -- Si le nombre d'aruments n'est pas 3, le programme affiche un retour à la ligne (`'\n'`). - -- Si le second argument n'est pas contenu dans le premier (la `string`) alors le programme réécris la `string` suivi d'un retour à la ligne (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test "hella there" "a" "o" -hello there -student@ubuntu:~/[[ROOT]]/test$ ./test "abcd" "z" "l" -abcd -student@ubuntu:~/[[ROOT]]/test$ ./test "something" "a" "o" "b" "c" - -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/sortedlistmerge.fr.md b/subjects/sortedlistmerge.fr.md deleted file mode 100644 index 64c39c8b..00000000 --- a/subjects/sortedlistmerge.fr.md +++ /dev/null @@ -1,75 +0,0 @@ -## sortedlistmerge - -### Instructions - -Écrire une fonction `SortedListMerge` qui merge deux listes `n1` et `n2` en ordre ascendant. - -- Pendant les tests `n1` et `n2` seront déjà triées. - -### Fonction et structure attendues - -```go -func SortedListMerge(n1 *NodeI, n2 *NodeI) *NodeI { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - - piscine ".." -) - -func PrintList(l *piscine.NodeI) { - it := l - for it != nil { - fmt.Print(it.Data, " -> ") - it = it.Next - } - fmt.Print(nil, "\n") -} - -func listPushBack(l *piscine.NodeI, data int) *piscine.NodeI { - n := &piscine.NodeI{Data: data} - - if l == nil { - return n - } - iterator := l - for iterator.Next != nil { - iterator = iterator.Next - } - iterator.Next = n - return l -} - -func main() { - var link *piscine.NodeI - var link2 *piscine.NodeI - - link = listPushBack(link, 3) - link = listPushBack(link, 5) - link = listPushBack(link, 7) - - link2 = listPushBack(link2, -2) - link2 = listPushBack(link2, 9) - - PrintList(piscine.SortedListMerge(link2, link)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test --2 -> 3 -> 5 -> 7 -> 9 -> -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/sortintegertable.fr.md b/subjects/sortintegertable.fr.md deleted file mode 100644 index d0eb2ca4..00000000 --- a/subjects/sortintegertable.fr.md +++ /dev/null @@ -1,41 +0,0 @@ -## sortintegertable - -### Instructions - -- Écrire une fonction qui trie un tableau d'`int` (entier) par ordre croissant. - -### Fonction attendue - -```go -func SortIntegerTable(table []int) { - -} -``` - -### Utilisation - -Voici un éventuel [programme](TODO-LINK) pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - s := []int{5,4,3,2,1,0} - piscine.SortIntegerTable(s) - fmt.Println(s) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -[0,1,2,3,4,5] -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/sortlist.fr.md b/subjects/sortlist.fr.md deleted file mode 100644 index c7b52e18..00000000 --- a/subjects/sortlist.fr.md +++ /dev/null @@ -1,42 +0,0 @@ -## sortList - -### Instructions - -Écrire une fonction qui doit : - -- Trier la liste donnée en paramètre en utilisant la fonction cmp pour sélectionner l'ordre à appliquer, - -- Retourner un pointeur au premier élément de la liste triée. - -Les duplications doivent rester. - -Les inputs seront toujours valides. - -Le `type NodeList` doit être utilisé. - -Les fonctions passées comme `cmp` retourneront toujours `true` si `a` et `b` sont dans le bon ordre, sinon elles retourneront `false`. - -### Fonction et structure attendues - -```go -type Nodelist struct { - Data int - Next *Nodelist -} - -func SortList (l *NodeList, cmp func(a,b int) bool) *NodeList{ - -} -``` - -- Par exemple, la fonction suivante utilisée comme `cmp` triera la liste dans l'ordre croissant : - -```go -func ascending(a, b int) bool{ - if a <= b { - return true - } else { - return false - } -} -``` diff --git a/subjects/sortlistinsert.fr.md b/subjects/sortlistinsert.fr.md deleted file mode 100644 index c6e2112c..00000000 --- a/subjects/sortlistinsert.fr.md +++ /dev/null @@ -1,78 +0,0 @@ -## sortlistinsert - -### Instructions - -Écrire une fonction `SortListInsert` qui insère `data_ref` dans la liste chaînée `l` -tout en gardant cette liste triée par ordre croissant. - -- Pendant les tests la liste passée en argument sera déjà triée. - -### Fonction et structure attendues - -```go -func SortListInsert(l *NodeI, data_ref int) *NodeI{ - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - - piscine ".." -) - -func PrintList(l *piscine.NodeI) { - it := l - for it != nil { - fmt.Print(it.Data, " -> ") - it = it.Next - } - fmt.Print(nil, "\n") -} - -func listPushBack(l *piscine.NodeI, data int) *piscine.NodeI { - n := &piscine.NodeI{Data: data} - - if l == nil { - return n - } - iterator := l - for iterator.Next != nil { - iterator = iterator.Next - } - iterator.Next = n - return l -} - -func main() { - - var link *piscine.NodeI - - link = listPushBack(link, 1) - link = listPushBack(link, 4) - link = listPushBack(link, 9) - - PrintList(link) - - link = piscine.SortListInsert(link, -2) - link = piscine.SortListInsert(link, 2) - PrintList(link) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -1 -> 4 -> 9 -> --2 -> 1 -> 2 -> 4 -> 9 -> -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/sortparams.fr.md b/subjects/sortparams.fr.md deleted file mode 100644 index 14f3528f..00000000 --- a/subjects/sortparams.fr.md +++ /dev/null @@ -1,21 +0,0 @@ -## sortparams - -### Instructions - -Écrire un **programme** qui affiche les arguments en ligne de commande en ordre asscii. - -Exemple de résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./sortparams 1 a 2 A 3 b 4 C -1 -2 -3 -4 -A -C -a -b -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/sortwordarr.fr.md b/subjects/sortwordarr.fr.md deleted file mode 100644 index 07f0379e..00000000 --- a/subjects/sortwordarr.fr.md +++ /dev/null @@ -1,43 +0,0 @@ -## sortwordarr - -### Instructions - -Écrire une fonction `SortWordArr` qui trie par ordre `ascii` (dans l'ordre croissant) un tableau de `string`. - -### Fonction attendue - -```go -func SortWordArr(array []string) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - - result := []string{"a", "A", "1", "b", "B", "2", "c", "C", "3"} - piscine.SortWordArr(result) - - fmt.Println(result) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -[1 2 3 A B C a b c] -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/sortwordarrprog.fr.md b/subjects/sortwordarrprog.fr.md deleted file mode 100644 index 209a2e81..00000000 --- a/subjects/sortwordarrprog.fr.md +++ /dev/null @@ -1,53 +0,0 @@ -## sortwordarrprog - -##**AVERTISSEMENT! TRÈS IMPORTANT!** - -Pour cet exercice une fonction sera testée **avec le main de l'examen**. Cependant l'étudiant **doit quand même** rendre un programme structuré: - -Cela signifie que: - -- Le package doit être nommé `package main`. -- Le code rendu doit avoir une fonction main déclarée(`func main()`) même si elle est vide. -- La fonction main déclarée doit **aussi passer** le `Restrictions Checker`(le testeur de fonctions illégales). Il est conseillé à l'étudiant de rendre une fonction main vide après ses tests finis. -- Toutes les autres régles sont les mêmes que pour un `programme`. - -### Instructions - -Écrire une fonction `SortWordArr` qui trie par ordre `ascii` (dans l'ordre croissant) un tableau de `string`. - -### Fonction attendue - -```go -func SortWordArr(array []string) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" -) - -func main() { - - result := []string{"a", "A", "1", "b", "B", "2", "c", "C", "3"} - SortWordArr(result) - - fmt.Println(result) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/test$ go build -student@ubuntu:~/test$ ./test -[1 2 3 A B C a b c] -student@ubuntu:~/test$ -``` diff --git a/subjects/split.fr.md b/subjects/split.fr.md deleted file mode 100644 index 0a6d4f31..00000000 --- a/subjects/split.fr.md +++ /dev/null @@ -1,42 +0,0 @@ -## split - -### Instructions - -Écrire une fonction qui sépare les mots d'une `string` et les met dans un tableau de `string`. - -Les séparateurs sont les caractères de la `string charset` donnée en paramètre. - -### Fonction attendue - -```go -func Split(str, charset string) []string { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - str := "HelloHAhowHAareHAyou?" - fmt.Println(piscine.Split(str, "HA")) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -[Hello how are you?] -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/splitprog.fr.md b/subjects/splitprog.fr.md deleted file mode 100644 index 5a92cd66..00000000 --- a/subjects/splitprog.fr.md +++ /dev/null @@ -1,53 +0,0 @@ -## splitprog - -## **AVERTISSEMENT! TRÈS IMPORTANT!** - -Pour cet exercice une fonction sera testée **avec le main de l'examen**. Cependant l'étudiant **doit quand même** rendre un programme structuré: - -Cela signifie que: - -- Le package doit être nommé `package main`. -- Le code rendu doit avoir une fonction main déclarée(`func main()`) même si elle est vide. -- La fonction main déclarée doit **aussi passer** le `Restrictions Checker`(le testeur de fonctions illégales). Il est conseillé à l'étudiant de rendre une fonction main vide après ses tests finis. -- Toutes les autres régles sont les mêmes que pour un `programme`. - -### Instructions - -Écrire une fonction qui sépare les mots d'une `string`, qui les met dans un tableau de `string`. - -Les séparateurs sont les caractères de la `charset string` donnée en paramètre. - -### Fonction attendue - -```go -func Split(str, charset string) []string { - -} -``` - -### Utilsation - -Voici un programme possible pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - str := "HelloHAhowHAareHAyou?" - fmt.Println(piscine.Split(str, "HA")) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -[Hello how are you?] -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/splitwhitespaces.fr.md b/subjects/splitwhitespaces.fr.md deleted file mode 100644 index 39b8a077..00000000 --- a/subjects/splitwhitespaces.fr.md +++ /dev/null @@ -1,42 +0,0 @@ -## splitwhitespaces - -### Instructions - -Écrire une fonction qui sépare les mots d'une `string` et les met dans un tableau de `string`. - -Les séparateurs sont les espaces, les tabulations et les retours à la ligne. - -### Fonction attendue - -```go -func SplitWhiteSpaces(str string) []string { - -} -``` - -### Utilisation - -Voici un éventuel [programme](TODO-LINK) pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - str := "Hello how are you?" - fmt.Println(piscine.SplitWhiteSpaces(str)) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -[Hello how are you?] -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/sqrt.fr.md b/subjects/sqrt.fr.md deleted file mode 100644 index e0c34b05..00000000 --- a/subjects/sqrt.fr.md +++ /dev/null @@ -1,44 +0,0 @@ -## sqrt - -### Instructions - -Écrire une fonction qui renvoie la racine carré d'un `int` passé en paramètre as parameter si cette racine carré est un nombre entier. Autrement elle renvoie `0`. - -### Fonction attendue - -```go -func Sqrt(nb int) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( -        "fmt" -        piscine ".." -) - -func main() { - arg1 := 4 - arg2 := 3 - fmt.Println(piscine.Sqrt(arg1)) - fmt.Println(piscine.Sqrt(arg2)) - -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -2 -0 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/strlen.fr.md b/subjects/strlen.fr.md deleted file mode 100644 index 1a45ba32..00000000 --- a/subjects/strlen.fr.md +++ /dev/null @@ -1,41 +0,0 @@ -## strlen - -### Instructions - -- Écrire une fonction qui compte le nombre de `runes` d'une `string` et qui retourne le nombre trouvé. - -### Fonction attendue - -```go -func StrLen(str string) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - str := "Hello World!" - nb := piscine.StrLen(str) - fmt.Println(nb) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -12 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/strlenprog.fr.md b/subjects/strlenprog.fr.md deleted file mode 100644 index 8cc6e298..00000000 --- a/subjects/strlenprog.fr.md +++ /dev/null @@ -1,51 +0,0 @@ -## strlenprog - -##**AVERTISSEMENT! TRÈS IMPORTANT!** - -Pour cet exercice une fonction sera testée **avec le main de l'examen**. Cependant l'étudiant **doit quand même** rendre un programme structuré: - -Cela signifie que: - -- Le package doit être nommé `package main`. -- Le code rendu doit avoir une fonction main déclarée(`func main()`) même si elle est vide. -- La fonction main déclarée doit **aussi passer** le `Restrictions Checker`(le testeur de fonctions illégales). Il est conseillé à l'étudiant de rendre une fonction main vide après ses tests finis. -- Toutes les autres régles sont les mêmes que pour un `programme`. - -### Instructions - -- Écrire une fonction qui compte le nombre de `runes` d'une `string` et qui retourne le nombre trouvé. - -### Fonction attendue - -```go -func StrLen(str string) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" -) - -func main() { - str := "Hello World!" - nb := StrLen(str) - fmt.Println(nb) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -12 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/strrev.fr.md b/subjects/strrev.fr.md deleted file mode 100644 index 0ba8c64e..00000000 --- a/subjects/strrev.fr.md +++ /dev/null @@ -1,43 +0,0 @@ -## strrev - -### Instructions - -- Écrire une fonction qui inverse une chaîne de caractères(`string`). - -- Cette fonction **retournera** la chaîne de caractères s(`string`). - -### Fonction attendue - -```go -func StrRev(s string) string { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - s := "Hello World!" - s = piscine.StrRev(s) - fmt.Println(s) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -!dlroW olleH -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/strrevprog.fr.md b/subjects/strrevprog.fr.md deleted file mode 100644 index 48581f8d..00000000 --- a/subjects/strrevprog.fr.md +++ /dev/null @@ -1,15 +0,0 @@ -## strrevprog - -### Instructions - -- Écrire un programme qui inverse une `string` et qui l'affiche dans la sortie standard. - -### Utilisation : - -```console -student@ubuntu:~/[[ROOT]]/strrevprog$ go build -student@ubuntu:~/[[ROOT]]/strrevprog$ ./strrevprog "Hello World!" | cat -e -!dlroW olleH$ -student@ubuntu:~/[[ROOT]]/strrevprog$ ./strrevprog -student@ubuntu:~/[[ROOT]]/strrevprog$ -``` diff --git a/subjects/swap.fr.md b/subjects/swap.fr.md deleted file mode 100644 index 95864263..00000000 --- a/subjects/swap.fr.md +++ /dev/null @@ -1,44 +0,0 @@ -## swap - -### Instructions - -- Écrire une fonction qui échange les contenus de deux **pointeurs sur entier** (`*int`). - -### Fonction attendue - -```go -func Swap(a *int, b *int) { - -} -``` - -### Utilisation - -Voici un éventuel [programme](TODO-LINK) pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - a := 0 - b := 1 - piscine.Swap(&a, &b) - fmt.Println(a) - fmt.Println(b) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -1 -0 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/swapbits.fr.md b/subjects/swapbits.fr.md deleted file mode 100644 index 679fe936..00000000 --- a/subjects/swapbits.fr.md +++ /dev/null @@ -1,26 +0,0 @@ -## swapbits - -### Instructions - -Écrire une fonction qui prend un `byte`, échange ses moitiés (comme sur l'exemple) et retourne le résultat. - -### Fonction attendue - -```go -func SwapBits(octet byte) byte { - -} -``` - -Exemple: - -1 byte - ---- - -``` -0100 | 0001 - \ / - / \ -0001 | 0100 -``` diff --git a/subjects/switchcase.fr.md b/subjects/switchcase.fr.md deleted file mode 100644 index a8c00648..00000000 --- a/subjects/switchcase.fr.md +++ /dev/null @@ -1,22 +0,0 @@ -## switchcase - -### Instructions - -Écrire un programme qui prend une `string` et qui inverses les majuscules en minuscules et vice-versa. - -- Tout autre caractère reste inchangé. - -- Le résultat doit être suivi d'un retour à la ligne (`'\n'`). - -- Si le nombre d'arguments est différent de 1, le programme affiche un retour à la ligne (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test "SometHingS iS WronG" -sOMEThINGs Is wRONg -student@ubuntu:~/[[ROOT]]/test$ ./test - -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/tabmult.fr.md b/subjects/tabmult.fr.md deleted file mode 100644 index fa47c11d..00000000 --- a/subjects/tabmult.fr.md +++ /dev/null @@ -1,36 +0,0 @@ -## tabmult - -### Instructions - -Écrire un programme qui affiche la table de multiplication d'un nombre. - -- Le paramètre sera toujours un nombre strictement positif qui rentre dans un `int`. Ce paramètre multiplié par 9 rentrera aussi dans un `int`. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test 9 -1 x 9 = 9 -2 x 9 = 18 -3 x 9 = 27 -4 x 9 = 36 -5 x 9 = 45 -6 x 9 = 54 -7 x 9 = 63 -8 x 9 = 72 -9 x 9 = 81 -student@ubuntu:~/[[ROOT]]/test$ ./test 19 -1 x 19 = 19 -2 x 19 = 38 -3 x 19 = 57 -4 x 19 = 76 -5 x 19 = 95 -6 x 19 = 114 -7 x 19 = 133 -8 x 19 = 152 -9 x 19 = 171 -student@ubuntu:~/[[ROOT]]/test$ - -student@ubuntu:~/[[ROOT]]/ -``` diff --git a/subjects/to-git-or-not-to-git.fr.md b/subjects/to-git-or-not-to-git.fr.md deleted file mode 100644 index 8413bbf1..00000000 --- a/subjects/to-git-or-not-to-git.fr.md +++ /dev/null @@ -1,17 +0,0 @@ -## to-git-or-not-to-git-? - -### Instructions - -Écrire dans un fichier `to-git-or-not-to-git.sh` la commande qui isoles votre `id git`. -Seulement les chiffres apparaitront. - -> Documentation de l'API locale https://[[DOMAIN]]/git/api/swagger - -### Utilisation - -```console -$ ./to-git-or-not-to-git.sh -231748 -$ -` -``` diff --git a/subjects/tolower.fr.md b/subjects/tolower.fr.md deleted file mode 100644 index 918a0bd6..00000000 --- a/subjects/tolower.fr.md +++ /dev/null @@ -1,39 +0,0 @@ -## tolower - -### Instructions - -Écrire une fonction qui met en minuscule chaque lettre d'une `string`. - -### Fonction attendue - -```go -func ToLower(s string) string { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - fmt.Println(piscine.ToLower("Hello! How are you?")) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -hello! how are you? -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/toupper.fr.md b/subjects/toupper.fr.md deleted file mode 100644 index 16d0566f..00000000 --- a/subjects/toupper.fr.md +++ /dev/null @@ -1,39 +0,0 @@ -## toupper - -### Instructions - -Écrire une fonction qui met en majuscule chaque lettre d'une `string`. - -### Fonction attendue - -```go -func ToUpper(s string) string { - -} -``` - -### Utilisation - -Voici un éventuel [programme](TODO-LINK) pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - fmt.Println(piscine.ToUpper("Hello! How are you?")) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -HELLO! HOW ARE YOU? -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/trimatoi.fr.md b/subjects/trimatoi.fr.md deleted file mode 100644 index e150ada1..00000000 --- a/subjects/trimatoi.fr.md +++ /dev/null @@ -1,71 +0,0 @@ -## trimatoi - -### Instructions - -- 'Écrire une function qui transforme un nombre dans une `string` en un nombre représenté en `int`(entier). - -- Pour cet exercice la gestion des signes + ou - **doit être** prise en compte. Si un des signes se situe avant un chiffre alors il déterminera le signe de l'`int` retourné. - -- Cette fonction aura **seulement** à retourner l'`int` (entier). En cas d'input invalide, la fonction devra retourné `0`. - -### Fonction attendue - -```go -func TrimAtoi(s string) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - s := "12345" - s2 := "str123ing45" - s3 := "012 345" - s4 := "Hello World!" - s5 := "sd+x1fa2W3s4" - s6 := "sd-x1fa2W3s4" - s7 := "sdx1-fa2W3s4" - - n := piscine.TrimAtoi(s) - n2 := piscine.TrimAtoi(s2) - n3 := piscine.TrimAtoi(s3) - n4 := piscine.TrimAtoi(s4) - n5 := piscine.TrimAtoi(s5) - n6 := piscine.TrimAtoi(s6) - n7 := piscine.TrimAtoi(s7) - - fmt.Println(n) - fmt.Println(n2) - fmt.Println(n3) - fmt.Println(n4) - fmt.Println(n5) - fmt.Println(n6) - fmt.Println(n7) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -12345 -12345 -12345 -0 -1234 --1234 -1234 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/ultimatedivmod.fr.md b/subjects/ultimatedivmod.fr.md deleted file mode 100644 index 9d863d01..00000000 --- a/subjects/ultimatedivmod.fr.md +++ /dev/null @@ -1,48 +0,0 @@ -## ultimatedivmod - -### Instructions - -- Écrire une fonction qui aura le format ci-dessous. - -### Fonction attendue - -```go -func UltimateDivMod(a *int, b *int) { - -} -``` - -- Cette fonction divisera les int pointés par **a** et **b**. -- Le résultat de la division sera stocké dans l'int pointé par **a**. -- Le reste de cette division sera stocké dans l'int pointé par **b**. - -### Utilisation - -Voici un éventuel [programme](TODO-LINK) pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - a := 13 - b := 2 - piscine.UltimateDivMod(&a, &b) - fmt.Println(a) - fmt.Println(b) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -6 -1 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/ultimatepointone.fr.md b/subjects/ultimatepointone.fr.md deleted file mode 100644 index e12859e0..00000000 --- a/subjects/ultimatepointone.fr.md +++ /dev/null @@ -1,43 +0,0 @@ -## ultimatepointone - -### Instructions - -- Écrire une fonction qui prend un **pointeur sur pointeur sur pointeur sur int** en argument et qui assignes à cet int la valeur 1. - -### Fonction attendue - -```go -func UltimatePointOne(n ***int) { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - a := 0 - b := &a - n := &b - piscine.UltimatePointOne(&n) - fmt.Println(a) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -1 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/unavailable.fr.md b/subjects/unavailable.fr.md deleted file mode 100644 index 6be8cf6a..00000000 --- a/subjects/unavailable.fr.md +++ /dev/null @@ -1,3 +0,0 @@ -# Indisponible - -Ce sujet est actuellement indisponible pour vous. diff --git a/subjects/union.fr.md b/subjects/union.fr.md deleted file mode 100644 index fea6eae2..00000000 --- a/subjects/union.fr.md +++ /dev/null @@ -1,26 +0,0 @@ -## union - -### Instructions - -Écrire un programme qui prend deux `string` et affiche, sans doublons, les caractères qui apparaissent dans l'une ou l'autre des `string`. - -L'affichage se fera dans l'ordre d'apparition des caractères de la ligne de commande, et il sera suivi d'un retour à la ligne (`'\n'`). - -Si le nombre d'arguments est différent de 2, le programme affiche un retour à la ligne (`'\n'`). - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/union$ go build -student@ubuntu:~/[[ROOT]]/union$ ./union zpadinton "paqefwtdjetyiytjneytjoeyjnejeyj" | cat -e -zpadintoqefwjy$ -student@ubuntu:~/[[ROOT]]/union$ ./union ddf6vewg64f gtwthgdwthdwfteewhrtag6h4ffdhsd | cat -e -df6vewg4thras$ -student@ubuntu:~/[[ROOT]]/union$ ./union "rien" "cette phrase ne cache rien" | cat -e -rienct phas$ -student@ubuntu:~/[[ROOT]]/union$ ./union | cat -e -$ -student@ubuntu:~/[[ROOT]]/union$ ./union "rien" | cat -e -$ -student@ubuntu:~/[[ROOT]]/union$ -``` diff --git a/subjects/unmatch.fr.md b/subjects/unmatch.fr.md deleted file mode 100644 index 41c370a1..00000000 --- a/subjects/unmatch.fr.md +++ /dev/null @@ -1,41 +0,0 @@ -## unmatch - -### Instructions - -Écrire une fonction, `Unmatch`, qui retourne l'élément de la slice (arr) qui n'a pas de paire correspondante. - -### Fonction attendue - -```go -func Unmatch(arr []int) int { - -} -``` - -### Utilisation - -Voici un éventuel programme pour tester votre fonction : - -```go -package main - -import ( - "fmt" - piscine ".." -) - -func main() { - arr := []int{1, 2, 3, 1, 2, 3, 4} - unmatch := piscine.Unmatch(arr) - fmt.Println(unmatch) -} -``` - -Et son résultat : - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test -4 -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/wdmatch.fr.md b/subjects/wdmatch.fr.md deleted file mode 100644 index 4975d2ac..00000000 --- a/subjects/wdmatch.fr.md +++ /dev/null @@ -1,27 +0,0 @@ -## wdmatch - -### Instructions - -Écrire un programme qui prend deux `string` et vérifie si il est possible d'écrire la première `string` avec des caractères de la deuxième `string`, tout en respectant l'ordre dans lequel ces caractères apparaissent dans la deuxième `string`. - -Si cela est possible, le programme affiche la `string` suivie par un retour à la ligne (`'\n'`), autrement le programme affiche un retour à la ligne. - -Si le nombre d'arguments est différent de 2, le programme affiche un retour à la ligne. - -### Utilisation - -```console -student@ubuntu:~/[[ROOT]]/test$ go build -student@ubuntu:~/[[ROOT]]/test$ ./test "faya" "fgvvfdxcacpolhyghbreda" -faya -student@ubuntu:~/[[ROOT]]/test$ ./test "faya" "fgvvfdxcacpolhyghbred" - -student@ubuntu:~/[[ROOT]]/test$ ./test "error" rrerrrfiiljdfxjyuifrrvcoojh - -student@ubuntu:~/[[ROOT]]/test$ ./test "quarante deux" "qfqfsudf arzgsayns tsregfdgs sjytdekuoixq " -quarante deux - -student@ubuntu:~/[[ROOT]]/test$ ./test - -student@ubuntu:~/[[ROOT]]/test$ -``` diff --git a/subjects/who-are-you.fr.md b/subjects/who-are-you.fr.md deleted file mode 100644 index c94268f8..00000000 --- a/subjects/who-are-you.fr.md +++ /dev/null @@ -1,13 +0,0 @@ -## who-are-you - -### Instructions - -"Vous venez de vous réveillez dans une allée sombre... -Vous n'arrivez pas à vous souvenir qui vous êtes... -Tout ce qui vous vient à l'esprit est une étiquette sur laquelle est écrite: `subject Id: 70`" - -Créer le fichier `who-are-you.sh` qui vous rappellera qui vous êtes en affichant votre Nom seulement. - -- Où chercher : https://[[DOMAIN]]/assets/superhero/all.json - -- Quoi utiliser : `curl` et `jq` diff --git a/subjects/ztail.fr.md b/subjects/ztail.fr.md deleted file mode 100644 index c60f85e6..00000000 --- a/subjects/ztail.fr.md +++ /dev/null @@ -1,13 +0,0 @@ -## ztail - -### Instructions - -Écrire un programme `ztail` qui a le même comportement que la ligne de commande `tail`, mais qui prend au moins 1 fichier comme argument. - -- La seule option qui doit être géré est `-c`. Cette option sera utilisé dans tous les tests. - -- Pour ce programme le package "os" peut être utilisé. - -- Pour que le programme passe les tests la convention pour le retour code de programme en systémes Unix devra être suivi. - -- Pour plus d'informtations consulter la page du man de `tail`.