동일한 것으로 비교할 요소를 포함 할 수있는 목록이 있습니다. 비슷한 목록을 원하지만 하나의 요소가 제거되었습니다. 따라서 (A, B, C, B, D)에서 하나의 B 만 "제거"하여 예를 들어 (A, C, B, D)를 얻을 수 있기를 바랍니다. 결과의 요소 순서는 중요하지 않습니다.
저는 Scala에서 Lisp에서 영감을받은 방식으로 작성된 작업 코드를 가지고 있습니다. 이것을 수행하는 더 관용적 인 방법이 있습니까?
컨텍스트는 두 개의 표준 카드 덱이 사용되는 카드 게임이므로 중복 카드가있을 수 있지만 여전히 한 번에 하나씩 플레이됩니다.
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)
}