Mögliche Duplizieren:
Split list and make sum from sublist?Summe der getrennten Elemente in einer Liste
Im Versuch, dieses Problem zu lösen. Ich muss eine Summe von Elementen aus einer Liste machen, die nur mit "0" voneinander getrennt sind. Also zum Beispiel kann ich so etwas als Eingabe haben: [1,2,3,0,3,4,0,2,1] und der Ausgang sollte [6,7,3] sein.
Bisher habe ich es geschafft, so etwas zu tun:
cut (x:xs) | x > 0 = x : (cut xs)
| otherwise = []
first (xs) = ((foldl (+) 0 (cut (xs))) ) : []
second (xs) = ((foldl (+) 0 (cut (reverse (xs)))) ) : []
test (xs) = first(xs) ++ second(xs)
Problem ist, dass dies nur funktioniert, mit nur 1 Instanz von „0“ in meiner Liste.
Ich habe versucht, diese Funktion und bearbeite meine Schnitt zu lösen:
cut [] = []
cut (x:xs) | x > 0 = foldl (+) 0 (x : cut xs) : []
| x == 0 = (cut xs)
Aber ich kann nicht herausfinden, wie es zu justieren, so wird es die Summen zu trennen. Im Moment wird nur die Summe aller Elemente als Ausgabe ausgegeben.
Danke, das ist die perfekte Lösung für mich, da ich foldl (+) 0 verwenden muss. Also ich habe es so: map (foldl (+) 0) (groupBy ... []) – mtzero
Danke für die Erklärung, jetzt Ich verstehe es klarer. – mtzero