j'avais des problèmes avec ces deux lignes:Prolog - meilleur moyen d'éliminer la réponse en double dans un cas particulier?
list_swizzle(L, [], L).
list_swizzle([], L, L).
Le problème est que si l'autre des deux premiers arguments sont la liste vide, les deux premières déclarations seraient tous deux utilisés, retournant la même réponse. Cependant, si je mets une coupure dans l'un, ça fait naufrage. J'ai finalement mis dans cette ligne au-dessus d'eux:
list_swizzle([], [], []):- !.
Et cela fonctionne. Mais je me demandais s'il y avait une solution plus élégante.
Cette coupe est à nouveau rouge Couper. Vous pouvez voir ceci pour: 'list_swizzle (Xs, Ys, Zs), Xs = [_]' qui échoue avec coupe ci-dessus. Il réussit avec une réponse donnée par @daf. – false