🗑️ Clean up code
This commit is contained in:
@@ -250,7 +250,7 @@ class SolverService {
|
||||
stepNumber: 3,
|
||||
title: '方程变形',
|
||||
explanation: a == 1 ? '方程已经是标准形式。' : '将方程两边同时除以 $a。',
|
||||
formula: '\$\$${currentEquation}\$\$',
|
||||
formula: '\$\$$currentEquation\$\$',
|
||||
),
|
||||
);
|
||||
|
||||
@@ -270,19 +270,19 @@ class SolverService {
|
||||
final halfCoeff = b / (2 * a);
|
||||
final completeSquareTerm = halfCoeff * halfCoeff;
|
||||
final completeStr = completeSquareTerm >= 0
|
||||
? '+${completeSquareTerm}'
|
||||
? '+$completeSquareTerm'
|
||||
: completeSquareTerm.toString();
|
||||
|
||||
final xTerm = halfCoeff >= 0 ? "+${halfCoeff}" : halfCoeff.toString();
|
||||
final rightSide = "${-constantTerm} ${completeStr}";
|
||||
final xTerm = halfCoeff >= 0 ? "+$halfCoeff" : halfCoeff.toString();
|
||||
final rightSide = "${-constantTerm} $completeStr";
|
||||
|
||||
steps.add(
|
||||
CalculationStep(
|
||||
stepNumber: 5,
|
||||
title: '配方',
|
||||
explanation:
|
||||
'在方程两边同时加上 \$(\\frac{b}{2a})^2 = ${completeSquareTerm}\$ 以配成完全平方。',
|
||||
formula: '\$\$(x ${xTerm})^2 = $rightSide\$\$',
|
||||
'在方程两边同时加上 \$(\\frac{b}{2a})^2 = $completeSquareTerm\$ 以配成完全平方。',
|
||||
formula: '\$\$(x $xTerm)^2 = $rightSide\$\$',
|
||||
),
|
||||
);
|
||||
|
||||
@@ -290,7 +290,7 @@ class SolverService {
|
||||
final rightSideValue = -constantTerm + completeSquareTerm;
|
||||
final rightSideStrValue = rightSideValue >= 0
|
||||
? rightSideValue.toString()
|
||||
: '(${rightSideValue})';
|
||||
: '($rightSideValue)';
|
||||
|
||||
steps.add(
|
||||
CalculationStep(
|
||||
@@ -298,7 +298,7 @@ class SolverService {
|
||||
title: '化简',
|
||||
explanation: '合并右边的常数项。',
|
||||
formula:
|
||||
'\$\$(x ${halfCoeff >= 0 ? "+" : ""}${halfCoeff})^2 = $rightSideStrValue\$\$',
|
||||
'\$\$(x ${halfCoeff >= 0 ? "+" : ""}$halfCoeff)^2 = $rightSideStrValue\$\$',
|
||||
),
|
||||
);
|
||||
|
||||
@@ -314,7 +314,7 @@ class SolverService {
|
||||
title: '开方',
|
||||
explanation: '对方程两边同时开平方。',
|
||||
formula:
|
||||
'\$\$x ${halfCoeff >= 0 ? "+" : ""}${halfCoeff} = \\pm $sqrtStr\$\$',
|
||||
'\$\$x ${halfCoeff >= 0 ? "+" : ""}$halfCoeff = \\pm $sqrtStr\$\$',
|
||||
),
|
||||
);
|
||||
|
||||
@@ -890,42 +890,6 @@ ${b1}y &= ${c1 - a1 * x.toDouble()}
|
||||
return [a, b, c];
|
||||
}
|
||||
|
||||
({String formula, String solution})? _tryFactorization(int a, int b, int c) {
|
||||
if (a == 0) return null;
|
||||
int ac = a * c;
|
||||
int absAc = ac.abs();
|
||||
|
||||
// Try all divisors of abs(ac) and consider both positive and negative factors
|
||||
for (int d = 1; d <= sqrt(absAc).toInt(); d++) {
|
||||
if (absAc % d == 0) {
|
||||
int d1 = d;
|
||||
int d2 = absAc ~/ d;
|
||||
|
||||
// Try all sign combinations for the factors
|
||||
// We need m * n = ac and m + n = b
|
||||
List<int> signCombinations = [1, -1];
|
||||
|
||||
for (int sign1 in signCombinations) {
|
||||
for (int sign2 in signCombinations) {
|
||||
int m = sign1 * d1;
|
||||
int n = sign2 * d2;
|
||||
if (m + n == b && m * n == ac) {
|
||||
return formatFactor(m, n, a);
|
||||
}
|
||||
|
||||
// Also try the swapped version
|
||||
m = sign1 * d2;
|
||||
n = sign2 * d1;
|
||||
if (m + n == b && m * n == ac) {
|
||||
return formatFactor(m, n, a);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
bool check(int m, int n, int b) => m + n == b;
|
||||
|
||||
({String formula, String solution}) formatFactor(int m, int n, int a) {
|
||||
@@ -1368,47 +1332,4 @@ ${b1}y &= ${c1 - a1 * x.toDouble()}
|
||||
if (r.denominator == BigInt.one) return r.numerator.toString();
|
||||
return '\\frac{${r.numerator}}{${r.denominator}}';
|
||||
}
|
||||
|
||||
/// 测试方法:验证修复效果
|
||||
void testParenthesesFix() {
|
||||
print('=== 测试括号修复效果 ===');
|
||||
|
||||
// 测试案例1: 已经标准化的方程
|
||||
final test1 = 'x^2+4x-8=0';
|
||||
print('测试输入: $test1');
|
||||
final result1 = solve(test1);
|
||||
print('整理方程步骤:');
|
||||
result1.steps.forEach((step) {
|
||||
if (step.title == '整理方程') {
|
||||
print(' 公式: ${step.formula}');
|
||||
}
|
||||
});
|
||||
print('预期: x^2+4x-8=0 (无括号)');
|
||||
print('');
|
||||
|
||||
// 测试案例2: 需要展开的方程
|
||||
final test2 = '(x+2)^2=x^2+4x+4';
|
||||
print('测试输入: $test2');
|
||||
final result2 = solve(test2);
|
||||
print('整理方程步骤:');
|
||||
result2.steps.forEach((step) {
|
||||
if (step.title == '整理方程') {
|
||||
print(' 公式: ${step.formula}');
|
||||
}
|
||||
});
|
||||
print('预期: 展开后无不必要的括号');
|
||||
print('');
|
||||
|
||||
// 测试案例3: 因式分解
|
||||
final test3 = '(x+1)(x-1)=x^2-1';
|
||||
print('测试输入: $test3');
|
||||
final result3 = solve(test3);
|
||||
print('整理方程步骤:');
|
||||
result3.steps.forEach((step) {
|
||||
if (step.title == '整理方程') {
|
||||
print(' 公式: ${step.formula}');
|
||||
}
|
||||
});
|
||||
print('预期: 展开后无不必要的括号');
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user