J'ai une liste, qui peut contenir des éléments qui seront comparés comme égaux. Je voudrais une liste similaire, mais avec un élément en moins. Ainsi, à partir de (A, B, C, B, D), j'aimerais pouvoir "retirer" un seul B pour obtenir, par exemple, (A, C, B, D). L'ordre des éléments dans le résultat n'a pas d'importance.
J'ai un code fonctionnel, écrit en Scala d'une manière inspirée de Lisp. Existe-t-il un moyen plus idiomatique pour faire cela ?
Le contexte est un jeu de cartes où deux jeux de cartes standard sont en jeu, il peut donc y avoir être des cartes en double mais toujours jouées une par une.
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)
}
0 votes
Ajout d'une note indiquant que l'ordre de la liste de résultats n'a pas d'importance dans ce cas spécifique.
0 votes
Donc le
List[Card]
dans cette question est la main d'un joueur ?0 votes
@Ken Bloom, oui, c'est bien la main d'un joueur.
0 votes
Vous savez, j'ai cherché une question comme celle-ci pendant un moment, puis j'ai posté la même question, puis j'ai trouvé celle-ci pendant que je naviguais et que j'attendais que les gens répondent à la mienne. Je suppose que je devrais voter pour fermer ma propre question maintenant comme un doublon ;-)
0 votes
Cette question pour Clojure : stackoverflow.com/questions/7662447/
0 votes
Même question, abordée du point de vue de l'efficacité : stackoverflow.com/questions/7084212/
0 votes
La question est un peu ambiguë pour moi. Dans le cas où plusieurs éléments de la liste ont la même valeur, lequel doit être supprimé ?