【发布时间】:2019-05-13 09:14:11
【问题描述】:
当用户输入“saya suka makan pisang”时,预期的输出是“我喜欢吃香蕉”。 但现在我得到的是[我,喜欢,吃,香蕉]。 我该如何解决?
这些是我的事实:
words(saya,i).
words(makan,eat).
words(pisang,banana).
words(suka,like).
translation(X,Y):-
words(X,Y).
translation(X,Y):-
words(Y,X).
translation(X,X).
translate([], []).
translate([H|T], [H1|T1]):-
translation(H, H1),
translate(T,T1).
prolist([],[]).
prolist(SL,[W|T]):-
split(SL,WL,R),
name(W,WL),
prolist(R,T).
split([],[],[]).
split([32|T],[],T).
split([H|T],[H|T2],R):-
split(T,T2,R).
run:-
nl,write('Enter One sentence or word (English or Malay):'),
read(X),end(X),
nl.
end(X):-
X=q->write('SESSION END. THANK YOU. ');
name(X,SL),prolist(SL,List),translate(List,W),
nl,
write('Translated as:'),
write(W),
nl,
run.
【问题讨论】:
-
在 Prolog 中,列表总是有分隔的对象,用 ',' 来通知它的列表,它有 [] 括号。您可以解决它检查swi-prolog.org/pldoc/man?predicate=atomic_list_concat/3 以删除括号。第一个参数是您的列表,第二个是分隔符,最后一个参数是您想要在这种情况下用作输出的 Atom
-
不是很懂prolog,可以给我写一些代码吗?
-
你的初始谓词是什么?你在使用
translation([saya,suka,makan,pisang],X)吗?编辑:我明白了,您将它用作运行和结束,最后您通过写入推送它。 -
@A.A.mind 帮我解决这个问题? stackoverflow.com/questions/56112352/…