0

これは私のコードであり、動作しません。

skip([], []).

skip([H|T], [H|R]):-
    atomic(H),
    !,
    skip(T, R).

skip([_|T], R):-
    skip(T, R).


tails([], []).

tails([H|T], R]):-
    atomic(H),
    !,
    skip(T, T1),
    tails(T1, R).

tails([H|T], [H|R]):-
    tails(H, R1),
    skip(T, T1),
    tails(T1, R2),
    append(R1, R2, R).

リストを入力L = [1, [2, 3, [4, 5] ] ]すると、結果は次のようになりますR = [1, 3, 5].

4

1 に答える 1

1

要件を理解したかどうかはわかりませんが、このコードはサンプルを満たしています。

tails([], []).
tails([E], [E]) :-
    atomic(E), !.
tails([E,[H|T]|Es], [E|Rs]) :-
    atomic(E), !,
    tails([H|T], Qs),
    tails(Es, Ts),
    append(Qs, Ts, Rs).
tails([_|Es], Rs) :-
    tails(Es, Rs).

テスト:

?- tails([1,[2,3,[4,5]]],L).
L = [1, 3, 5].
于 2013-01-17T17:22:24.533 に答える