epicours/Algo/Courses/Chapter 6 - Lists (Exercises).md

70 lines
900 B
Markdown

## 1.1 - Product
```Ocaml
let rec product = function
| [] -> 0
| x::t -> x * product t;;
```
## 1.2 - Count
```Ocaml
let rec count x n =
if x = [] then
0
else
let e::t = x in
if e = x then
1 + count t n
else
count t n;;
```
## 1.3 - Search
```Ocaml
let rec search x n =
if x = [] then
0
else
let e::t = x in
if e = x then
true
else
search t n;;
```
## 1.4 - $n^{th}$
```Ocaml
let rec length l =
if l = [] then
0
else
let e::t = l in
1 + length t;;
let rec nth x n =
if (x = [] || n =< 0) then
Invalid_arg "The number of element in the list is 0"
else if length x < n then
Failwith "The list is too short"
else
let e::t = x in
if n = 0
return e
else
nth t (n-1) ;;
```
## 1.5 - Maximum
```Ocaml
let max l =
if l = [] then
0
else
let maxi = 0
let rec m =
let e::t = l
if e >= maxi then
maxi = e
else
m t
```