From 98cf1e002e0e27b290a775265fa3bafd0ad8e5b2 Mon Sep 17 00:00:00 2001 From: lee Date: Wed, 26 Jun 2019 12:55:47 +0100 Subject: [PATCH] fix readme listsort from quest 11 --- subjects/listsort.en.md | 52 +++++++++++++------------------ subjects/listsort.fr.md | 69 ++++++++++++++++++++++++++++++++--------- 2 files changed, 76 insertions(+), 45 deletions(-) diff --git a/subjects/listsort.en.md b/subjects/listsort.en.md index b690cb98..7672ad54 100644 --- a/subjects/listsort.en.md +++ b/subjects/listsort.en.md @@ -13,12 +13,12 @@ Write a function `ListSort` that sorts the linked list by ascending order. ### Expected function and structure ```go -type node struct { - data int - next *node +type Nodee struct { + Data int + Next *Nodee } -func ListSort(l *node) *node { +func ListSort(l *Nodee) *Nodee { } ``` @@ -32,53 +32,45 @@ package main import ( "fmt" + piscine ".." ) -//Prints the list -func PrintList(l *node) { +func PrintList(l *piscine.Nodee) { m := l for m != nil { - fmt.Print(m.data, " -> ") - m = m.next + fmt.Print(m.Data, " -> ") + m = m.Next } - fmt.Print(nil) fmt.Println() } -//insert elements -func listPushBack(l *node, data int) { - - n := &node{} - n.data = data - n.next = nil +func listPushBack(l *piscine.Nodee, data int) *piscine.Nodee { + n := &piscine.Nodee{Data: data} if l == nil { - l = n - return + return n } - iterator := l - for iterator.next != nil { - iterator = iterator.next + for iterator.Next != nil { + iterator = iterator.Next } - iterator.next = n + iterator.Next = n + return l } func main() { - link := &node{} + var link *piscine.Nodee - listPushBack(link, 5) - listPushBack(link, 4) - listPushBack(link, 3) - listPushBack(link, 2) - listPushBack(link, 1) + link = listPushBack(link, 5) + link = listPushBack(link, 4) + link = listPushBack(link, 3) + link = listPushBack(link, 2) + link = listPushBack(link, 1) PrintList(piscine.ListSort(link)) - } - ``` And its output : @@ -86,6 +78,6 @@ And its output : ```console student@ubuntu:~/piscine/test$ go build student@ubuntu:~/piscine/test$ ./test -0 -> 1 -> 2 -> 3 -> 4 -> 5 -> +1 -> 2 -> 3 -> 4 -> 5 -> student@ubuntu:~/piscine/test$ ``` diff --git a/subjects/listsort.fr.md b/subjects/listsort.fr.md index 7db913a6..7672ad54 100644 --- a/subjects/listsort.fr.md +++ b/subjects/listsort.fr.md @@ -1,44 +1,83 @@ -## countif +## listpushback ### Instructions -Écrire une fonction `CountIf` qui retournes le nombre d'éléments d'un tableau de `string` pour lesquels la fonction `f` retourne `true`. +Write a function `ListSort` that sorts the linked list by ascending order. -### Fonction attendue +- This time you only will have the `node` structure. + +- Try to use recursive. + +- Use pointers when ever you can. + +### Expected function and structure ```go -func CountIf(f func(string) bool, tab []string) int { +type Nodee struct { + Data int + Next *Nodee +} + +func ListSort(l *Nodee) *Nodee { + } ``` -### Utilisation +### Usage -Voici un éventuel [programme](TODO-LINK) pour tester votre fonction : +Here is a possible [program](TODO-LINK) to test your function : ```go package main import ( "fmt" + piscine ".." ) +func PrintList(l *piscine.Nodee) { + m := l + for m != nil { + fmt.Print(m.Data, " -> ") + m = m.Next + } + fmt.Print(nil) + fmt.Println() +} + +func listPushBack(l *piscine.Nodee, data int) *piscine.Nodee { + n := &piscine.Nodee{Data: data} + + if l == nil { + return n + } + iterator := l + for iterator.Next != nil { + iterator = iterator.Next + } + iterator.Next = n + return l +} + 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) + var link *piscine.Nodee + + 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 : +And its output : ```console student@ubuntu:~/piscine/test$ go build student@ubuntu:~/piscine/test$ ./test -0 -2 +1 -> 2 -> 3 -> 4 -> 5 -> student@ubuntu:~/piscine/test$ ```