2012-02-01 10 views
1

ndPrologプログラムは、述語を使用して単語を音節に分割する必要があります。 1.音節:母音母音、2.音節:母音母音母音母音。 たとえば、バーンインあたり
私のプログラムが順番にsylsplitを通って行くことに述語を使用して単語を音節に分割するプロローグプログラム

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

を行うことはできません。

  1. あなたが最初のルールはANTYHINGが空リストの分割を持っていると言います。あなたの結果があなたの入力よりも短くなるべきではないので、それが正しくないと確信しています。
  2. 2番目のルールは、X3が母音であることを確認しますが、X3と何も照合しません。同様に、Xには何もチェックされません。
  3. 3番目のルールはOKです。
  4. 最後のルールでは、空のリストの結果は...未定義の変数である必要がありますか?

また、私はあらかじめ定義されていないとは思えませんが、追加はできません(追加の3行目は不完全です)。

+0

あなたの助けをたくさんありがとう –

+0

私のプログラムを書き直しましたが、 "name"という述語はまだ動作しません。(述語 "name"を使用するのはおかしい) –

+0

元のコードに述語 '名前' ;あなたの新しいバージョンであれば、それについてコメントする必要があります。 –

関連する問題