遗传编程Prolog实现

遗传编程Prolog实现,prolog,genetic-programming,crossover,Prolog,Genetic Programming,Crossover,我的任务是在SWI Prolog中编写一个规则,它接受两个字符串作为输入。然后,它应该在一个随机点对它们进行分割和合并,并生成两个新列表 例如: ?- crossover([a,r,s,u,p],[b,t,c,z,k],NewList1,NewList2). NewList1 = [a,r,s,z,k] NewList2 = [b,t,c,u,p] 我不知道如何在一个随机点拆分列表,然后从那里生成两个新列表。。 提前非常感谢任何能提供帮助的人!:) 这是对我有用的东西 split_at(X,I

我的任务是在SWI Prolog中编写一个规则,它接受两个字符串作为输入。然后,它应该在一个随机点对它们进行分割和合并,并生成两个新列表

例如:

?- crossover([a,r,s,u,p],[b,t,c,z,k],NewList1,NewList2).
NewList1 = [a,r,s,z,k]
NewList2 = [b,t,c,u,p]
我不知道如何在一个随机点拆分列表,然后从那里生成两个新列表。。
提前非常感谢任何能提供帮助的人!:)

这是对我有用的东西

split_at(X,I,Left,Right) :-
    length(Left,I),
    append(Left,Right,X).

crossover(X,Y,Z1,Z2) :-
    length(X,Len),
    random_between(0,Len,Cut),
    split_at(X,Cut,X1,X2),
    split_at(Y,Cut,Y1,Y2),
    append(X1,Y2,Z1),
    append(Y1,X2,Z2).

如果您能向我们展示您迄今为止所做的尝试,那将非常有帮助。