【发布时间】:2016-05-25 19:26:00
【问题描述】:
我有列表[r,s,2,t,3,u,v],我需要创建一个看起来像[r,5,s,2,t,3,u,5,v,5] 的列表。规则是:对于每个后面没有整数的非整数,将在该元素之后添加一个5。
我是 Prolog 的新手,这是我目前的代码:
insertInL([],[]).
insertInL([F,S|Tail], [F,X|Rest]) :-
integer(S), X = S, insertInL(Tail, Rest).
我知道应该有一种情况 S 不是整数,但我不知道如何处理它。
编辑:
我更新了我的代码:
insertInL([],[]).
insertInL([F,S|T1], [F,S|T2]) :-
integer(S), insertInL(T1, T2).
insertInL([F,S|T1], [F,1|T2]) :-
\+ integer(S), insertInL([S|T1], T2).
现在它很好,除非我有一个非整数作为最后一个元素。
编辑2:
现在它可以正常工作了。
insertInL([],[]).
insertInL([F],[F,1]) :-
\+ integer(F).
insertInL([F,S|T1], [F,S|T2]) :-
integer(S), insertInL(T1, T2),!.
insertInL([F,S|T1], [F,1|T2]) :-
\+ integer(S), insertInL([S|T1], T2).
【问题讨论】:
-
如果您解决了您的问题,您可以将其发布为答案而不是编辑您的问题吗?