diff --git a/subjects/sortedlistmerge.en.md b/subjects/sortedlistmerge.en.md index 7653c3e0a..8db19ee14 100644 --- a/subjects/sortedlistmerge.en.md +++ b/subjects/sortedlistmerge.en.md @@ -2,7 +2,7 @@ ### Instructions -Write a function `SortedListMerge` that mereges two lists, `l1` and `l2`, but it as to join them in ascending order. +Write a function `SortedListMerge` that mereges two lists, `n1` and `n2`, but it as to join them in ascending order. - Tip each list as to be already sorted. @@ -11,12 +11,7 @@ Write a function `SortedListMerge` that mereges two lists, `l1` and `l2`, but it ### Expected function and structure ```go -type node struct { - data interface{} - next *node -} - -func SortedListMerge(l1 *node, l2 *node) *node { +func SortedListMerge(n1 *Nodee, n2 *Nodee) *Nodee { } ``` @@ -30,35 +25,51 @@ package main import ( "fmt" + piscine ".." ) -func PrintList(l *list) { - m := l.head +type node = piscine.Nodee +type nodes = piscine.Nodee + +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() } +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() { - link := &list{} - link2 := &list{} + var link *node + var link2 *nodes - piscine.ListPushBack(link, "5") - piscine.ListPushBack(link, "3") - piscine.ListPushBack(link, "7") + link = listPushBack(link, 5) + link = listPushBack(link, 3) + link = listPushBack(link, 7) - piscine.ListPushBack(link2, "1") - piscine.ListPushBack(link2, "-2") - piscine.ListPushBack(link2, "4") - piscine.ListPushBack(link2, "6") + link2 = listPushBack(link2, -2) + link2 = listPushBack(link2, 4) - PrintList(SortedListMerge(link, link2)) + PrintList(piscine.SortedListMerge(link2, link)) } + ``` And its output : @@ -66,6 +77,6 @@ And its output : ```console student@ubuntu:~/piscine/test$ go build student@ubuntu:~/piscine/test$ ./test --2 -> 0 -> 0 -> 1 -> 3 -> 4 -> 5 -> 6 -> 7 -> +-2 -> 3 -> 4 -> 5 -> 7 -> student@ubuntu:~/piscine/test$ ``` diff --git a/subjects/sortedlistmerge.fr.md b/subjects/sortedlistmerge.fr.md index 7db913a68..8db19ee14 100644 --- a/subjects/sortedlistmerge.fr.md +++ b/subjects/sortedlistmerge.fr.md @@ -1,44 +1,82 @@ -## 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 `SortedListMerge` that mereges two lists, `n1` and `n2`, but it as to join them in ascending order. -### Fonction attendue +- Tip each list as to be already sorted. + +- Use pointers when ever you can. + +### Expected function and structure ```go -func CountIf(f func(string) bool, tab []string) int { +func SortedListMerge(n1 *Nodee, n2 *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 ".." ) +type node = piscine.Nodee +type nodes = piscine.Nodee + +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 *node + var link2 *nodes + + link = listPushBack(link, 5) + link = listPushBack(link, 3) + link = listPushBack(link, 7) + + link2 = listPushBack(link2, -2) + link2 = listPushBack(link2, 4) + + PrintList(piscine.SortedListMerge(link2, link)) } + ``` -Et son résultat : +And its output : ```console student@ubuntu:~/piscine/test$ go build student@ubuntu:~/piscine/test$ ./test -0 -2 +-2 -> 3 -> 4 -> 5 -> 7 -> student@ubuntu:~/piscine/test$ ```