gpt4 book ai didi

list - 如何生成只有给定长度的两个 1 和其他 0 的列表?

转载 作者:行者123 更新时间:2023-12-01 05:17:07 24 4
gpt4 key购买 nike

我必须生成由 2 个“1”和其他元素为“0”的列表。我尝试了以下代码,但它不起作用:

count([], _, 0).
count([X|T], X, Y) :- count(T, X, Z), Y is 1+Z.
count([X1|T],X,Z):- X1\=X,count(T,X,Z).

two(X) :- count(X, 1, Counter), Counter =:= 2.

查询 length(Vs, 4), Vs ins 0..1, two(Vs). 什么也没有。

如何正确生成这样的列表?
我希望得到类似 [1, 1, 0, 0], [1, 0, 1, 0] ... [0, 0, 1, 1] 的东西。

最佳答案

twoones(Bs) :-
Bs ins 0..1,
sum(Bs, #=, 2).

| ?- length(Bs,4), twoones(Bs).
Bs = [_A,_B,_C,_D],
clpz:(_A+_B+_C+_D#=2),
clpz:(_A in 0..1),
clpz:(_B in 0..1),
clpz:(_C in 0..1),
clpz:(_D in 0..1) ?
yes
| ?- length(Bs,4), twoones(Bs), labeling([], Bs).
Bs = [0,0,1,1] ? ;
Bs = [0,1,0,1] ? ;
Bs = [0,1,1,0] ? ...

在这里,我使用 library(clpz) ,它是 library(clpfd) 的继承者。对于像这样的简单示例,没有太大区别。

关于list - 如何生成只有给定长度的两个 1 和其他 0 的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60247679/

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