gpt4 book ai didi

prolog - 如何为有效号码指定 DCG?

转载 作者:行者123 更新时间:2023-12-01 09:21:03 28 4
gpt4 key购买 nike

我正在尝试为一个有效号码指定一个 DCG,该号码将像这样使用:

value(Number) --> valid_number(Number).

基本上检查一个指定的值是否是数字,(它也可能是一个变量,所以有必要检查)。

我不知道如何构建这个 valid_number DCG/谓词。

现在我只有:

valid_number('1') --> ['1'].
valid_number('2') --> ['2'].
...

这很有效,但显然很糟糕。尝试类似:

valid_number(Number) --> { integer(Number), Number = Number }.

两者都不起作用,而且看起来也很糟糕(很抱歉,对 Prolog 很陌生,正在努力学习最佳实践)。

我将如何构建这个 DCG/谓词来验证它是否是一个数字?

最佳答案

我给你一个描述自然数字的代码示例:

:- set_prolog_flag(double_quotes, chars).natural_number(N) --> number_(Cs), { number_codes(N, Cs) }.number_([D|Ds]) --> digit(D), number_(Ds).number_([D])    --> digit(D).digit(D) --> [D], { char_type(D, digit) }.

Example usage:

?- phrase(natural_number(N), "123").
N = 123 ;
false.

我将把它推广到其他数字作为练习。

关于prolog - 如何为有效号码指定 DCG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32870994/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com