如何在PROLOG中将原子转换为没有预定义谓词的字符列表

时间:2014-03-02 18:31:11

标签: prolog amzi-prolog

对于我的课程作业,我必须编写一个Prolog程序,它接受动词并通过添加'ion'及其变体将其转换为名词。 我不想接受单词中的字符列表,而是接受完整的单词,将其转换为列表并使用它。由于这是课堂作业,我们都需要使用教师提供的相同版本的软件。

Amzi Prolog 5.0.31 Windows 2001年10月20日21:25:35 版权所有(c)1987-2000 Amzi! INC。

在这个版本中,内置的谓词atom_chars不起作用。

我目前看到的唯一解决方案是: 1.取入原子(abc) 2.使用name/2谓词获取unicode列表([0w0061,0w0062,0w0063]) 3.按元素获取unicode列表元素,使用名称谓词将每个元素转换为字符并使用元素创建新列表。 ([C,B,A]) 4.反转清单([a,b,c])

如果你想到一个更简单的方法,请帮助我。到目前为止,我的代码是:

    /* Program to output the right form of the -ion suffix*/


go:-write('This is a program to derive verb+ion!!!'),nl,
write('If your verb ends with the letter T or TE, enter 1.'),nl,
write('If your verb ends with SE or DE, enter 2.'),nl,
write('If your verb ends with the MIT, enter 3.'),nl,
write('Enter your choice: '),
read(Class),
change(Verb,Noun,Class).

/ *输入1个动词* /

change(Verb,Noun,1):-
write(' Enter a verb of type 1.'),
nl,
tab(5),
read(Verb),
concat(Verb,[i,o,n],Noun),
write('The noun form is '),
write(Noun),
write(.).

concat([],List,List).
concat([Head|List1],List2,[Head|List3]):-
concat(List1,List2,List3).

/ *输入2个动词* /

change(Verb,Noun,2):-
write(' Enter a verb of type 2.'),
nl,
tab(5),
read(Verb),
del_two(Verb,Root),
concat(Root,[s,i,o,n],Noun),
write('The noun form is '),
write(Noun),
write(.).


del_two([_,_], []).
del_two([Head|Tail], [Head|NTail]):-
del_two(Tail, NTail).

/ *输入3个动词* /

change(Verb,Noun,3):-
write(' Enter a verb of type 3.'),
nl,
tab(5),
read(Verb),
del_two(Verb,Root),
concat(Root,[i,s,s,i,o,n],Noun),
write('The noun form is '),
write(Noun),
write(.).

我第一次在PROLOG工作。所以请原谅任何小错误。

0 个答案:

没有答案