gpt4 book ai didi

prolog - 将字符串转换为序言中的列表

转载 作者:行者123 更新时间:2023-12-04 04:45:43 24 4
gpt4 key购买 nike

我是 Prolog 的新手,一直坚持将字符串解析为列表。
我有一个表格字符串

1..2...3..4

我想把它转换成一个看起来像的列表
[1, _, _, 2, _, _, _, 3, _, _, 4]

我怎样才能实现这个功能?

最佳答案

另一种解决方案是使用 DCG。代码很简单:

digit(N) -->
[ D ], { member(D, "0123456789"), number_codes(N, [D]) }.

dot(_) --> ".".

token(T) --> digit(T).
token(T) --> dot(T).

tokens([T|Ts]) --> token(T), tokens(Ts).
tokens([]) --> "".

parse_codes(In, Out):-
phrase(tokens(Out), In, "").

parse_atom(In, Out):-
atom_codes(In, Codes),
parse_codes(Codes, Out).

使用“字符串”(实际上只是代码列表)在 SWI-Prolog 上进行测试:
?- parse_codes("1..24.4", Out).
Out = [1, _G992, _G995, 2, 4, _G1070, 4] .

并使用原子(在使用相同谓词之前仅将其转换为代码):
?- parse_atom('1..22.4', Out).
Out = [1, _G971, _G974, 2, 2, _G1049, 4] .

SWI-Prolog 以更高级的符号打印匿名变量 (_),否则它应该与您需要的结果相同。

关于prolog - 将字符串转换为序言中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18224717/

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