forked from root/public
Christopher Fremond
5 years ago
52 changed files with 862 additions and 652 deletions
@ -1,44 +1,59 @@ |
|||||||
## countif |
## listpushback |
||||||
|
|
||||||
### Instructions |
### 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 `ListLast` that returns the last element of the linked list. |
||||||
|
|
||||||
### Fonction attendue |
### Expected function and structure |
||||||
|
|
||||||
```go |
```go |
||||||
func CountIf(f func(string) bool, tab []string) int { |
type Node struct { |
||||||
|
Data interface{} |
||||||
|
Next *Node |
||||||
|
} |
||||||
|
|
||||||
|
type List struct { |
||||||
|
Head *Node |
||||||
|
Tail *Node |
||||||
|
} |
||||||
|
|
||||||
|
func ListLast(l *List) interface{} { |
||||||
} |
} |
||||||
``` |
``` |
||||||
|
|
||||||
### Utilisation |
### Usage |
||||||
|
|
||||||
Voici un Ă©ventuel [programme](TODO-LINK) pour tester votre fonction : |
Here is a possible [program](TODO-LINK) to test your function : |
||||||
|
|
||||||
```go |
```go |
||||||
package main |
package main |
||||||
|
|
||||||
import ( |
import ( |
||||||
"fmt" |
"fmt" |
||||||
|
|
||||||
piscine ".." |
piscine ".." |
||||||
) |
) |
||||||
|
|
||||||
func main() { |
func main() { |
||||||
tab1 := []string{"Hello", "how", "are", "you"} |
link := &piscine.List{} |
||||||
tab2 := []string{"This","1", "is", "4", "you"} |
link2 := &piscine.List{} |
||||||
answer1 := piscine.CountIf(piscine.IsNumeric, tab1) |
|
||||||
answer2 := piscine.CountIf(piscine.IsNumeric, tab2) |
piscine.ListPushBack(link, "three") |
||||||
fmt.Println(answer1) |
piscine.ListPushBack(link, 3) |
||||||
fmt.Println(answer2) |
piscine.ListPushBack(link, "1") |
||||||
|
|
||||||
|
fmt.Println(piscine.ListLast(link)) |
||||||
|
fmt.Println(piscine.ListLast(link2)) |
||||||
} |
} |
||||||
|
|
||||||
``` |
``` |
||||||
|
|
||||||
Et son résultat : |
And its output : |
||||||
|
|
||||||
```console |
```console |
||||||
student@ubuntu:~/piscine/test$ go build |
student@ubuntu:~/piscine/test$ go build |
||||||
student@ubuntu:~/piscine/test$ ./test |
student@ubuntu:~/piscine/test$ ./test |
||||||
0 |
1 |
||||||
2 |
<nil> |
||||||
student@ubuntu:~/piscine/test$ |
student@ubuntu:~/piscine/test$ |
||||||
``` |
``` |
||||||
|
@ -1,44 +1,83 @@ |
|||||||
## countif |
## listpushback |
||||||
|
|
||||||
### Instructions |
### 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 |
```go |
||||||
func CountIf(f func(string) bool, tab []string) int { |
type NodeI struct { |
||||||
|
Data int |
||||||
|
Next *NodeI |
||||||
|
} |
||||||
|
|
||||||
|
func ListSort(l *NodeI) *NodeI { |
||||||
|
|
||||||
} |
} |
||||||
``` |
``` |
||||||
|
|
||||||
### Utilisation |
### Usage |
||||||
|
|
||||||
Voici un Ă©ventuel [programme](TODO-LINK) pour tester votre fonction : |
Here is a possible [program](TODO-LINK) to test your function : |
||||||
|
|
||||||
```go |
```go |
||||||
package main |
package main |
||||||
|
|
||||||
import ( |
import ( |
||||||
"fmt" |
"fmt" |
||||||
|
|
||||||
piscine ".." |
piscine ".." |
||||||
) |
) |
||||||
|
|
||||||
|
func PrintList(l *piscine.NodeI) { |
||||||
|
m := l |
||||||
|
for m != nil { |
||||||
|
fmt.Print(m.Data, " -> ") |
||||||
|
m = m.Next |
||||||
|
} |
||||||
|
fmt.Print(nil) |
||||||
|
fmt.Println() |
||||||
|
} |
||||||
|
|
||||||
|
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() { |
func main() { |
||||||
tab1 := []string{"Hello", "how", "are", "you"} |
var link *piscine.NodeI |
||||||
tab2 := []string{"This","1", "is", "4", "you"} |
|
||||||
answer1 := piscine.CountIf(piscine.IsNumeric, tab1) |
link = listPushBack(link, 5) |
||||||
answer2 := piscine.CountIf(piscine.IsNumeric, tab2) |
link = listPushBack(link, 4) |
||||||
fmt.Println(answer1) |
link = listPushBack(link, 3) |
||||||
fmt.Println(answer2) |
link = listPushBack(link, 2) |
||||||
|
link = listPushBack(link, 1) |
||||||
|
|
||||||
|
PrintList(piscine.ListSort(link)) |
||||||
} |
} |
||||||
``` |
``` |
||||||
|
|
||||||
Et son résultat : |
And its output : |
||||||
|
|
||||||
```console |
```console |
||||||
student@ubuntu:~/piscine/test$ go build |
student@ubuntu:~/piscine/test$ go build |
||||||
student@ubuntu:~/piscine/test$ ./test |
student@ubuntu:~/piscine/test$ ./test |
||||||
0 |
1 -> 2 -> 3 -> 4 -> 5 -> <nil> |
||||||
2 |
|
||||||
student@ubuntu:~/piscine/test$ |
student@ubuntu:~/piscine/test$ |
||||||
``` |
``` |
||||||
|
@ -1,44 +1,82 @@ |
|||||||
## countif |
## sortedlistmerge |
||||||
|
|
||||||
### Instructions |
### 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 |
```go |
||||||
func CountIf(f func(string) bool, tab []string) int { |
func SortedListMerge(n1 *NodeI, n2 *NodeI) *NodeI { |
||||||
|
|
||||||
} |
} |
||||||
``` |
``` |
||||||
|
|
||||||
### Utilisation |
### Usage |
||||||
|
|
||||||
Voici un Ă©ventuel [programme](TODO-LINK) pour tester votre fonction : |
Here is a possible [program](TODO-LINK) to test your function : |
||||||
|
|
||||||
```go |
```go |
||||||
package main |
package main |
||||||
|
|
||||||
import ( |
import ( |
||||||
"fmt" |
"fmt" |
||||||
|
|
||||||
piscine ".." |
piscine ".." |
||||||
) |
) |
||||||
|
|
||||||
|
type node = piscine.NodeI |
||||||
|
type nodes = piscine.NodeI |
||||||
|
|
||||||
|
func PrintList(l *piscine.NodeI) { |
||||||
|
m := l |
||||||
|
for m != nil { |
||||||
|
fmt.Print(m.Data, " -> ") |
||||||
|
m = m.Next |
||||||
|
} |
||||||
|
fmt.Print(nil) |
||||||
|
fmt.Println() |
||||||
|
} |
||||||
|
|
||||||
|
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() { |
func main() { |
||||||
tab1 := []string{"Hello", "how", "are", "you"} |
var link *node |
||||||
tab2 := []string{"This","1", "is", "4", "you"} |
var link2 *nodes |
||||||
answer1 := piscine.CountIf(piscine.IsNumeric, tab1) |
|
||||||
answer2 := piscine.CountIf(piscine.IsNumeric, tab2) |
link = listPushBack(link, 5) |
||||||
fmt.Println(answer1) |
link = listPushBack(link, 3) |
||||||
fmt.Println(answer2) |
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 |
```console |
||||||
student@ubuntu:~/piscine/test$ go build |
student@ubuntu:~/piscine/test$ go build |
||||||
student@ubuntu:~/piscine/test$ ./test |
student@ubuntu:~/piscine/test$ ./test |
||||||
0 |
-2 -> 3 -> 4 -> 5 -> 7 -> <nil> |
||||||
2 |
|
||||||
student@ubuntu:~/piscine/test$ |
student@ubuntu:~/piscine/test$ |
||||||
``` |
``` |
||||||
|
@ -1,4 +1,4 @@ |
|||||||
## sortList |
## sortlist |
||||||
|
|
||||||
### Instructions |
### Instructions |
||||||
|
|
@ -1,44 +1,80 @@ |
|||||||
## countif |
## sortlistinsert |
||||||
|
|
||||||
### Instructions |
### 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 |
```go |
||||||
func CountIf(f func(string) bool, tab []string) int { |
func SortListInsert(l *NodeI, data_ref int) *NodeI{ |
||||||
|
|
||||||
} |
} |
||||||
``` |
``` |
||||||
|
|
||||||
### Utilisation |
### Usage |
||||||
|
|
||||||
Voici un Ă©ventuel [programme](TODO-LINK) pour tester votre fonction : |
Here is a possible [program](TODO-LINK) to test your function : |
||||||
|
|
||||||
```go |
```go |
||||||
package main |
package main |
||||||
|
|
||||||
import ( |
import ( |
||||||
"fmt" |
"fmt" |
||||||
|
|
||||||
piscine ".." |
piscine ".." |
||||||
) |
) |
||||||
|
|
||||||
|
func PrintList(l *piscine.NodeI) { |
||||||
|
m := l |
||||||
|
for m != nil { |
||||||
|
fmt.Print(m.Data, " -> ") |
||||||
|
m = m.Next |
||||||
|
} |
||||||
|
fmt.Print(nil) |
||||||
|
fmt.Println() |
||||||
|
} |
||||||
|
|
||||||
|
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() { |
func main() { |
||||||
tab1 := []string{"Hello", "how", "are", "you"} |
|
||||||
tab2 := []string{"This","1", "is", "4", "you"} |
var link *piscine.NodeI |
||||||
answer1 := piscine.CountIf(piscine.IsNumeric, tab1) |
|
||||||
answer2 := piscine.CountIf(piscine.IsNumeric, tab2) |
link = listPushBack(link, 1) |
||||||
fmt.Println(answer1) |
link = listPushBack(link, 4) |
||||||
fmt.Println(answer2) |
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 |
```console |
||||||
student@ubuntu:~/piscine/test$ go build |
student@ubuntu:~/piscine/test$ go build |
||||||
student@ubuntu:~/piscine/test$ ./test |
student@ubuntu:~/piscine/test$ ./test |
||||||
0 |
1 -> 4 -> 9 -> <nil> |
||||||
2 |
-2 -> 1 -> 2 -> 4 -> 9 -> <nil> |
||||||
student@ubuntu:~/piscine/test$ |
student@ubuntu:~/piscine/test$ |
||||||
``` |
``` |
||||||
|
Loading…
Reference in new issue