首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DCG中的模式识别

DCG中的模式识别
EN

Stack Overflow用户
提问于 2012-11-25 19:51:31
回答 2查看 175关注 0票数 2

我目前正在写一个dcg,它接受一个0,1*形式的列表,并告诉我列表中0的数量是否大于1的数量。我似乎无法让第三部分(dcg//0)工作。

代码语言:javascript
复制
 sq --> [].
 sq --> num, sq.

 num --> [0].
 num --> [1].

 dcg --> sq, dd(Count), Count > 2.

 dd(0) --> [].
 dd(Newcnt) --> [0], dd(Cnt), { Newcnt is Cnt+1 }.
 dd(Newcnt) --> [1], dd(Cnt), { Newcnt is Cnt-1 }.
EN

回答 2

Stack Overflow用户

发布于 2012-11-28 17:57:57

@Little Bobby Tables的答案是合成(计算)元素数量,并且在DCG之外,您需要测试结果

代码语言:javascript
复制
..., phrase(sq(Z,O), S), Z is O*3, ...

一种更简单的方法可以是传递不平衡。

代码语言:javascript
复制
z3o1(B) --> [1], {S is B-3}, z3o1(S).
z3o1(B) --> [0], {S is B+1}, z3o1(S).
z3o1(0) --> [].  % accept only if balanced

..., phrase(z3o1(0), S), ...
票数 1
EN

Stack Overflow用户

发布于 2012-11-28 15:19:08

下面的代码计算给定序列中0和1的数量。您可以使用它来应用您想要的任何条件。

代码语言:javascript
复制
sq(0, 0) --> [].
sq(Zeros, Ones) -->
    [0], 
    sq(Z, Ones), 
    {Zeros is Z + 1}.
sq(Zeros, Ones) -->
    [1], 
    sq(Zeros, O),
    {Ones is O + 1}.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13550741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档