Ich habe eine Liste, die Elemente enthalten kann, die als gleich verglichen werden. Ich hätte gerne eine ähnliche Liste, aber mit einem entfernten Element. Also möchte ich aus (A, B, C, B, D) nur ein B "entfernen" können, um zB (A, C, B, D) zu erhalten. Die Reihenfolge der Elemente im Ergebnis spielt keine Rolle.
Ich habe Arbeitscode, der in Scala von Lisp inspiriert ist. Gibt es einen idiomatischeren Weg, dies zu tun?
Der Kontext ist ein Kartenspiel, bei dem zwei Kartenspiele mit Standardkarten im Spiel sind. Es kann also doppelte Karten geben, die aber immer noch einzeln gespielt werden.
def removeOne(c: Card, left: List[Card], right: List[Card]): List[Card] = {
if (Nil == right) {
return left
}
if (c == right.head) {
return left ::: right.tail
}
return removeOne(c, right.head :: left, right.tail)
}
def removeCard(c: Card, cards: List[Card]): List[Card] = {
return removeOne(c, Nil, cards)
}