我想从原子中分割出一个整数。我有什么想法可以做到这一点?
示例查询:
?- split_int('nc(4)', N). % given: the atom 'nc(4)'
N = 4. % expected: the integer 4
答案 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。