from itertools import combinations, permutations
import numpy as np
def gauss(a):
arr = [r[:] for r in a]
n, m = len(arr), len(arr[0])
h, k = 0, 0
while h < n and k < m:
idx = next((i for i in range(h, n) if arr[i][k] != 0), None)
if idx is None:
k += 1
else:
arr[idx], arr[h] = arr[h], arr[idx]
for i in range(h + 1, n):
f = arr[i][k] / arr[h][k]
arr[i][k] = 0
for j in range(k + 1, m):
arr[i][j] -= arr[h][j] * f
h += 1
k += 1
return arr
def solve(a):
n, m = len(a), len(a[0])
arr = gauss(a)
if not all(x == 0 for i in range(3, n) for x in arr[i]):
return None
arr = arr[:-3]
sol = [None] * 3
if arr[-1][-2] == 0:
return None
sol[-1] = arr[-1][-1] / arr[-1][-2]
for i in range(1, -1, -1):
if arr[i][i] == 0:
return None
sol[i] = (arr[i][-1] - sum(arr[i][j] * sol[j] for j in range(i + 1, 3))) / arr[i][i]
return sol
eqs = [[3,0,0],[0,3,0],[0,0,3],
[1,2,0],[2,1,0],[1,0,2],[2,0,1],[0,1,2],[0,2,1],
[1,1,1],
[2, 0, 0],[0,2,0],[0,0,2],
[1, 1, 0],[0, 1, 1], [1, 0, 1],
[1, 0,0],[0,1,0],[0,0,1]
]
# eqs = [[3,0,0],[1,1, 0],[2,1,0],[2,0,1],[1,1,1], [0,2,1]]
ns = (3,11,12,102,111,120)
n = len(ns)
for p in permutations(eqs, r=n):
A = [p[i]+[ns[i]] for i in range(n)]
r = solve(A)
if r is not None:
print(r)
To embed this program on your website, copy the following code and paste it into your website's HTML: