Ad esempio avendo
l1=[1,2,3,4,5]
duplicare in una lista
l2=[15,1,3,6,10]
nel primo elemento la somma di tutti gli elementi della lista e nel resto la somma avanzando di posizione
Grazie in anticipo
Ad esempio avendo
l1=[1,2,3,4,5]
duplicare in una lista
l2=[15,1,3,6,10]
nel primo elemento la somma di tutti gli elementi della lista e nel resto la somma avanzando di posizione
Grazie in anticipo
Perché vuoi il 15 per primo?
Haskell:codice:sums = scanl1 (+) -- sums [1, 2, 3, 4, 5] -> [1, 3, 6, 10, 15] sums xs = last ss : init ss where ss = scan1 (+) xs -- sums [1, 2, 3, 4, 5] -> [15, 1, 3, 6, 10] -- meno efficiente sums (x:xs) = sums' [x] xs where sums' ss@(s:_) [x] = (s+x) : reverse ss sums' ss@(s:_) (x:xs) = sums' ((s+x):ss) xs -- a mano
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
intanto,
grazie mille
che la somma totale come primo elemento lo richiede l' esercizio
la sintassi è Haskell?
e in Ocaml?
E in ocaml fai esattamente la stessa cosa. Devi solo cambiare sintassi, non mi sembra un gran problema...
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
certamente, era però come esempio di sintassi di Ocaml visto che non utilizzo il linguaggio
devo imparare quel linguaggio e mi servirebbe qualche esempio da cui partire
Se proprio ci tieni eccoMa non pensare che ti sarà di qualche utilità...codice:let rec sums' ((s::_) as ss) xs = match xs with | [x] -> (s+x) :: List.rev ss | (x::xs) -> sums' ((s+x)::ss) xs let sums (x::xs) = sums' [x] xs (* supporto per la visualizzazione e il testing *) let (@.) f g x = f (g x) let print_int_list = print_endline @. String.concat " " @. List.map string_of_int let () = print_int_list (sums [1;2;3;4;5])
Ultima modifica di Scara95; 20-01-2014 a 15:28
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
grazie,
con ricorsione di coda
È tail recursive, ed in ogni caso se ti serve qualcosa puoi benissimo farlo da solo, dato che il linguaggio lo devi imparare tu.
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares