0

クラスの課題として、動詞を取り込み、「ion」とそのバリエーションを追加して名詞に変換する Prolog プログラムを作成する必要があります。単語の文字のリストを取り込むのではなく、完全な単語を取り込み、それをリストに変換して操作したいと考えています。これはクラスの課題であるため、教師から提供された同じバージョンのソフトウェアを使用する必要があります。

Amzi Prolog 5.0.31 Windows 2001 年 10 月 20 日 21:25:35 Copyright (c) 1987-2000 Amzi! 株式会社

また、このバージョンでは、組み込みの述語 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に取り組みました。ですので、些細なミスはご容赦ください。

4

0 に答える 0