在prolog中从原子中分割整数

时间:2016-02-08 19:00:47

标签: prolog

我想从原子中分割出一个整数。我有什么想法可以做到这一点?

示例查询:

?- split_int('nc(4)', N).      % given:    the atom 'nc(4)'
N = 4.                         % expected: the integer  4

2 个答案:

答案 0 :(得分:0)

在SWI Prolog中,您应该能够说出类似

的内容
?- term_to_atom( nc(N) , 'nc(4)' ).
N = 4.

得到你想要的东西。在Sicstus中,您似乎需要使用library(codesio)。那应该让你这样说:

atom_to_term( A , T ) :-
  atom_codes( A , Cs ) ,
  read_from_codes( Cs , T )
  .

虽然你必须确保你的原子被句号/句号终止。 'nc(4)'无效,但'nc(4).'会有效。

答案 1 :(得分:0)

使用SWI prolog 6编写以下程序,

atom_chars => convert to char list,
and process the char list to get the number characters
and use atom_chars/2, atom_number/2 to change it back to number

https://github.com/neojou/prolog/blob/master/examples/split_int.pl

? - split_int('nc(4)',N)。 N = 4。

? - split_int('nc(1234)',N)。 N = 1234。