Self-test 9 Solutions
|
Multiple solutions in list processing | ||
/* ************************************************ */ /* */ /* delete_one/3 */ /* Arg 1: */ /* Arg 2: List */ /* Arg 3: List */ /* Summary: true if Arg 3 is Arg 2 with an */ /* instance of Arg 1 deleted. */ /* Author: P J Hancox */ /* Date: 28 October 1994 */ /* */ /* ************************************************ */ % 1 terminating condition delete_one(Elem, [Elem|Tail], Tail). % 2 recursive delete_one(Elem, [Head|Tail1], [Head|Tail2]) :- \+ (Elem = Head), delete_one(Elem, Tail1, Tail2).
This requires the addition of one test. Note that this solution doesn't have recourse to extra-logical extensions of Prolog, such as the cut. |
||