我需要通过n
矩阵创建一个 2
x y
1 x1 y1
2 x2 y2
3 x3 y3
4 x4 y4
5 x5 y5
. .. ..
n xn yn
它需要从具有 3 个输入的函数创建:x
、y
和n
,让我们称之为make_m(x,y,n)
矩阵需要遵循以下标准:
- x列中数字的总和=
x
- y 列中的数字之和 =
y
- 在任何给定的行中,x#/y# =
x/y
- 必须有
n
行数
现在我有一个函数可以找到所有可能的对x
并y
在元组列表中返回它们,但是我不知道如何解决如何找到将哪些元组作为行来满足 4 个要求的问题。这是该功能:
def find_r(x,y):
return [(a, a*num2/num1) for a in range(1, num1) if (a*num2) % num1 == 0]
是的,会有一些例子因为这个比例而不起作用,例如:
In [60]: find_r(100,891)
Out[60]: []
并且会有一些对某些数量的n
. n
例如,对于高于 4的值,以下将是不可能的
In [57]: find_r(100,364)
Out[57]: [(25, 91), (50, 182), (75, 273)]
但暂时不要担心这些。
真正的问题是许多产生的可能性有大量的可能性,所以我不仅需要一个算法函数来挑选正确的元组,还需要最好的元组。
我希望它选择的元组在大小上尽可能接近,这意味着最好的解决方案是在整个序列中只重复一个元组。
那么如何编写一个能够创建我需要的矩阵的函数呢?