我在运行python程序时遇到错误:
Traceback (most recent call last):
File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 110, in <module>
File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 27, in __init__
File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\class\inventory.py", line 17, in __init__
builtins.NameError: global name 'xrange' is not defined
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) 说我有一个n个元素的列表,我知道有n个!订购这些元素的可能方式.生成此列表的所有可能排序的算法是什么?例如,我有列表[a,b,c].该算法将返回[[a,b,c],[a,c,b,],[b,a,c],[b,c,a],[c,a,b],[c,b , 一个]].
我在这里阅读 http://en.wikipedia.org/wiki/Permutation#Algorithms_to_generate_permutations
但维基百科从未擅长解释.我不太了解它.
我有一个字符串.我想通过改变字符串中的字符顺序从该字符串生成所有排列.例如,说:
x='stack'
Run Code Online (Sandbox Code Playgroud)
我想要的是这样的列表,
l=['stack','satck','sackt'.......]
Run Code Online (Sandbox Code Playgroud)
目前我正在迭代字符串的列表转换,随机挑选2个字母并转置它们以形成一个新字符串,并将其添加到l的设置转换.根据字符串的长度,我计算可能的排列数,并继续迭代,直到设置大小达到限制.必须有更好的方法来做到这一点.
我有数字,从0到8.我想在结果中,所有可能的那些数字组,每组应该使用所有数字,每个数字只能在一组中出现一次.
我想在PHP中看到可以打印出结果的解决方案.或者,至少,我想在组合学理论上有一些更新,因为我早就忘记了它.计算有多少排列的公式是什么?
示例集:
要求:生成集合的所有可能组合的算法,无需重复,或递归调用函数以返回结果.
大多数,如果不是所有的答案都在JavaScript中的Permutations提供?从循环或其他函数中递归调用函数以返回结果.
循环内的递归函数调用示例
function p(a, b, res) {
var b = b || [], res = res || [], len = a.length;
if (!len)
res.push(b)
else
for (var i = 0; i < len
// recursive call to `p` here
; p(a.slice(0, i).concat(a.slice(i + 1, len)), b.concat(a[i]), res)
, i++
);
return res
}
p(["a", "b", "c"]);
Run Code Online (Sandbox Code Playgroud)
当前的问题试图在线性过程中创建给定的排列,依赖于先前的排列.
例如,给定一个数组
var arr = ["a", "b", "c"];
Run Code Online (Sandbox Code Playgroud)
确定可能的排列总数
for (var len = 1, i = k …Run Code Online (Sandbox Code Playgroud) 是否有可能编写一个bash脚本,可以从文件中读取每一行并为每个行生成排列(不重复)?使用awk/perl很好.
File
----
ab
abc
Output
------
ab
ba
abc
acb
bac
bca
cab
cba
Run Code Online (Sandbox Code Playgroud) 今天我的CPSC教授在python中分配了一个测验,主题是递归.
整个班级都陷入了第二个问题,这是下面的问题.没有人能够接近解决方案.
def sub_set(A):
if A == []: return A
X = sub_set(A[1:])
result = []
for L in X:
result += _____
return _____
Run Code Online (Sandbox Code Playgroud)
示例代码:
print(sub_set([1, 2])) # [[], [1], [2], [1, 2]]
print(sub_set([1, 2, 3])) # [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
Run Code Online (Sandbox Code Playgroud)
您只能修改下划线,例如下面的示例可能会演示.
我的解决方案远非如此接近,甚至不应该考虑:
def sub_set(A):
if A == []: return A
X = sub_set(A[1:])
result = []
for L in X:
result += _____
return result + [A[:1]] + [A] …Run Code Online (Sandbox Code Playgroud) 我想知道是否有任何方法可以n从数字列表中获取所有长度组合.
例如,如果我的列表是[1, 2, 3, 4],我想输出(如果我选择n = 3)
[1, 2, 3]
[1, 2, 4]
[1, 3, 4]
[2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
像[2,1,3]这样的其他排列对我没用.
我正在尝试编写一个Common Lisp函数,它将为我提供列表的所有可能排列,仅使用每个元素一次.例如,列表'(1 2 3)将给出输出((1 2 3)(1 3 2)(2 1 3)(2 3 1)(3 1 2)(3 2 1)).
我已经写了一些有用的东西,但它很笨重,它并不总是有用,我甚至都不懂.我不是要求代码,也可能是关于如何思考它的一些指导.我对编写算法知之甚少.
谢谢你,杰森
permutation ×5
python ×5
algorithm ×4
combinations ×2
list ×2
bash ×1
common-lisp ×1
javascript ×1
lisp ×1
php ×1
python-3.x ×1
range ×1
recursion ×1
shell ×1
string ×1
xrange ×1