我希望按以下顺序生成所有可能的n位数值,其中序列由各个数字的总和决定.
例如,用n = 3:
111 sum = 3
112 sum = 4
121
211
122 sum = 5
212
221
113
131
311
114 sum = 6
141
411
:::
999 sum = 27
Run Code Online (Sandbox Code Playgroud)
总和组中的顺序并不重要.
任何帮助,想法将不胜感激
给出一个例如两个元素的列表,l = [1,0]我需要通过重复创建所有可能的5元素变体.我已经尝试过itertools.combinations但是给了我想要的东西.
有了给定n = 2,k = 5我应该得到2^5 = 32元素,结果应该如下所示:
results = [11111,11110,11101,11100,11001,11011,11010,...00000]
Run Code Online (Sandbox Code Playgroud) 我有一系列任意的乐高积木.我也有一些由3块乐高积木制成的数字.我想知道我可以创建当前乐高积木阵列的数字组合数量.
有人给我一些参考,所以我可以解决这个问题吗?
我可以使用哪些算法?我可以用任何理论吗?
提前感谢您提供的任何帮助.
/汉斯
一行中有n个项目.我们必须找到可以选择项目的方式的数量,其限制是不能选择两个连续的项目.
我尝试使用递归关系但不能达到任何关系.请帮我解决问题.
我有一个关于Haskell的快速问题.我一直在跟踪学习你是一个Haskell,我对以下片段的执行顺序/逻辑感到有点困惑,用于计算三角形的边长,当所有边都等于或小于10时三角形的总周长为24:
[(a,b,c) | c <- [1..10], b <- [1..c], a <- [1..b], a^2 + b^2 == c^2, a+b+c==24]
被混淆到我的部分是结合对的上部扩张b和a结合.从我所收集的..c,并..b用于去除更多的排列相同的一组三角形边的(组合?).
当我用它运行时..c/b,我得到答案:
[(6,8,10)]
当我没有..c/b:
[(a,b,c) | c <- [1..10], b <- [1..10], a <- [1..10], a^2 + b^2 == c^2, a+b+c==24]
正如我最初输入时没有的那样,我得到了:
[(8,6,10),(6,8,10)]
这显然代表了相同的三角形,除了a和b值已被交换.
那么,有人可以引导我完成逻辑/执行/评估这里发生的事情吗?
我希望能够生成有条件的产品.与此答案类似: 列表列表的所有组合
我想用itertools.product(*listOfLists).但是,我的问题是从一个列表中包含一个元素意味着必须为产品查阅其他列表.
例:
colors = ['red', 'blue', 'green']
fruits = ['apple', 'orange', 'banana']
locations = ['indoors', 'outdoors']
indoor_choices = ['bathroom', 'bedroom', 'kitchen']
green_choices = ['forest', 'light', 'dark']
Run Code Online (Sandbox Code Playgroud)
在这里,我们要始终考虑每种可能的颜色,特性和位置选择.然而,在"室内"的情况下,我们也想考虑室内选择,并且在"绿色"可能的选择的情况下,我们还想选择更具体的绿色.它是一种可能性的树,其中一些分支保持分支而另一些则不分支.
所以在上面的这个愚蠢的例子中你可以这样做一个for循环:
for c in colors:
for f in fruits:
for l in locations:
# etc
Run Code Online (Sandbox Code Playgroud)
但是,当我们遇到两个不同类别根据这个选择进行分支时会发生什么的问题.
一个简单的(hacky)解决方案就是手动编写条件并在其中放置循环:
for c in colors:
for f in fruits:
for l in locations:
if c == 'green' and l == 'indoor':
for gc in green_choices:
for ic in indoor_choices:
# output
elif c …Run Code Online (Sandbox Code Playgroud) 我有5个数组:
["A", "B", "C"]
["A", "B", "C", "D", "E"]
["A"]
["A", "B", "C", "D", "E", "F"]
["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O"]
Run Code Online (Sandbox Code Playgroud)
我想创建一个每个组合的列表:
["AAAAA","AAAAB","AAAAC", "AAAAD"...
"BAAAA","BAAAB","BAAAC", "BAAAD"...]
Run Code Online (Sandbox Code Playgroud) 我正在做Fisher的排列测试,其中我必须生成治疗状态的所有组合.
我们有4个科目,其中2个接受治疗.使用combn,我可以生成所有受治疗科目的组合.例如,第一行表示处理第一和第二主题.
t(combn(4, 2))
[,1] [,2]
[1,] 1 2
[2,] 1 3
[3,] 1 4
[4,] 2 3
[5,] 2 4
[6,] 3 4
Run Code Online (Sandbox Code Playgroud)
如何从此矩阵转到治疗状态矩阵,如下所示:
[,1] [,2] [,3] [,4]
[1,] 1 1 0 0
[2,] 1 0 1 0
...
Run Code Online (Sandbox Code Playgroud) 假设我有6个数字:
a <- c(1,2,3,4,5,6)
Run Code Online (Sandbox Code Playgroud)
我想列出这6个数字的所有可能的3位数组合,包括重复.
期望的结果如下所示:
1 1 1
1 2 3
1 2 4
...
Run Code Online (Sandbox Code Playgroud)
我不想包含具有相同3个数字但顺序不同的元素:
例如
1 2 3
3 2 1
Run Code Online (Sandbox Code Playgroud)
应排除其中一个
我想计算有多少d位数不包括数字9,因为它可以很大,输出模10 ^ 9 + 7.
我运行以下代码t次,最多10 ^ 18位数字,我想解决功能应该很容易,对吧?那么也许阅读或印刷需要花费很多时间.
任何提示如何加快速度?
main = do
contents <- getContents
let (t:ds) = (map read . words) contents
let ans = map solve ds
sequence_ (map print ans)
solve :: Integer -> Integer
solve ds = mod (8 * 9^(ds - 1)) (10^9 + 7)
Run Code Online (Sandbox Code Playgroud) combinatorics ×10
algorithm ×2
combinations ×2
haskell ×2
permutation ×2
python ×2
r ×2
arrays ×1
c++ ×1
java ×1
lego ×1
php ×1
predicate ×1
ruby ×1
runtime ×1
set ×1
tree ×1
variations ×1