gpt4 book ai didi

prolog - 将列表划分为序言中的一个点

转载 作者:行者123 更新时间:2023-12-02 07:00:19 24 4
gpt4 key购买 nike

my_list([this,is,a,dog,.,are,tigers,wild,animals,?,the,boy,eats,mango,.]).

假设这是序言中的一个列表,我想将其分成三个部分,最多三个句点,并将它们存储在变量中。

我该怎么做...

counthowmany(_, [], 0) :- !.
counthowmany(X, [X|Q], N) :- !, counthowmany(X, Q, N1), N is N1+1.
counthowmany(X, [_|Q], N) :- counthowmany(X, Q, N).
number_of_sentence(N) :- my_list(L),counthowmany(.,L,N).

我已经计算了列表 (my_list) 中句号的数量,现在我想将列表划分为第一个句号并将其存储在一个变量中,然后划分为第二个句号并存储在一个变量中等等关于…………

最佳答案

更新:@CapelliC 评论后代码略有简化。

许多方法之一(另一种更好的方法 - 是使用 DCG - definite clause grammar):

你真的不需要counthowmany。

split([], []).
split(List, [Part | OtherParts]) :-
append(Part, ['.' | Rest], List),
split(Rest, OtherParts).

让我们试试看:

?- my_list(List), split(List, Parts).
List = [this, is, a, dog, '.', tigers, are, wild, animals|...],
Parts = [[this, is, a, dog], [tigers, are, wild, animals], [the, boy, eats, mango]]

关于prolog - 将列表划分为序言中的一个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22030950/

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