对于我的课程作业,我必须编写一个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工作。所以请原谅任何小错误。