生成添加到给定 int 的列表列表(Nim 游戏)
Generate a list of lists that add to a given int (game of Nim)
我是 Python/Computing 科学领域的新手 -(也是这个网站的新手)。我试图搜索这个但找不到如何去做。这是我必须完成的任务的一部分。 (尼姆游戏)。
基本上,我必须将一个给定的整数(例如:6)拆分成所有可以添加到它的可能组合,在列表列表中 - 但不是重复的。
因此,例如,对于 6,该函数将生成:[[1,5],[2,4]]
对于 10,它将生成:[[9,1],[8,2],[7,3],[6,4]]
(然后我会使用这些来 "dissect" 它们更多,使用二叉树,但我想我可以自己做 - 只需要这部分的帮助)
感谢您的宝贵时间和帮助!
简单示例:
n = 6
l = 0
r = n
lista = []
while l<=r:
if l+r == n:
lista.append((l,r))
l += 1
r -= 1
print lista
#Output
[(0, 6), (1, 5), (2, 4), (3, 3)]
要删除重复项,您可以使用 set()
你可以这样做:
n = 6
lst = [[i, n-i] for i in range(n)]
这可以是可能的辅助函数之一。
# python 3.x
def solution(number):
return [[i, number - i] for i in range(number // 2 + 1)]
>>>solution(6)
[[0, 6], [1, 5], [2, 4], [3, 3]]
>>>solution(10)
[[0, 10], [1, 9], [2, 8], [3, 7], [4, 6], [5, 5]]
因为你不想重复,你可以停在中间,确保它适用于奇数和偶数:
[(i, n - i) for i in range(1, (n + 1) // 2)]
这是一个例子:
>>> n=6
>>> [(i, n - i) for i in range(1, (n + 1) // 2)]
[(1, 5), (2, 4)]
>>> n=7
>>> [(i, n - i) for i in range(1, (n + 1) // 2)]
[(1, 6), (2, 5), (3, 4)]
>>> n=10
>>> [(i, n - i) for i in range(1, (n + 1) // 2)]
[(1, 9), (2, 8), (3, 7), (4, 6)]
我是 Python/Computing 科学领域的新手 -(也是这个网站的新手)。我试图搜索这个但找不到如何去做。这是我必须完成的任务的一部分。 (尼姆游戏)。
基本上,我必须将一个给定的整数(例如:6)拆分成所有可以添加到它的可能组合,在列表列表中 - 但不是重复的。
因此,例如,对于 6,该函数将生成:[[1,5],[2,4]] 对于 10,它将生成:[[9,1],[8,2],[7,3],[6,4]]
(然后我会使用这些来 "dissect" 它们更多,使用二叉树,但我想我可以自己做 - 只需要这部分的帮助)
感谢您的宝贵时间和帮助!
简单示例:
n = 6
l = 0
r = n
lista = []
while l<=r:
if l+r == n:
lista.append((l,r))
l += 1
r -= 1
print lista
#Output
[(0, 6), (1, 5), (2, 4), (3, 3)]
要删除重复项,您可以使用 set()
你可以这样做:
n = 6
lst = [[i, n-i] for i in range(n)]
这可以是可能的辅助函数之一。
# python 3.x
def solution(number):
return [[i, number - i] for i in range(number // 2 + 1)]
>>>solution(6)
[[0, 6], [1, 5], [2, 4], [3, 3]]
>>>solution(10)
[[0, 10], [1, 9], [2, 8], [3, 7], [4, 6], [5, 5]]
因为你不想重复,你可以停在中间,确保它适用于奇数和偶数:
[(i, n - i) for i in range(1, (n + 1) // 2)]
这是一个例子:
>>> n=6
>>> [(i, n - i) for i in range(1, (n + 1) // 2)]
[(1, 5), (2, 4)]
>>> n=7
>>> [(i, n - i) for i in range(1, (n + 1) // 2)]
[(1, 6), (2, 5), (3, 4)]
>>> n=10
>>> [(i, n - i) for i in range(1, (n + 1) // 2)]
[(1, 9), (2, 8), (3, 7), (4, 6)]