{
const { Integer, value, $, latex, Eval, Plus, Subtract, Times } = Guacyra;
const { Matrix, forEachEntry, prod, det, adj } = LinearAlgebra;
const { univariate, toExpression } = Polynomial;
const { formatMatrix } = Formatting;
const n = 4;
const cat = "Det4x4Eq";
Random.seed(cat);
let xml = MoodleXML(cat, i => {
const q = {};
const A = Matrix(n, n);
let lc;
do {
forEachEntry(A, (i, j) => {
A[i][j] = Integer(Random.randInteger(-1, 1));
});
const i1 = Random.randInteger(1, n);
const i2 = Random.randInteger(1, n);
const j1 = Random.randInteger(1, n);
const j2 = Random.randInteger(1, n);
A[i1][j1] = $`x`;
A[i2][j2] = $`x`;
lc = univariate(det(A));
} while (lc.length < 3);
let r1 = Random.randInteger(-3, 3);
let r2;
do {
r2 = Random.randInteger(-3, 3);
} while (r1 == r2);
if (r2 < r1) [r1, r2] = [r2, r1];
lc[2] = Eval(Subtract(lc[2], 1));
lc[1] = Eval(Plus(lc[1], Integer(r1), Integer(r2)));
lc[0] = Eval(Subtract(lc[0], Times(Integer(r1), Integer(r2))));
q.text = raw`Resolva a equação \[ \det ${formatMatrix(A)}=${latex(
toExpression(lc)
)}. \]`;
q.answer = [raw`\( x=${r1} \) ou \( x=${r2} \)`];
while (q.answer.length != 5) {
let d1 = r1 + Random.randInteger(-3, 3);
let d2;
do {
d2 = r2 + Random.randInteger(-3, 3);
} while (d1 == d2);
if (d2 < d1) [d1, d2] = [d2, d1];
const t = raw`\( x=${d1} \) ou \( x=${d2} \)`;
if (q.answer.reduce((a, b) => a && b != t, true)) q.answer.push(t);
}
return q;
});
return downloadButton(`${cat}.xml`, xml);
}