Skip to content
This repository has been archived by the owner on May 11, 2021. It is now read-only.

Commit

Permalink
Additional hints for remainders
Browse files Browse the repository at this point in the history
Summary:
Change exercises to meet standards

Move remainder code into Divider object

Get divider working for non-decimals

Make division test exercise

Fix Divider for decimals

Decimal tests

Get division working with decimal remainders

More tests

Update exercises to work with new Division object

Further tweaks

Test Plan: Make sure all the exercises in division_tests.html look good. Also try the exercises in division_x.html, dividing_decimals_x.html and converting_fractions_to_decimals.html.

Reviewers: eater

Reviewed By: eater

Differential Revision: http://phabricator.khanacademy.org/D9094
  • Loading branch information
petercollingridge committed Jun 3, 2014
1 parent a58ad05 commit 8c46b4e
Show file tree
Hide file tree
Showing 10 changed files with 519 additions and 235 deletions.
13 changes: 3 additions & 10 deletions exercises/converting_fractions_to_decimals.html
Expand Up @@ -12,27 +12,20 @@
<div class="vars" data-ensure="getGCD(NUMERATOR, DENOMINATOR) === 1">
<var id="DENOMINATOR">randFromArray([4, 5, 8, 10, 20, 25, 50])</var>
<var id="NUMERATOR">randRange(1, DENOMINATOR - 1)</var>
<var id="DECIMAL_3">Math.floor(NUMERATOR / DENOMINATOR * 1000) / 1000</var>
<var id="DECIMAL">roundTo(3, NUMERATOR / DENOMINATOR)</var>
<var id="NUMERATOR_10">NUMERATOR * pow(10, 3)</var>
</div>
<p>Express the fraction as a decimal.</p>
<p class="question"><code>\dfrac{<var>NUMERATOR</var>}{<var>DENOMINATOR</var>}</code></p>
<p class="solution" data-type="decimal"><var>DECIMAL</var></p>
<div class="hints">
<p>This fraction represents the result of dividing <code><var>NUMERATOR</var></code> by <code><var>DENOMINATOR</var></code>.</p>

<div class="graphie" id="nmbrs">
graph.divider = new Divider(DENOMINATOR, NUMERATOR_10, 0, 3);
<div class="graphie" id="numbers">
graph.divider = new Divider(DENOMINATOR, NUMERATOR, 0, 0, true);
graph.divider.show();
DUMMY = Array(graph.divider.getNumHints());
</div>

<div class="graphie" data-update="nmbrs">
graph.divider.shiftDecimals();
</div>

<div class="graphie" data-each="Divider.numHintsFor(DENOMINATOR, NUMERATOR_10, 0, 3) times" data-update="nmbrs">
<div class="graphie" data-each="Divider.getNumberOfHints(DENOMINATOR, NUMERATOR, 0, 0, true) times" data-update="numbers">
graph.divider.showHint();
</div>

Expand Down
19 changes: 6 additions & 13 deletions exercises/dividing_decimals_0.5.html
Expand Up @@ -11,27 +11,20 @@
<div id="decimal">
<div class="vars" data-ensure="QUOTIENT != round(QUOTIENT)">
<var id="BOOST">randFromArray([2, 5, 10])</var>
<var id="DIVISOR">round( randRange(2, 9) * BOOST )</var>
<var id="QUOTIENT">roundTo( 1, randRange(2, 9) / BOOST )</var>
<var id="DIVIDEND">round( DIVISOR * QUOTIENT )</var>
<var id="DIVISOR">round(randRange(2, 9) * BOOST)</var>
<var id="QUOTIENT">roundTo(1, randRange(2, 9) / BOOST)</var>
<var id="DIVIDEND">round(DIVISOR * QUOTIENT)</var>
</div>
<p>Please give your answer in decimal form.</p>

