Ich versuche, eine Funktion zu schreiben, die eine Liste aufnimmt und die Anzahl der aufeinanderfolgenden doppelten Elemente in der Liste zurückgibt.Wie man die Anzahl der aufeinanderfolgenden Duplikate in Ocaml zählt
Zum Beispiel gegeben [1;2;3;3;4;4;5]
, sollte die Funktion 2
Dies ist meine erste Implementierung zurück, aber leider 0
es gibt immer. Ich bin mir nicht sicher, wo der Fehler liegt. Jede Hilfe zur Verbesserung wird sehr geschätzt.
let rec count_successive_duplicates (lst: int list) (count: int) : (int) =
match lst with
| [] | [_]-> 0
| x :: y :: tl ->
if x = y then count_successive_duplicates (y::tl) (count + 1) else count_successive_duplicates (y::tl) count
;;
let() =
print_int (count_successive_duplicates [1;2;3;3;4;4;5] 0)
Sie werden ein Maximum irgendwo erhalten müssen. Ihre Zählung nimmt derzeit manchmal zu, aber a) wird nicht zurückgesetzt, wenn eine neue Sequenz auftritt b) Am Ende gibt es immer '0' zurück – Bergi
Ich sehe, dass ich nicht die inkrementierte Anzahl verwende, wenn sie verfügbar ist. Danke für den Tipp. Ich habe den Fehler jetzt gesehen – kevgathuku
Oh, ich habe missverstanden, was Sie tun wollen, ich dachte, Sie wollten die * längste * Folge von Duplikaten zählen. Aber ja, es ist nur ein kleiner Fehler. – Bergi