mirror of https://github.com/01-edu/public.git
augusto-mantilla
5 years ago
committed by
GitHub
6 changed files with 236 additions and 127 deletions
@ -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 -> <nil> |
||||
student@ubuntu:~/piscine/test$ |
||||
``` |
||||
|
@ -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 -> <nil> |
||||
student@ubuntu:~/piscine/test$ |
||||
``` |
||||
|
@ -1,44 +1,80 @@
|
||||
## 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 `SortListInsert` that inserts `data_ref` in the linked list, but it as to remain sorted in ascending order. |
||||
|
||||
### Fonction attendue |
||||
- The list as to be alredy sorted. |
||||
|
||||
- Use pointers when ever you can. |
||||
|
||||
### Expected function and structure |
||||
|
||||
```go |
||||
func CountIf(f func(string) bool, tab []string) int { |
||||
func SortListInsert(l *Nodee, data_ref int) *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, 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 : |
||||
And its output : |
||||
|
||||
```console |
||||
student@ubuntu:~/piscine/test$ go build |
||||
student@ubuntu:~/piscine/test$ ./test |
||||
0 |
||||
2 |
||||
1 -> 4 -> 9 -> <nil> |
||||
-2 -> 1 -> 2 -> 4 -> 9 -> <nil> |
||||
student@ubuntu:~/piscine/test$ |
||||
``` |
||||
|
Loading…
Reference in new issue