我想写一个函数,它将一个字母数组作为参数,并选择一些字母.
假设您提供了8个字母的数组,并希望从中选择3个字母.然后你应该得到:
8! / ((8 - 3)! * 3!) = 56
Run Code Online (Sandbox Code Playgroud)
数组(或单词)返回,每个包含3个字母.
我有一个包含15个数字的列表,我需要编写一些代码来生成这些数字的所有32,768种组合.
我发现了一些代码(通过谷歌搜索)显然正在寻找我正在寻找的东西,但我发现代码相当不透明并且对使用它很谨慎.另外我觉得必须有一个更优雅的解决方案.
我发生的唯一事情就是循环遍历十进制整数1-32768并将它们转换为二进制,并使用二进制表示作为过滤器来选择适当的数字.
有谁知道更好的方法?使用map()
,也许?
我基本上正在寻找一个python版本的组合List<List<int>>
给定一个列表列表,我需要一个新列表,它列出了列表之间所有可能的项目组合.
[[1,2,3],[4,5,6],[7,8,9,10]] -> [[1,4,7],[1,4,8],...,[3,6,10]]
Run Code Online (Sandbox Code Playgroud)
列表的数量是未知的,所以我需要一些适用于所有情况的东西.优点加分!
您将如何测试一组给定数字的所有可能的添加组合,以便它们加起来给定的最终数字?
例:
已经有一段时间了,我无法绕过我想要制作的算法.基本上,我有两个列表,并希望获得两个列表的所有组合.
我可能不会解释它是正确的,所以这是一个例子.
name = 'a', 'b'
number = 1, 2
Run Code Online (Sandbox Code Playgroud)
在这种情况下的输出将是:
1. A1 B2
2. B1 A2
Run Code Online (Sandbox Code Playgroud)
棘手的部分是"name"变量中的项目可能比"number"变量中的项目更多(数字将始终等于或小于name变量).
我很困惑如何进行所有组合(嵌套for循环?),如果名称中的项目多于它们在数字列表中的项目,则更加混淆逻辑以移动名称变量中的项目.
我不是最好的程序员但是如果有人可以帮助我澄清逻辑/算法来实现这一点,我想我可以试一试.所以我刚刚陷入嵌套for循环.
更新:
这是3个变量和2个数字的输出:
name = 'a', 'b', 'c'
number = 1, 2
Run Code Online (Sandbox Code Playgroud)
输出:
1. A1 B2
2. B1 A2
3. A1 C2
4. C1 A2
5. B1 C2
6. C1 B2
Run Code Online (Sandbox Code Playgroud) 我实际上不知道如何描述我想要的东西,但我会告诉你:
例如:
$data1 = "the color is";
$data2 = "red";
Run Code Online (Sandbox Code Playgroud)
我应该做什么(或处理)所以$ result是$data1
和$data2
?的组合?
期望的结果:
$result = "the color is red";
Run Code Online (Sandbox Code Playgroud) 我需要计算在Python combinatorials(NCR),但无法找到的功能做在math
,numpy
或stat
图书馆.类似于类型函数的东西:
comb = calculate_combinations(n, r)
Run Code Online (Sandbox Code Playgroud)
我需要可能的组合数量,而不是实际的组合,所以itertools.combinations
我不感兴趣.
最后,我想避免使用阶乘,因为我将计算组合的数字可能变得太大而且阶乘将变得非常可怕.
这似乎是一个非常容易回答的问题,但是我被淹没在关于生成所有实际组合的问题中,这不是我想要的.:)
非常感谢
我需要创建一个数字组合列表.数字很小所以我可以使用byte
而不是int
.但是,它需要许多嵌套循环才能获得所有可能的组合.我想知道是否有更有效的方式来做我想要的事情.到目前为止的代码是:
var data = new List<byte[]>();
for (byte a = 0; a < 2; a++)
for (byte b = 0; b < 3; b++)
for (byte c = 0; c < 4; c++)
for (byte d = 0; d < 3; d++)
for (byte e = 0; e < 4; e++)
for (byte f = 0; f < 3; f++)
for (byte g = 0; g < 3; g++)
for (byte h = 0; h < …
Run Code Online (Sandbox Code Playgroud) Ruby的实现方式是什么?
a = [1,2]
b = [3,4]
Run Code Online (Sandbox Code Playgroud)
我想要一个数组:
=> [f(1,3) ,f(1,4) , f(2,3) ,f(2,4)]
Run Code Online (Sandbox Code Playgroud) 我试图用这段代码在javascript中捕获ctrl+ z组合键:
<html>
<head>
<title>Untitled Document</title>
</head>
<body>
<script type='text/javascript'>
function KeyPress(e) {
var evtobj = window.event? event : e
//test1 if (evtobj.ctrlKey) alert("Ctrl");
//test2 if (evtobj.keyCode == 122) alert("z");
//test 1 & 2
if (evtobj.keyCode == 122 && evtobj.ctrlKey) alert("Ctrl+z");
}
document.onkeypress = KeyPress;
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如果我按住ctrl键并按任何其他键,注释行"test1"将生成警报.
如果我按下z键,注释行"test2"会生成警报.
在"测试1和2"之后按照线路将它们放在一起,按住ctrl键然后按下z键不会按预期生成警报.
代码有什么问题?
combinations ×10
python ×4
algorithm ×3
c# ×1
ctrl ×1
javascript ×1
list ×1
php ×1
ruby ×1
search ×1
statistics ×1
string ×1
subset-sum ×1
variables ×1