<div class="graphie" id="numbers">
graph.divider = new Divider( DIVISOR, DIVIDEND );
graph.divider = new Divider(DIVISOR, DIVIDEND, 0, 0, true);
graph.divider.show();
DUMMY1 = Array(graph.divider.getNumHints());
DUMMY2 = Array(3);
DUMMY = Array(graph.divider.getNumHints());
</div>
<div class="solution" data-type="decimal"><var>QUOTIENT</var></div>
<div class="hints">
<div class="graphie" data-each="DUMMY1 as dummy" data-update="numbers">
graph.divider.showHint();
</div>
<div class="graphie" data-update="numbers">
graph.divider.addDecimalRemainder();
</div>
<div class="graphie" data-each="DUMMY2 as dummy" data-update="numbers">
<div class="graphie" data-each="DUMMY as dummy" data-update="numbers">
graph.divider.showHint();
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion exercises/dividing_decimals_3.html
Expand Up @@ -7,7 +7,7 @@
</head>
<body>
<div class="exercise">
<div class="vars">
<div class="vars" data-ensure="DIVIDEND % 10 !== 0">
<var id="DIVISOR">randRange(11, 99)</var>
<var id="QUOTIENT">randRange(5, 99)</var>
<var id="DIVIDEND">DIVISOR * QUOTIENT</var>
Expand Down
2 changes: 1 addition & 1 deletion exercises/dividing_decimals_4.html
Expand Up @@ -7,7 +7,7 @@
</head>
<body>
<div class="exercise">
<div class="vars">
<div class="vars" data-ensure="DIVIDEND % 10 !== 0">
<var id="DIVISOR">randRange( 10, 99 )</var>
<var id="QUOTIENT">randRange( 100, 999 )</var>
<var id="DIVIDEND">DIVISOR * QUOTIENT</var>
Expand Down
5 changes: 3 additions & 2 deletions exercises/division_1.5.html
Expand Up @@ -8,8 +8,9 @@
<body>
<div class="exercise">
<div class="vars">
<var id="DIVISOR">randRange( 2, 9 )</var>
<var id="QUOTIENT">randRange(10, 99)</var>
<var id="DIVISOR">randRange(2, 9)</var>
<var id="PRE_DIVIDEND">rand(2) ? randRange(20, 99) : randRange(100, 999)</var>
<var id="QUOTIENT">floor(PRE_DIVIDEND / DIVISOR)</var>
<var id="DIVIDEND">DIVISOR * QUOTIENT</var>
<var id="DUMMY">[]</var>
</div>
Expand Down
26 changes: 12 additions & 14 deletions exercises/division_2.html
Expand Up @@ -8,13 +8,14 @@
<body>
<div class="exercise">
<div class="vars">
<var id="DIVISOR">randRange( 2, 9 )</var>
<var id="QUOTIENT">randRange( 10, 999 )</var>
<var id="FINAL_REMAINDER">randRange( 1, DIVISOR - 1 )</var>
<var id="DIVIDEND">DIVISOR * QUOTIENT + FINAL_REMAINDER</var>
<var id="DIVIDEND_DIGITS">integerToDigits( DIVIDEND )</var>
<var id="DIVISOR">randRange(2, 9)</var>
<var id="PRE_DIVIDEND">rand(2) ? randRange(100, 999) : randRange(1000, 9999)</var>
<var id="QUOTIENT">floor(PRE_DIVIDEND / DIVISOR)</var>
<var id="REMAINDER">randRange(1, DIVISOR - 1)</var>
<var id="DIVIDEND">DIVISOR * QUOTIENT + REMAINDER</var>
<var id="DUMMY">[]</var>
</div>

