2

I am trying to write a definite class grammar that takes a singleton list and determines if it is a 1 or 0.It keeps returning false and i can't figure out why it is not working.

zeroorone-->validnum.
validnum-->[0].
validnum-->[1].
4

2 回答 2

0

您发布的语言匹配

0

1

但不是

[0, 0, 1, 1, 0, 1, 1, 1, 0, 0]

那是你所期望的吗?

短语(zeroorone,X)。应该回应

X = [0]。X = [1]。

现在,您也可能混淆了“代码”样式的 Prolog 字符串

"100" 和 [1,0,0] 前者是 ['1', '0', '0']

您的代码失败的示例将很有用

于 2012-11-24T22:41:29.797 回答
0

安妮普是对的。这适用于 SWI-Prolog。

我将您的代码放入文件 a.pl 并使用咨询(a)加载它。然后我可以运行以下。

zeroorone([0], []).
true .

zeroorone([1], []).
true .

正如 Anniepoo 所说,在您按 Enter 后运行以下工作,然后按空格来获得第二个答案

phrase(zeroorone, X).
X = [ 0 ] ;
X = [ 1 ].

但是,正如她所说,除了两个列表 [0] 和 [1] 之外,它对任何东西都不起作用。

例如

zeroorone([1,0,0], []).
false.

为了获得更好的答案,您可能需要指定实际需要的内容。

于 2014-03-29T00:09:19.960 回答