Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type 'a tree =
- Node of 'a * 'a tree list;;
- let rec fold_tree f (Node (x,l)) =
- f x (map (fold_tree f) l);;
- let prawie l =
- let aux (nie_ok, ok, poprzedni, najlepszy) x =
- if ( (poprzedni > 0 && x < 0) || (poprzedni < 0 && x > 0) )
- then
- let best = max (nie_ok + 1) (ok + 1)
- in (nie_ok + 1 , ok + 1, x, max najlepszy best )
- else
- let best = max najlepszy (ok + 1)
- in (ok + 1 , 0 , x , best)
- in let (_,_,_,wyn) = fold_left aux (0,0,0,0) l
- in wyn;;
- let sumy_prefixowe l =
- let aux (cur, ret) h =
- let new_cur = cur + h in (new_cur, new_cur::ret)
- in let (_, ret) = List.fold_left aux (0, []) l
- in List.rev ret
- ;;
- let prextrema l =
- let aux (min, max, ret) h =
- if h < min then (h, max, (h::ret))
- else if h > max then (min, h, (h::ret))
- else (min, max, ret)
- in match l with
- | [] -> []
- | h::t -> let (_, _, ret) = fold_left aux ((h, h, [h])) t
- in rev ret
- ;;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement