randRange(2,7) randRange(2,7) randRange(2,7) LENGTH * WIDTH * HEIGHT getPrimeFactorization(VOL) _.map(FACTORIZATION, function(factor, step){ var remain = VOL; _.each(FACTORIZATION.slice(0, step), function(n) { remain /= n; }) return remain; })

The post office does not sell any boxes which have a side length longer than `10` centimeters. I bought a box from the post office that has a volume of `VOL` cubic centimeters.

What could be the dimensions of my box?

Length `=` cm
Width `\hphantom{ }=` cm
Height `=` cm
[$("input#response1").val(),$("input#response2").val(),$("input#response3").val()]
var lengthMessage = null, lengthEmpty = false; var LengthValidator = Khan.answerTypes.predicate.createValidatorFunctional(function(length, error) { if (length > 10) { return false; } var heightMessage = null, heightEmpty = false; var WidthValidator = Khan.answerTypes.predicate.createValidatorFunctional(function(width, error) { if (width > 10) { return false; } var HeightValidator = Khan.answerTypes.predicate.createValidatorFunctional(function(height, error) { if (height > 10) { return false; } return Math.abs(length * width * height - VOL) < Math.pow(2, -42); }, {forms: 'integer, proper, improper, mixed, decimal'}); var heightResult = HeightValidator(guess[2]); if (heightResult.empty) { heightEmpty = true; } if (heightResult.message !== null) { heightMessage = heightResult.message; } if (heightResult.correct) { heightEmpty = false; heightMessage = null; } return heightResult.correct; }, {forms: 'integer, proper, improper, mixed, decimal'}); var widthResult = WidthValidator(guess[1]); if (widthResult.empty || heightEmpty) { lengthEmpty = true; } if (widthResult.message !== null || heightMessage !== null) { lengthMessage = widthResult.message || heightMessage; } if (widthResult.correct) { lengthEmpty = false; lengthMessage = null; } return widthResult.correct; }, {forms: 'integer, proper, improper, mixed, decimal'}); var lengthResult = LengthValidator(guess[0]); // TODO(emily): In the future, when validator-functions can return empty and // message separately, make this actually work if (lengthResult.empty || lengthEmpty) { return ""; } else if (lengthResult.message !== null) { return lengthResult.message; } else if (lengthMessage !== null) { return lengthMessage; } return lengthResult.correct;
graph.cx = 0; graph.y = 0; graph.curr = VOL; init({ range: [[-1, FACTORIZATION.length + 1], [-2 * FACTORIZATION.length - 0.5, 1]], scale: [30, 30] }); label([graph.cx + 1, graph.y], graph.curr);

We can use a factor tree to break `VOL` into its prime factorization. Which of the prime numbers divides into `VOL`?

path([[graph.cx + 1, graph.y - 0.5], [graph.cx, graph.y - 1.5]]); path([[graph.cx + 1, graph.y - 0.5], [graph.cx + 2, graph.y - 1.5]]); graph.y -= 2; graph.cx += 1; graph.curr = graph.curr / FACTOR; label([graph.cx - 1, graph.y], FACTOR, { color: BLUE }); circle([graph.cx - 1, graph.y], 0.5); graph.lastLabel = label([graph.cx + 1, graph.y], graph.curr);

`REMAINING[I]` is divisible by `\blue{FACTOR}`, leaving us with `REMAINING[I] / FACTOR`.

circle([graph.cx + 1, graph.y], 0.5); graph.lastLabel.remove(); label([graph.cx + 1, graph.y], graph.curr, { color: BLUE });

`\blue{FACTORIZATION[FACTORIZATION.length - 1]}` is prime, so we're done factoring.

So the prime factors of `VOL` are:

`\qquadFACTORIZATION.join("\\space\\color{black}{\\times}\\space")`

So the dimensions of the package should be `FACTORIZATION[0]`, `FACTORIZATION[1]` and `FACTORIZATION[2]`.

We can find the dimensions of the package by arranging the factors into three groups of products, all less than `10`.

One solution would be: `(getPrimeFactorization(WIDTH).join("\\space\\color{black}{\\times}\\space"))`, `(getPrimeFactorization(LENGTH).join("\\space\\color{black}{\\times}\\space"))` and `(getPrimeFactorization(HEIGHT).join("\\space\\color{black}{\\times}\\space"))`

So the dimensions of the box could be `WIDTH`, `LENGTH` and `HEIGHT`.

