リスト要素がアトムの場合、各アトムの後にテストをリストに挿入し、具体的なリストを構築するプロローグプログラムを構築しようとしています。
言う
たとえば。addtest([1,2,3,a,2,v],L).
そして、次のようにする必要があります。L= [1,2,3,a,test,2,v,test]
私は得ています:L=[1,2,3,[a,test],2,[v,test]]
以下のロジックを実装することにより、ネストされた括弧をリストに削除/平坦化して、期待される答えを得ることができます。
プログラム。
add([ ], L, L).
add([H|T], L, [H|M]) :- add(T, L, M).
addtest([], []).
addtest([H | T], [RH | RT]) :- (number(H)-> RH=H, addtest(T,RT)
;atom(H)-> add([H],[test],RH),addtest(T,RT)
).
余分な括弧を取り除く方法や、リストを 1 つのレベルにフラット化する方法を誰かが知っている場合。解決策/レビューを投稿してください。