<div class="problems">
<div>
<div class="graphie" id="numbers">
Expand All @@ -25,20 +26,17 @@
<div class="solution" data-type="multiple">
<div>
<span class="sol short40" data-forms="integer"><var>QUOTIENT</var></span><code>\text{ R }</code>
<span class="sol short40" data-forms="integer" data-fallback="0"><var>FINAL_REMAINDER</var></span>
<span class="sol short40" data-forms="integer" data-fallback="0"><var>REMAINDER</var></span>
</div>
<div>Write your answer as a whole number and remainder.</div>
<p class="example">a quotient and remainder, like <code>5 \text{ R } 3</code></p>
</div>
</div>
</div>
<div class="hints">
<div class="graphie" data-each="DUMMY as dummy" data-update="numbers">
graph.divider.showHint();
</div>

<div class="graphie" data-update="numbers">
drawDigits( [ "\\text{R}" ].concat( integerToDigits( FINAL_REMAINDER ) ), DIVIDEND_DIGITS.length, 1 );
<div class="hints">
<div class="graphie" data-each="DUMMY as dummy" data-update="numbers">
graph.divider.showHint();
</div>
</div>
</div>
</div>
</div>
Expand Down
5 changes: 3 additions & 2 deletions exercises/division_3.html
Expand Up @@ -7,9 +7,10 @@
</head>
<body>
<div class="exercise">
<div class="vars">
<div class="vars" data-ensure="QUOTIENT > 10">
<var id="DIVISOR">randRange(10, 99)</var>
<var id="QUOTIENT">randRange(ceil(100 / DIVISOR), floor(9999 / DIVISOR))</var>
<var id="PRE_DIVIDEND">rand(2) ? randRange(100, 999) : randRange(1000, 9999)</var>
<var id="QUOTIENT">floor(PRE_DIVIDEND / DIVISOR)</var>
<var id="DIVIDEND">DIVISOR * QUOTIENT</var>
<var id="DUMMY">[]</var>
</div>
Expand Down
18 changes: 7 additions & 11 deletions exercises/division_4.html
Expand Up @@ -7,12 +7,12 @@
</head>
<body>
<div class="exercise">
<div class="vars">
<var id="DIVISOR">randRange( 10, 99 )</var>
<var id="QUOTIENT">randRange(ceil(100 / DIVISOR), floor(9999 / DIVISOR))</var>
<var id="FINAL_REMAINDER">randRange( 1, DIVISOR - 1 )</var>
<var id="DIVIDEND">DIVISOR * QUOTIENT + FINAL_REMAINDER</var>
<var id="DIVIDEND_DIGITS">integerToDigits( DIVIDEND )</var>
<div class="vars" data-ensure="QUOTIENT > 10">
<var id="DIVISOR">rand(2) ? randRange(10, 99) : randRange(100, 999)</var>
<var id="PRE_DIVIDEND">rand(2) ? randRange(100, 999) : randRange(1000, 9999)</var>
<var id="QUOTIENT">floor(PRE_DIVIDEND / DIVISOR)</var>
<var id="REMAINDER">randRange(1, DIVISOR - 1)</var>
<var id="DIVIDEND">DIVISOR * QUOTIENT + REMAINDER</var>
</div>
<div class="problems">
<div>
Expand All @@ -24,7 +24,7 @@
<div class="solution" data-type="multiple">
<div>
<span class="sol short40" data-forms="integer"><var>QUOTIENT</var></span><code>\text{ R }</code>
<span class="sol short40" data-forms="integer" data-fallback="0"><var>FINAL_REMAINDER</var></span>
<span class="sol short40" data-forms="integer" data-fallback="0"><var>REMAINDER</var></span>
</div>
<div>Write your answer as a whole number and remainder.</div>
<p class="example">a quotient and remainder, like <code>5 \text{ R } 3</code></p>
Expand All @@ -35,10 +35,6 @@
<div class="graphie" data-each="DUMMY as dummy" data-update="numbers">
graph.divider.showHint();
</div>

<div class="graphie" data-update="numbers">
drawDigits( [ "\\text{R}" ].concat( integerToDigits( FINAL_REMAINDER ) ), DIVIDEND_DIGITS.length, 1 );
</div>
</div>
</div>
</body>
Expand Down

0 comments on commit 8c46b4e

Please sign in to comment.