randRange(2,12) randRange(2,12) randRange(2,12) randRange(1,L1-1) randRange(1,W1-1) randRange(1,H1-1) max(max(L1,W1),H1) BLUE [ [L1/MAX,W1/MAX,-H1/MAX], [-L1/MAX,W1/MAX,-H1/MAX], [-L1/MAX,-W1/MAX,-H1/MAX], [L1/MAX,-W1/MAX,-H1/MAX], [L1/MAX,W1/MAX,H1/MAX], [-L1/MAX,W1/MAX,H1/MAX], [-L1/MAX,-W1/MAX,H1/MAX], [L1/MAX,-W1/MAX,H1/MAX], [(-L1+2*L2)/MAX,-W1/MAX,-H1/MAX], [(2*L2-L1)/MAX,(2*W2-W1)/MAX,-H1/MAX], [-L1/MAX,(2*W2-W1)/MAX,-H1/MAX], [-L1/MAX,-W1/MAX,(2*H2-H1)/MAX], [(-L1+2*L2)/MAX,-W1/MAX,(2*H2-H1)/MAX], [(2*L2-L1)/MAX,(2*W2-W1)/MAX,(2*H2-H1)/MAX], [-L1/MAX,(2*W2-W1)/MAX,(2*H2-H1)/MAX] ] 4.0 [ { verts: [0, 3, 2, 1], color: COLOR }, { verts: [5, 6, 7, 4], color: COLOR }, { verts: [4,7,3,0], color: COLOR }, { verts: [5,1,2,6], color: COLOR }, { verts: [5, 4, 0, 1], color: COLOR }, { verts: [6, 2, 3, 7], color: COLOR } ] metricUnits[0]

A water tank is a rectangular prism that is `H1` plural_form(METERS, H1) high, `L1` plural_form(METERS, L1) long, and `W1` plural_form(METERS, W1) wide. A solid metal box which is `H2` plural_form(METERS, H2) high, `L2` plural_form(METERS, L2) long, and `W2` plural_form(METERS, W2) wide is sitting inside the tank. The tank is filled with water.

What is the volume of the water in the tank?

L1*W1*H1 - L2*W2*H2 cubic UNIT

init({range: [[-2, 2], [-2, 2]], scale: [100, 100]}); addMouseLayer(); // graphing the initial object graph.obj = make3dObject(VERTICES, { scale: SCALE }); _.each(FACES, function(face) { graph.obj.addFace(face); }); graph.obj.addSketch( {verts: [8,9,10,2]} ); graph.obj.addSketch( {verts: [11,12,13,14,11]} ); graph.obj.addSketch( {verts: [2,11]} ); graph.obj.addSketch( {verts: [8,12]} ); graph.obj.addSketch( {verts: [9,13]} ); graph.obj.addSketch( {verts: [10,14]} ); graph.obj.setPos([0, 0, 5]); graph.obj.rotate(1,0 , 0, PI/3); graph.obj.rotate(0, 1, 0, 0); graph.obj.rotate(0, 0, 1, PI/8); graph.obj.doDraw(); var mouseTarget = mouselayer.rect(0, 0, 400, 400).attr({ fill: "#000", opacity: 0.0 }); $(mouseTarget[0]).bind("vmousedown", function(event) { event.preventDefault(); graph.lastX = event.pageX; graph.lastY = event.pageY; $(document).bind("vmousemove vmouseup", function(event) { event.preventDefault(); var dx = (event.pageX - graph.lastX) / 200 * PI; var dy = (event.pageY - graph.lastY) / 200 * PI; graph.lastX = event.pageX; graph.lastY = event.pageY; var xAxis = normalize(graph.obj.perspective[1]); var yAxis = normalize(graph.obj.perspective[0]); graph.obj.rotate(xAxis[0], xAxis[1], xAxis[2], -dx / 2); graph.obj.rotate(yAxis[0], yAxis[1], yAxis[2], -dy / 2); graph.obj.doDraw(); if (event.type === "vmouseup") { $(document).unbind("vmousemove vmouseup"); } }) });

The tank has a volume of `H1 \times L1 \times W1 = H1 * L1 * W1` cubic plural_form(METERS, H1 * L1 * W1), and the metal box has a volume of `H2 \times L2 \times W2 = H2 * W2 * L2` cubic plural_form(METERS, H2 * L2 * W2).

