Ich habe eine Liste von Tupeln, (key,value)
Paare. Ich brauche, um Elemente zu entfernen, die den Schlüssel oder den Wert zu duplizieren, Reihenfolge der Liste kann sich ändern, aber das erste Auftreten des Schlüssels oder der Wert muss in der Liste von Tupeln bleiben:Entfernen doppelte Schlüssel/Werte aus Tupel-Liste
Beispiel:
input: [("r","w"),("n","j"),("a","j"),("d","i"),("s","g"),("r","a")]
output: [("r","w"),("n","j"),("d","i"),("s","g")]
Was ich gemacht:
removeDuplicates _ [] = []
removeDuplicates seen (x:xs)
| elem (head $ fst x) (fst seen) = [] ++ removeDuplicates seen xs
| elem (head $ snd x) (snd seen) = [] ++ removeDuplicates seen xs
| otherwise = x:removeDuplicates ((fst seen)++(fst x),(snd seen)++(snd x)) xs
Aber dies muss als removeDuplicates ("","") something
genannt werden, die hässlich ist.
Was haben Sie schon versucht, welche Fehler bekommen Sie – epsilonhalbe
@epsilonhalbe ich meine Lösung hinzugefügt haben, aber es ist ziemlich hässlich meiner Meinung nach – KameeCoding