Skip to content
Browse files

Use regex answer type to avoid dependency on math-model

Summary: I changed this to use regexs to check the answer and made it pretty liberal (i.e. it's always ok to run a -1 through everything)

Differential Revision: http://phabricator.khanacademy.org/D566
  • Loading branch information...
1 parent 4391df1 commit 1602377c85705c8118844de751ea4ff97c177d54 @beneater beneater committed
Showing with 105 additions and 0 deletions.
  1. +105 −0 exercises/factoring_linear_binomials.html
View
105 exercises/factoring_linear_binomials.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html>
+<html data-require="math math-format word-problems expressions">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <title>Factoring linear binomials</title>
+ <script src="../khan-exercise.js"></script>
+</head>
+<body>
+ <div class="exercise">
+ <div class="problems">
+ <div>
+ <div class="vars">
+ <var id="A">randRange(2, 9)</var>
+ <var id="IS_IRREDUCIBLE">random() &lt; 0.2</var>
+
+ <div data-ensure="(GCD === 1) === IS_IRREDUCIBLE">
+ <var id="B">randRangeExclude(-20, 20, [-1, 0, 1])</var>
+ <var id="GCD">getGCD(A, B)</var>
+ </div>
+ <var id="SOLUTION">
+ IS_IRREDUCIBLE ? plus(A + "x", B) :
+ GCD + "(" + plus(A / GCD + "x", B / GCD) + ")"
+ </var>
+ <var id="Ax_FACTORS">
+ toSentenceTex(getFactors(abs(A)).concat(["x"]))
+ </var>
+ <var id="B_FACTORS">
+ toSentenceTex(getFactors(abs(B)))
+ </var>
+ <var id="TERM1">GCD</var>
+ <var id="TERM1N">"[-\\u2212]" + GCD</var>
+ <var id="TERM2">"(?:" + (A &lt; 0 ? "[-\\u2212]" : "") + abs(A / GCD) + (A / GCD === 1 ? "|" : "" ) + (A / GCD === -1 ? "|[-\\u2212]" : "") + ")\\s*x"</var>
+ <var id="TERM2N">"(?:" + (A &gt; 0 ? "[-\\u2212]" : "") + abs(A / GCD) + (A / GCD === -1 ? "|" : "" ) + (A / GCD === 1 ? "|[-\\u2212]" : "") + ")\\s*x"</var>
+ <var id="TERM3">(B &lt; 0 ? "[-\\u2212]" : "\\+") + "\\s*" + abs(B / GCD)</var>
+ <var id="TERM3N">(B &gt; 0 ? "[-\\u2212]" : "\\+") + "\\s*" + abs(B / GCD)</var>
+ </div>
+ <p class="question">
+ Write the following expression in its most factored form:
+ </p>
+ <p class="problem">
+ <code><var>expr(["+", ["*", A, "x"], B])</var></code>
+ </p>
+ <div class="solution" data-type="set">
+ <div data-if="IS_IRREDUCIBLE" data-unwrap>
+ <div class="set-sol" data-type="regex">^\s*<var>TERM2</var>\s*<var>TERM3</var>\s*$</div>
+ <div class="set-sol" data-type="regex">^\s*<var>TERM2N</var>\s*<var>TERM3N</var>\s*$</div>
+ <div class="set-sol" data-type="regex">^\s*\(\s*<var>TERM2</var>\s*<var>TERM3</var>\s*\)\s*$</div>
+ <div class="set-sol" data-type="regex">^\s*\(\s*<var>TERM2N</var>\s*<var>TERM3N</var>\s*\)\s*$</div>
+ </div>
+ <div data-else data-unwrap>
+ <div class="set-sol" data-type="regex">^\s*<var>TERM1</var>\s*\(\s*<var>TERM2</var>\s*<var>TERM3</var>\s*\)\s*$</div>
+ <div class="set-sol" data-type="regex">^\s*<var>TERM1N</var>\s*\(\s*<var>TERM2N</var>\s*<var>TERM3N</var>\s*\)\s*$</div>
+ </div>
+ <div class="input-format"><span class="entry"></span></div>
+ <div class="example">
+ a factored expression, like <b>5(x+2)</b>
+ </div>
+ </div>
+ <div class="hints">
+ <p>
+ To factor a polynomial, you should first try to find
+ the greatest common factor of all the terms.
+ </p>
+ <p>
+ The factors of <code><var>A</var>x</code> are
+ <var>Ax_FACTORS</var> and the factors of
+ <code><var>B</var></code> are <var>B_FACTORS</var>.
+ </p>
+ <p>
+ The greatest common factor of <code><var>A</var>x</code>
+ and <code><var>B</var></code> is
+ <code><var>GCD</var></code>.
+ </p>
+
+ <p data-if="IS_IRREDUCIBLE">
+ Since the greatest common factor is <code>1</code>,
+ the expression is already in its most factored form.
+ </p>
+ <p data-if="IS_IRREDUCIBLE" class="final_answer">
+ Therefore the answer is the original expression,
+ <code><var>SOLUTION</var></code>.
+ </p>
+
+ <p data-if="!IS_IRREDUCIBLE">
+ We can factor out the <code><var>GCD</var></code> and
+ put it before the parenthesis.
+ </p>
+ <p data-if="!IS_IRREDUCIBLE">
+ If we divide each of the terms in the original
+ expression by <code><var>GCD</var></code> we get
+ <code>\dfrac{<var>A</var>x}{<var>GCD</var>} =
+ <var>plus((A/GCD) + "x")</var></code> and
+ <code>\dfrac{<var>B</var>}{<var>GCD</var>} =
+ <var>B/GCD</var></code>.
+ </p>
+ <p data-if="!IS_IRREDUCIBLE" class="final_answer">
+ So the factored expression is
+ <code><var>SOLUTION</var></code>.
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
+</body>
+</html>

0 comments on commit 1602377

Please sign in to comment.
Something went wrong with that request. Please try again.