Since there is no water in the box, the volume of the water in the tank is the volume of the tank minus the volume of the metal box.

The volume of the water in the tank is `H1 * L1 * W1 \text{UNIT}^3 - H2 * L2 * W2 \text{UNIT}^3 = H1 * L1 * W1 - H2 * L2 * W2\text{UNIT}^3`

randRange(2, 10, 6) _.reduce([L1, W1, H1, L2, W2, H2], function(a, b) { return max(a, b); }) _.map([L1, W1, H1, L2, W2, H2], function(n) { return n / MAX; }) L1 * W1 * H1 L2 * W2 * H2 "#D7ED3A" "#38C77F" "#78D0EF" [ [ 0, W1N, 0], [-L1N*2, W1N, 0], [-L1N*2, -W1N, 0], [ 0, -W1N, 0], [ 0, W1N, H1N * 2], [-L1N*2, W1N, H1N * 2], [-L1N*2, -W1N, H1N * 2], [ 0, -W1N, H1N * 2], [ 0, W2N, 0], [ L2N*2, W2N, 0], [ L2N*2, -W2N, 0], [ 0, -W2N, 0], [ 0, W2N, H2N * 2], [ L2N*2, W2N, H2N * 2], [ L2N*2, -W2N, H2N * 2], [ 0, -W2N, H2N * 2] ] 3.0 [ { verts: [0, 3, 2, 1], color: COLOR1 }, { verts: [5, 6, 7, 4], color: COLOR1 }, { verts: [4, 7, 3, 0], color: COLOR2 }, { verts: [5, 1, 2, 6], color: COLOR2 }, { verts: [5, 4, 0, 1], color: COLOR3 }, { verts: [6, 2, 3, 7], color: COLOR3 }, { verts: [9, 10, 11, 8], color: COLOR1 }, { verts: [12, 15, 14, 13], color: COLOR1 }, { verts: [8, 11, 15, 12], color: COLOR2 }, { verts: [14, 10, 9, 13], color: COLOR2 }, { verts: [9, 8, 12, 13], color: COLOR3 }, { verts: [15, 11, 10, 14], color: COLOR3 } ] metricUnits[0]

I made a fort for my pet gorilla by connecting two boxes. The first box is `L1` plural_form(METERS, L1) long, `W1` plural_form(METERS, W1) wide and `H1` plural_form(METERS, H1) high. The second box is `L2` plural_form(METERS, L2) long, `W2` plural_form(METERS, W2) wide and `H2` plural_form(METERS, H2) high.

How many cubic plural_form(METERS, 2) of space does my gorilla have to play in her fort?

VOL1 + VOL2 cubic UNIT

init({range: [[-2, 2], [-2, 2]], scale: [100, 100]}); addMouseLayer(); // graphing the initial object graph.obj = make3dObject(VERTICES, { scale: SCALE }); _.each(FACES, function(face) { graph.obj.addFace(face); }); graph.obj.addSketch( {verts: [0, 3, 2, 1] } ); graph.obj.addSketch( {verts: [5, 6, 7, 4] } ); graph.obj.addSketch( {verts: [4, 7, 3, 0] } ); graph.obj.addSketch( {verts: [5, 1, 2, 6] } ); graph.obj.addSketch( {verts: [5, 4, 0, 1] } ); graph.obj.addSketch( {verts: [6, 2, 3, 7] } ); graph.obj.addSketch( {verts: [8, 11, 10, 9] } ); graph.obj.addSketch( {verts: [13, 14, 15, 12] } ); graph.obj.addSketch( {verts: [12, 15, 11, 8] } ); graph.obj.addSketch( {verts: [13, 9, 10, 14] } ); graph.obj.addSketch( {verts: [13, 12, 8, 9] } ); graph.obj.addSketch( {verts: [14, 10, 11, 15] } ); graph.obj.setPos([0, 0, 5]); graph.obj.rotate(1,0 , 0, PI/3); graph.obj.rotate(0, 1, 0, 0); graph.obj.rotate(0, 0, 1, PI/8); graph.obj.doDraw(); var mouseTarget = mouselayer.rect(0, 0, 400, 400).attr({ fill: "#000", opacity: 0.0 }); $(mouseTarget[0]).bind("vmousedown", function(event) { event.preventDefault(); graph.lastX = event.pageX; graph.lastY = event.pageY; $(document).bind("vmousemove vmouseup", function(event) { event.preventDefault(); var dx = (event.pageX - graph.lastX) / 200 * PI; var dy = (event.pageY - graph.lastY) / 200 * PI; graph.lastX = event.pageX; graph.lastY = event.pageY; var xAxis = normalize(graph.obj.perspective[1]); var yAxis = normalize(graph.obj.perspective[0]); graph.obj.rotate(xAxis[0], xAxis[1], xAxis[2], -dx / 2); graph.obj.rotate(yAxis[0], yAxis[1], yAxis[2], -dy / 2); graph.obj.doDraw(); if (event.type === "vmouseup") { $(document).unbind("vmousemove vmouseup"); } }) });

