Tengo una lista, que puede contener elementos que se compararán como iguales. Me gustaría una Lista similar, pero con un elemento eliminado. Entonces, de (A, B, C, B, D) me gustaría poder "eliminar" solo una B para obtener, por ejemplo, (A, C, B, D). No importa el orden de los elementos en el resultado.
Tengo código de trabajo, escrito en una forma inspirada en Lisp en Scala. ¿Hay alguna forma más idiomática de hacer esto?
El contexto es un juego de cartas en el que están en juego dos mazos de cartas estándar, por lo que puede haber cartas duplicadas, pero aún así se juegan una a la vez.
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)
}