Prolog程序使用谓词将单词划分为音节

时间:2012-02-01 18:24:23

标签: append

ndProlog程序应该使用谓词将单词划分为音节: 1.音节:元音辅音元音,2。音节:元音辅音元音。 例如;范每
我的程序不能这样做

vowel(a).
vowel(e).
vowel(i).
vowel(o).
vowel(u).
vowel(y).

consonant(L) :- not(vowel(L)).

append([X|Y],Z,[X|W]) :- append(Y,Z,W).
append([],X,X).

append([X,X1,X2,'-'],

sylsplit(_,[]).
sylsplit([X,X1,X2|Y],[X,X1,X2,'-'|W]) :- vowel(X1), consonant(X2), vowel(X3), sylsplit(Y,W).
sylsplit([X|Y],[X|W]) :- sylsplit(Y,W).
sylsplit([],L).

%sylsplit([a,n,a,l,o,g],L).

1 个答案:

答案 0 :(得分:1)

按顺序通过sylsplit:

  1. 你的第一条规则是说ANTYHING有一个空列表的分割;非常肯定这是不对的,因为你的结果不应该比你的输入更紧凑。
  2. 您的第二条规则检查X3是否为元音,但绝不会将X3与任何内容相匹配;同样,它也不会检查X的任何内容。
  3. 你的第三条规则看起来不错。
  4. 你的最后一条规则说空列表的结果应该是......一个未定义的变量?
  5. 另外我不能相信没有预定义但附加不是(并且你的第3行追加不完整)。