The first box has a volume of `H1 \times L1 \times W1 = VOL1` cubic plural_form(METERS, VOL1). The second box has a volume of `H2 \times L2 \times W2 = VOL2` cubic plural_form(METERS, VOL2)

Since my gorilla can play in both boxes, we need to add the volumes of the two boxes.

The total amount of space my gorilla has to play is `VOL1 \text{UNIT}^3 + VOL2 \text{UNIT}^3 = VOL1 + VOL2\text{UNIT}^3`

10 CONVERSION * CONVERSION * CONVERSION rand(2) metricUnits[UNITS] [ [$._("dm"), new Plural(function(num) { return $.ngettext("decimeter", "decimeters", num); })], [$._("mm"), new Plural(function(num) { return $.ngettext("millimeter", "millimeters", num); })] ][UNITS] randRangeExclude(2, 11,[3,10]) CONVERSION CONVERSION CONVERSION CONVERSION LENGTH/MAX WIDTH/MAX HEIGHT/MAX "#D7ED3A" "#38C77F" "#78D0EF" "#F0B63A" HEIGHT * 2 [ [LENGTH/MAX, WIDTH/MAX, HEIGHT/MAX], [LENGTH/MAX, WIDTH/MAX, -HEIGHT/MAX], [LENGTH/MAX, -WIDTH/MAX, -HEIGHT/MAX], [LENGTH/MAX, -WIDTH/MAX, HEIGHT/MAX], [-LENGTH/MAX, WIDTH/MAX, HEIGHT/MAX], [-LENGTH/MAX, WIDTH/MAX, -HEIGHT/MAX], [-LENGTH/MAX, -WIDTH/MAX, -HEIGHT/MAX], [-LENGTH/MAX, -WIDTH/MAX, HEIGHT/MAX] ] 4.0 [ { verts: [3, 2, 1, 0], color: COLOR1, labels: [[[XBORD, 0, ZBORD], "1 \\text{" + FROM_TEXT + "} = " + CONVERSION + " \\text{" + TO_TEXT + "}"]] }, { verts: [4, 5, 6, 7], color: COLOR1, labels: [[[XBORD, 0, ZBORD], "1 \\text{" + FROM_TEXT + "} = " + CONVERSION + " \\text{" + TO_TEXT + "}"]], }, { verts: [0, 1, 5, 4], color: COLOR3, labels: [[[0, YBORD, ZBORD], "1 \\text{" + FROM_TEXT + "} = " + CONVERSION + " \\text{" + TO_TEXT + "}"]] }, { verts: [2, 3, 7, 6], color: COLOR3, labels: [[[0, YBORD, ZBORD], "1 \\text{" + FROM_TEXT + "} = " + CONVERSION + " \\text{" + TO_TEXT + "}"]] }, { verts: [1, 2, 6, 5], color: COLOR2, labels: [[[XBORD, YBORD, 0], "1 \\text{" + FROM_TEXT + "} = " + CONVERSION + " \\text{" + TO_TEXT + "}"]] }, { verts: [3, 0, 4, 7], color: COLOR2, labels: [[[XBORD, YBORD, 0], "1 \\text{" + FROM_TEXT + "} = " + CONVERSION + " \\text{" + TO_TEXT + "}"]] } ]

How many cubic plural_form(TO) fit in `VOL` cubic plural_form(FROM, VOL)?

VOL * CONVERSION_CUBED cubic plural_form(TO)

First we will figure out how many cubic plural_form(TO) fit in one cubic FROM.

There are `CONVERSION` plural_form(TO, CONVERSION) in every FROM.

So a cubic FROM is the same as a `CONVERSION \text{ TO_TEXT} \times CONVERSION \text{ TO_TEXT} \timesCONVERSION \text{ TO_TEXT}` cube.

