gpt4 book ai didi

list - 如何在Prolog中将split/3转换为split/4?

转载 作者:行者123 更新时间:2023-12-03 22:55:58 24 4
gpt4 key购买 nike

以下代码适用于split_list/3:

split_list([], _, [[],[]]).
split_list(T, 0, [[],T]).
split_list([H|T], N, [[H|Y],Z]) :-
N1 is N-1,
split_list(T, N1, [Y,Z]).

例如:

?- split_list([a,s,d,f,g,h,j], 3, R).
R = [[a, s, d], [f, g, h, j]] . % observed answer

但是,我想将 split_list/3 转换为 split/4:

?- split([a,s,d,f,g,h,j], 2, R1, R2).
R1 = [a,s], R2 = [d,f,g,h,j]. % expected answer

怎样才能得到我想要的答案?有什么建议么?谢谢:)

最佳答案

这是 split/4 的直接定义:

split(AsBs, N, As, Bs) :-   append(As, Bs, AsBs),   length(As, N).

Sample query as given by the OP:

?- split([a,s,d,f,g,h,j], 2, R1, R2).
R1 = [a,s], R2 = [d,f,g,h,j]
; false.

如何概括上述查询?

?- split([a,s,d,f,g,h,j], I, R1, R2).
I = 0, R1 = [], R2 = [a,s,d,f,g,h,j]
; I = 1, R1 = [a], R2 = [s,d,f,g,h,j]
; I = 2, R1 = [a,s], R2 = [d,f,g,h,j]
; I = 3, R1 = [a,s,d], R2 = [f,g,h,j]
; I = 4, R1 = [a,s,d,f], R2 = [g,h,j]
; I = 5, R1 = [a,s,d,f,g], R2 = [h,j]
; I = 6, R1 = [a,s,d,f,g,h], R2 = [j]
; I = 7, R1 = [a,s,d,f,g,h,j], R2 = [].

关于list - 如何在Prolog中将split/3转换为split/4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34570976/

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