This repository has been archived by the owner on May 11, 2021. It is now read-only.
/
units.html
141 lines (133 loc) · 6.21 KB
/
units.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<!DOCTYPE html>
<html data-require="math math-format">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Units</title>
<script src="../khan-exercise.js"></script>
</head>
<body>
<div class="exercise">
<div class="problems">
<div id="metric">
<div class="vars">
<var id="PREFIXES">[
{ str: "milli", math: "\\dfrac{1}{1000}", inverse: "1000" },
{ str: "centi", math: "\\dfrac{1}{100}", inverse: "100" },
{ str: "deci", math: "\\dfrac{1}{10}", inverse: "10" },
{ str: "", math: "1" },
{ str: "deca", math: "10", inverse: "\\dfrac{1}{10}" },
{ str: "hecto", math: "100", inverse: "\\dfrac{1}{100}" },
{ str: "kilo", math: "1000", inverse: "\\dfrac{1}{1000}" } ]</var>
<var id="UNIT">shuffle( [ "meter", "liter", "gram", "watt" ] ).shift()</var>
<var id="QUANTITY">randRange( 100, 999 )</var>
<var id="START_POWER">randRangeNonZero( -3, 3 )</var>
<var id="START_PREFIX">PREFIXES[ START_POWER + 3 ]</var>
<var id="START_UNIT">START_PREFIX.str + UNIT</var>
<var id="END_POWER">randRangeExclude( -3, 3, [ 0, START_POWER ] )</var>
<var id="END_PREFIX">PREFIXES[ END_POWER + 3 ]</var>
<var id="END_UNIT">END_PREFIX.str + UNIT</var>
<var id="SOLUTION">roundTo( 6, QUANTITY * pow( 10, START_POWER - END_POWER ) )</var>
</div>
<div class="question">How many <var>END_UNIT</var>s are in <var>QUANTITY + " " + START_UNIT</var>s?</div>
<div class="solution"><var>SOLUTION</var></div>
<div class="hints">
<div>
<p>The following table shows a few prefixes and their meanings.</p>
<table>
<tr><th>Prefix</th><th>Meaning</th></tr>
<tr data-each="PREFIXES as prefix">
<td><var>prefix.str</var></td><td><code><var>prefix.math</var></code></td>
</tr>
</table>
</div>
<p>Looking at the table, we see that 1 <var>START_UNIT</var> corresponds to <code><var>START_PREFIX.math</var></code> <var>UNIT</var>s.</p>
<p>We can also see that, 1 <var>END_UNIT</var> corresponds to <code><var>END_PREFIX.math</var></code> <var>UNIT</var>s.</p>
<p><code><var>QUANTITY</var> \text{ <var>START_UNIT</var>s } \cdot <var>START_PREFIX.math</var> \dfrac{ \text{ <var>UNIT</var> } }{ \text{ <var>START_UNIT</var> } }
\cdot <var>END_PREFIX.inverse</var> \dfrac{ \text{<var>END_UNIT</var>} }{ \text{ <var>UNIT</var> } }</code></p>
<p><code>= <var>QUANTITY</var> \cdot 10^{<var>START_POWER - END_POWER</var>} \text{ <var>END_UNIT</var>s }</code></p>
<p><code>= <var>commafy( SOLUTION )</var> \text{ <var>END_UNIT</var>s}</code></p>
</div>
</div>
<div id="english">
<div class="vars">
<var id="D_UNITS">[
{ str: "mile", plural: "miles", multiplier: 63360 },
{ str: "foot", plural: "feet", multiplier: 12 },
{ str: "inch", plural: "inches", multiplier: 1 } ]</var>
<var id="T_UNITS">[
{ str: "hour", plural: "hours", multiplier: 3600 },
{ str: "minute", plural: "minutes", multiplier: 60 },
{ str: "second", plural: "seconds", multiplier: 1 }
]</var>
<var id="D_INDICES">shuffle( [0, 1, 2] )</var>
<var id="START_D_INDEX">D_INDICES.shift()</var>
<var id="END_D_INDEX">D_INDICES.shift()</var>
<var id="T_INDICES">shuffle( [0, 1, 2] )</var>
<var id="START_T_INDEX">T_INDICES.shift()</var>
<var id="END_T_INDEX">T_INDICES.shift()</var>
<var id="D_HINT">
(function() {
var hint = "";
var units = "";
var increment = (END_D_INDEX - START_D_INDEX) > 0 ? 1 : -1;
for ( var i = START_D_INDEX; i !== END_D_INDEX; i += increment ) {
var factor = fractionReduce( D_UNITS[i].multiplier, D_UNITS[i + increment].multiplier );
if ( !factor.match( "dfrac" ) ) {
factor = "\\dfrac{" + factor + "}{1}";
units = factor + "\\dfrac{\\text{" + D_UNITS[i + increment].plural + "}}{\\text{" + D_UNITS[i].str + "}}";
}
else {
units = factor + "\\dfrac{\\text{" + D_UNITS[i + increment].str + "}}{\\text{" + D_UNITS[i].plural + "}}";
}
hint += "\\cdot" + units;
}
return hint;
})()
</var>
<var id="T_HINT">
(function() {
var hint = "";
var units = "";
var increment = (END_T_INDEX - START_T_INDEX) > 0 ? 1 : -1;
for ( var i = START_T_INDEX; i !== END_T_INDEX; i += increment ) {
var factor = fractionReduce( T_UNITS[i + increment].multiplier, T_UNITS[i].multiplier );
if ( !factor.match( "dfrac" ) ) {
factor = "\\dfrac{" + factor + "}{1}";
units = factor + "\\dfrac{\\text{" + T_UNITS[i].plural + "}}{\\text{" + T_UNITS[i + increment].str + "}}";
}
else {
units = factor + "\\dfrac{\\text{" + T_UNITS[i].str + "}}{\\text{" + T_UNITS[i + increment].plural + "}}";
}
hint += "\\cdot" + units;
}
return hint;
})()
</var>
<var id="SCALE">(D_UNITS[START_D_INDEX].multiplier / D_UNITS[END_D_INDEX].multiplier) * (T_UNITS[END_T_INDEX].multiplier / T_UNITS[START_T_INDEX].multiplier)</var>
<var id="START_SPEED">
(function() {
var speed = randRange( 20, 50 );
if ( SCALE > 1000 ){
speed = speed / 1000;
} else if ( SCALE < 0.001 ) {
speed = speed * 1000 * 1000;
}
while ( ( speed * SCALE > 10) && ( speed > 100 ) ) {
speed = Math.round( speed / 10 );
}
return speed;
})()
</var>
<var id="SOLUTION">roundTo( 3, SCALE * START_SPEED ).toFixed( 3 )</var>
</div>
<div class="question">An alien rocketship is traveling at a speed of <code><var>commafy( START_SPEED )</var></code> <var>D_UNITS[START_D_INDEX].plural</var> per <var>T_UNITS[START_T_INDEX].str</var>. At this speed, how many <var>D_UNITS[END_D_INDEX].plural</var> will it travel in 1 <var>T_UNITS[END_T_INDEX].str</var>? Round to the nearest thousandth.</div>
<div class="solution" data-type="decimal"><var>SOLUTION</var></div>
<div class="hints">
<p><code><var>commafy( START_SPEED )</var> \dfrac{\text{<var>D_UNITS[START_D_INDEX].plural</var>}}{\text{<var>T_UNITS[START_T_INDEX].str</var>}} <var>D_HINT + " " + T_HINT</var></code></p>
<p><code>= <var>commafy( SOLUTION )</var> \dfrac{\text{<var>D_UNITS[END_D_INDEX].plural</var>}}{\text{<var>T_UNITS[END_T_INDEX].str</var>}}</code></p>
</div>
</div>
</div>
</div>
</body>
</html>