init({range: [[-2, 2], [-2, 2]], scale: [100, 100]}); addMouseLayer(); //Adding verticies for the slabs for (var i = 1; i < HEIGHT;i++ ){ VERTICES.push( [LENGTH/MAX,WIDTH/MAX,(-HEIGHT+2*i)/MAX]); VERTICES.push([-LENGTH/MAX,WIDTH/MAX,(-HEIGHT+2*i)/MAX]); VERTICES.push([-LENGTH/MAX,-WIDTH/MAX,(-HEIGHT+2*i)/MAX]); VERTICES.push([LENGTH/MAX,-WIDTH/MAX,(-HEIGHT+2*i)/MAX]); }; //Adding verticies for the cubes in one slab for (var i = 1; i < LENGTH; i++ ){ VERTICES.push( [(-LENGTH+2*i)/MAX,-WIDTH/MAX,(-HEIGHT)/MAX]); }; for (var i = 1; i < LENGTH; i++ ){ VERTICES.push( [(-LENGTH+2*i)/MAX,WIDTH/MAX,(-HEIGHT)/MAX]); }; for (var i = 1; i < WIDTH; i++ ){ VERTICES.push( [(-LENGTH)/MAX,(-WIDTH+2*i)/MAX,(-HEIGHT)/MAX]); }; for (var i = 1; i < WIDTH; i++ ){ VERTICES.push( [(LENGTH)/MAX,(-WIDTH+2*i)/MAX,(-HEIGHT)/MAX]); }; for (var i = 1; i < LENGTH; i++ ){ VERTICES.push( [(-LENGTH+2*i)/MAX,-WIDTH/MAX,(-HEIGHT+2)/MAX]); }; for (var i = 1; i < LENGTH; i++ ){ VERTICES.push( [(-LENGTH+2*i)/MAX,WIDTH/MAX,(-HEIGHT+2)/MAX]); }; for (var i = 1; i < WIDTH; i++ ){ VERTICES.push( [(-LENGTH)/MAX,(-WIDTH+2*i)/MAX,(-HEIGHT+2)/MAX]); }; for (var i = 1; i < WIDTH; i++ ){ VERTICES.push( [(LENGTH)/MAX,(-WIDTH+2*i)/MAX,(-HEIGHT+2)/MAX]); }; // graphing the initial object graph.obj = make3dObject(VERTICES, { scale: SCALE }); _.each(FACES, function(face) { graph.obj.addFace(face); }); graph.obj.setPos([0, 0, 5]); graph.obj.rotate(1,0 , 0, PI/3); graph.obj.rotate(0, 1, 0, 0); graph.obj.rotate(0, 0, 1, PI/8); graph.obj.doDraw(); var mouseTarget = mouselayer.rect(0, 0, 400, 400).attr({ fill: "#000", opacity: 0.0 }); $(mouseTarget[0]).bind("vmousedown", function(event) { graph.lastX = event.pageX; graph.lastY = event.pageY; $(document).bind("vmousemove vmouseup", function(event) { event.preventDefault(); var dx = (event.pageX - graph.lastX) / 200 * PI; var dy = (event.pageY - graph.lastY) / 200 * PI; graph.lastX = event.pageX; graph.lastY = event.pageY; var xAxis = normalize(graph.obj.perspective[1]); var yAxis = normalize(graph.obj.perspective[0]); graph.obj.rotate(xAxis[0], xAxis[1], xAxis[2], -dx / 2); graph.obj.rotate(yAxis[0], yAxis[1], yAxis[2], -dy / 2); graph.obj.doDraw(); if (event.type === "vmouseup") { $(document).unbind("vmousemove vmouseup"); } }) });

There are `CONVERSION \times CONVERSION \times CONVERSION = CONVERSION_CUBED \text{ TO_TEXT}^3` in each cubic FROM, by the volume formula.

Since we have `VOL` cubic plural_form(FROM, VOL), and each cubic FROM holds `CONVERSION_CUBED` cubic plural_form(TO, CONVERSION_CUBED), we have a total of `VOL \times CONVERSION_CUBED` cubic plural_form(TO, VOL * CONVERSION_CUBED).

So `VOL * CONVERSION_CUBED` cubic plural_form(TO, VOL * CONVERSION_CUBED) fit in `VOL` cubic plural_form(FROM, VOL).