2 byn
マトリックスを作成する必要があります
x y
1 x1 y1
2 x2 y2
3 x3 y3
4 x4 y4
5 x5 y5
. .. ..
n xn yn
x
、y
、およびの3 つの入力を持つ関数から作成する必要がありますn
。make_m(x,y,n)
マトリックスは次の基準に従う必要があります。
- 列 x の数値の合計 =
x
- 列 y の数値の合計 =
y
- 任意の行で、x#/y# =
x/y
n
行数が必要です
今、可能なすべてのx
andのペアを見つけ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)]
しかし、今のところそれらについて心配する必要はありません。
本当の問題は、結果として得られる多くの可能性には大量の可能性があるということです。したがって、正しいタプルを選択するためのアルゴリズム関数だけでなく、最適なタプルも必要です。
可能であれば、選択するタプルのサイズが互いに近いようにしたいと思います。つまり、シーケンス全体で 1 つのタプルのみが繰り返されることが最善の解決策です。
では、必要な行列を作成できる関数を作成するにはどうすればよいでしょうか?