Writing Numbers Given Digits and Place Values

Writing Numbers Given Digits and Place Values
Loading the math board and drawing, please wait…
2023-08-05 01:45
This example demonstrates how to write numbers based on given digits and their place values. The core math concepts involved include place value, decimal numbers, and exponent notation. Key GeoGebra commands and objects used in the construction are Sequence, Zip, Min, Take, Element, If, centerBox, Textfield, Corner, PointToPixels, onboardingTextOffset, IndexOf, Text, expandQuad, RemoveUndefined, Remove; and objects like spaceRowV, spaceDecimal, row1Start, spaceEnd, row2Location, row3Location, row3Start, numCorrectChecked, numWholeDigits, numDecimalDigits, showsolution, animateControl, numDigits, animateRows, startHomeAnchors, startEnd, countQuestion, allRandomSeeds, numRandoms, randIndex, currentRandomSeeds, shift, shuffleIndex, possibleDigits, indexDigitList, indexDigit7, indexDigit4, indexDigit6, indexDigit5, indexDigit3, indexDigit2, indexDigit1, digit1, digit2, digit3, digit4, digit5, digit6, digit7, indexDigit8. It is suitable for 4th-5th grade students learning to read and write numbers, especially when using decimal fractions or exponents for expanded form representation.

GeoGebra Commands & Parameters

  1. Sequence((0, (-spaceRowV)) + row1Start + (k * (spaceEnd, 0)), k, 0, 18) → row2Location
  2. Zip(A + (0, (-spaceRowV)), A, row2Location) → row3Location
  3. Min(4, ceil(numCorrectChecked / 2) + 1) → numWholeDigits
  4. Min(floor(numCorrectChecked / 2) + 2, 3) → numDecimalDigits
  5. Min(floor(animateControl), (2 * numDigits) + 1) → animateRows
  6. Sequence(Random[0, 99] / 100, A, 1, 200) → allRandomSeeds, {0.13, 0.25, 0.41, 0.7, 0.68, 0.32, 0.05, 0.02, 0.38, 0.49, 0.13, 0.34, 0.64, 0.62, 0.7, 0.31, 0.01, 0.88, 0.9, 0.65, 0.96, 0.12, 0.36, 0.09, 0.91, 0.03, 0.47, 0.22, 0.11, 0.24, 0.01, 0.16, 0.69, 0.99, 0, 0.45, 0.64, 0.27, 0.62, 0.25, 0.08, 0.45, 0.7, 0.36, 0.43, 0.17, 0.11, 0.99, 0.78, 0.35, 0.04, 0.81, 0.85, 0.26, 0.93, 0.89, 0.96, 0.77, 0.97, 0.89, 0.22, 0.35, 0.41, 0.81, 0.97, 0.81, 0.42, 0.5, 0.18, 0.67, 0.47, 0.35, 0.75, 0.07, 0.27, 0.73, 0.46, 0.93, 0.38, 0.15, 0.38, 0.16, 0.46, 0.88, 0.22, 0.92, 0.49, 0.73, 0.74, 0.91, 0.01, 0.44, 0.86, 0.1, 0.45, 0.88, 0.09, 0.39, 0.87, 0.28, 0.23, 0.55, 0.31, 0.22, 0.31, 0.9, 0.11, 0.56, 0.53, 0.52, 0, 0.37, 0.2, 0.16, 0.78, 0.22, 0.44, 0.84, 0.04, 0.05, 0.02, 0.28, 0.95, 0.8, 0.17, 0.88, 0.97, 0.35, 0.21, 0.69, 0.66, 0.56, 0.51, 0.68, 0.95, 0.83, 0.49, 0.78, 0.99, 0.98, 0.92, 0.44, 0.83, 0.99, 0.6, 0.14, 0.94, 0.6, 0.95, 0.2, 0.94, 0.97, 0.7, 0.76, 0.19, 0.29, 0.77, 0.71, 0.01, 0.68, 0.74, 0.84, 0.4, 0.09, 0.22, 0.38, 0.36, 0.99, 0.36, 0.75, 0.59, 0.66, 0.47, 0.62, 0.65, 0.4, 0.67, 0.87, 0.67, 0.38, 0.55, 0.89, 0.28, 0.01, 0.82, 0.2, 0.8, 0.42, 0, 0.65, 0.89, 0.86, 0.36, 0.67, 0.13, 0.56, 0.64, 0.49, 0.79, 0.81}
  7. Take(allRandomSeeds, randIndex, randIndex + numRandoms - 1) → currentRandomSeeds
  8. Sequence(((2 + floor((currentRandomSeeds(A) * 3))) / 10 * (-1)^(A)), A, 1, 7) → shift, {-0.4, 0.2, -0.3, 0.2, -0.4, 0.2, -0.3}
  9. Zip(1 + floor((currentRandomSeeds(K) * (Length[possibleDigits] - K + 1 - If[K ≟ 1 ∨ K ≟ numWholeDigits + numDecimalDigits, 1, 0]))), K, Sequence[9]) → indexDigitList
  10. Element(possibleDigits, indexDigit1) → digit1
  11. Element(Remove[possibleDigits, {digit1}], indexDigit2) → digit2
  12. Element(Remove[possibleDigits, {digit1, digit2}], indexDigit3) → digit3
  13. Element(Remove[possibleDigits, {digit1, digit2, digit3}], indexDigit4) → digit4
  14. Element(Remove[possibleDigits, {digit1, digit2, digit3, digit4}], indexDigit5) → digit5
  15. Element(Remove[possibleDigits, {digit1, digit2, digit3, digit4, digit5}], indexDigit6) → digit6
  16. Element(Remove[possibleDigits, {digit1, digit2, digit3, digit4, digit5, digit6}], indexDigit7) → digit7
  17. Element(Remove[possibleDigits, {digit1, digit2, digit3, digit4, digit5, digit6, digit7}], indexDigit8) → digit8
  18. Element(Remove[possibleDigits, {digit1, digit2, digit3, digit4, digit5, digit6, digit7, digit8}], indexDigit9) → digit9
  19. Element(Element[{{}, shuffleOptions2, shuffleOptions3, shuffleOptions4, shuffleOptions5, shuffleOptions6, shuffleOptions7}, numWholeDigits + numDecimalDigits], shuffleIndex) → shuffleChoice
  20. Zip(currentDigits(K), K, shuffleChoice) → shuffledDigits
  21. Zip((("\text{" * K) * "}"), K, shuffledDigits) → boxText
  22. If(countQuestion ≤ 1, startHomeAnchors, Zip[A + (0, B), A, Sequence[startEnd + (K * (spaceEnd, 0)), K, 0, 10], B, shift]) → allHomeAnchors
  23. If(¬showsolution, 0, If[animateRows + 1 > numDigits ∨ animateControl < 0.01, 0, Min[numDigits, animateRows + 1]]) → animateTopRowIndex
  24. Sequence(row1Start + (k * (spaceEnd, 0)), k, 0, 18) → row1Location
  25. Take(allUnitNum, 5 - numWholeDigits, 4 + numDecimalDigits) → currentUnitNum
  26. Zip(currentUnitNum(K), K, shuffleChoice) → currentUnitsNumShuffled
  27. Zip((K * L), K, shuffledDigits, L, currentUnitsNumShuffled) → row1Nums
  28. Min(floor(animateControl + 0.5), (2 * numDigits) + 1) → animateTopRow
  29. Take(allUnitList, 5 - numWholeDigits, 4 + numDecimalDigits) → currentUnitText
  30. Zip(currentUnitText(K), K, shuffleChoice) → currentUnitsShuffled
  31. Sequence(startBoxes + (If[k ≥ numWholeDigits, spaceDecimal, 0], 0) + (k * (spaceBoxes, 0)), k, 0, 10) → boxAnchors
  32. Sequence(allHomeAnchors(K) + ((1 / 17 * spaceEnd), 0), K, 1, numDecimalDigits + numWholeDigits) → allHomeLabelLoc
  33. Element(allHomeAnchors, numDigits) → onboardingPoint
  34. Zip(IndexOf[K, shuffleChoice], K, Sequence[1, numDigits]) → correctOrder
  35. centerBox(boxWidth, boxHeight, boxAnchors(7)) → frame7
  36. centerBox(boxWidth, boxHeight, boxAnchors(6)) → frame6
  37. centerBox(boxWidth, boxHeight, boxAnchors(5)) → frame5
  38. centerBox(boxWidth, boxHeight, boxAnchors(4)) → frame4
  39. centerBox(boxWidth, boxHeight, boxAnchors(3)) → frame3
  40. centerBox(boxWidth, boxHeight, boxAnchors(2)) → frame2
  41. centerBox(boxWidth, boxHeight, boxAnchors(1)) → frame1
  42. Zip(currentStudentDigitsHint(IndexOf[k, shuffleChoice]), k, Sequence[j, j, 1, numDigits]) → currentStudentDigitsRearranged
  43. Sequence(currentLocations(k), k, 1, Length[currentLocations]) → inputCurrent, {-1, -1, -1}
  44. Textfield(input1) → InputBox1
  45. Textfield(input2) → InputBox2
  46. Corner(5) → layoutAppSize
  47. PointToPixels(Corner[onboardingDisplayText, 2], Corner[1], Corner[3], Corner[5]) → layoutOnboarding
  48. onboardingTextOffset(Corner[onboardingText, 1], Corner[onboardingText, 3], onboardingCase, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffset
  49. Sequence(k, k, 1, 10) → homeIndices
  50. Zip(allHomeAnchors(J), J, homeIndices) → homeLocations
  51. Take({P1, P2, P3, P4, P5, P6, P7, P8}, 1, numDragBoxes) → movingPoints
  52. Sequence((("SetFixed(box" * K) * ",false,enableInput)"), K, 1, Length[movingPoints]) → cmdFixBoxes
  53. centerBox(boxWidth, boxHeight, P1) → box1
  54. centerBox(boxWidth, boxHeight, P2) → box2
  55. centerBox(boxWidth, boxHeight, P3) → box3
  56. centerBox(boxWidth, boxHeight, P4) → box4
  57. centerBox(boxWidth, boxHeight, P5) → box5
  58. centerBox(boxWidth, boxHeight, P6) → box6
  59. Element(movingPoints, movingIndex) → PMove
  60. Take({frame1, frame2, frame3, frame4, frame5, frame6, frame7}, 1, numDigits) → frameList
  61. IndexOf(true, Zip[IsInRegion[PMove, K], K, frameList]) → locationPMove
  62. centerBox(boxWidth, boxHeight, PMove) → highlightBox
  63. centerBox(boxWidth, boxHeight, boxAnchors(locationPMove)) → highlightFrame
  64. Zip(Text[("" * K), J, true, true, 0, 0], K, boxText, J, movingPoints) → boxTextDisplay
  65. Text(("" * boxText(movingIndex)), If[Defined[PMove], PMove, (300, 300)], false, true, 0, 0) → textHightlight
  66. Sequence(HOME, k, 1, numDragBoxes) → allHome
  67. centerBox(boxWidth, boxHeight, P7) → box7
  68. centerBox(boxWidth, boxHeight, P8) → box8
  69. centerBox(boxWidth, boxHeight, boxAnchors(8)) → frame8
  70. Sequence((((("SetValue(P" * K) * ",homeLocations(") * K) * "))"), K, 1, numDragBoxes) → cmdSendHome
  71. Zip(centerBox[boxWidth, boxHeight, K], K, Take[allHomeAnchors, 1, numDragBoxes]) → homeBoxes
  72. Text("\text{.}", decLocation - (0, boxHeight / 11), true, true, 0, 0) → textDecimal
  73. Sequence(row1Start + (spaceRowH / 2, 0) + (k * (spaceRowH, 0)), k, 0, 18) → row1PlusLoc
  74. Zip((K * L), K, currentDigits, L, currentUnitNum) → row2Nums
  75. Take(Zip[Text[L, J, true, true, 1, 0], L, row2Nums, J, row2Location], 1, Max[1, animateRows - numDigits - 1]) → row2Labels
  76. If(animateControl > (numDigits * 2) + 1, animateControl - animateRows, 0) → animateFinalNum
  77. Sequence(If[k ≥ numWholeDigits, ((0.38 * spaceDecimal), 0), (0, 0)] + (k * (spaceDecimal, 0)) + row3Start, k, 0, numDecimalDigits + numWholeDigits) → finalPoints
  78. Zip(Vector[(animateFinalNum * Vector[K, J])], K, row3Location, J, finalPoints) → finalVectors
  79. Zip(If[IndexOf[K, currentDigits] ≟ numWholeDigits, (("" * K) * "."), (("" * K) * "")], K, currentDigits) → currentDigitRearrangedText
  80. Zip((((("\text{\textbf{" * K) * "} \times ") * J) * "}"), K, shuffledDigits, J, currentUnitsShuffled) → solutionList
  81. Sequence(SolutionStart + (K * (spaceEnd, 0)), K, 0, 120) → solutionPoints
  82. Zip(Text[K, J, true, true, 1, 0], K, solutionList, J, solutionPoints) → solutionText
  83. If(animateControl < numDigits, 0, Min[animateControl - animateRows, 1]) → animateMovingNums
  84. Zip(row1Location(IndexOf[K, shuffleChoice]), K, Sequence[1, numDigits]) → moveRow1Location
  85. Zip(Vector[K, J], K, moveRow1Location, J, row2Location) → moveVectors
  86. If(animateRows ≥ numDigits, animateRows - numDigits, 0) → indexRow2
  87. Take(Zip[Text[L, J, true, true, 1, 0], L, row1Nums, J, row1Location], 1, Min[numDigits, animateTopRow]) → row1Labels1
  88. expandQuad(Vertex[box1, 1], Vertex[box1, 2], Vertex[box1, 3], Vertex[box1, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox1
  89. expandQuad(Vertex[box2, 1], Vertex[box2, 2], Vertex[box2, 3], Vertex[box2, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox2
  90. expandQuad(Vertex[box3, 1], Vertex[box3, 2], Vertex[box3, 3], Vertex[box3, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox3
  91. expandQuad(Vertex[box4, 1], Vertex[box4, 2], Vertex[box4, 3], Vertex[box4, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox4
  92. expandQuad(Vertex[box5, 1], Vertex[box5, 2], Vertex[box5, 3], Vertex[box5, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox5
  93. expandQuad(Vertex[box6, 1], Vertex[box6, 2], Vertex[box6, 3], Vertex[box6, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox6
  94. expandQuad(Vertex[box7, 1], Vertex[box7, 2], Vertex[box7, 3], Vertex[box7, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox7
  95. expandQuad(Vertex[box8, 1], Vertex[box8, 2], Vertex[box8, 3], Vertex[box8, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingBox8
  96. Zip(Translate[K, Vector[J]], K, row3Location, Vector[J], finalVectors) → finalMovingPoints
  97. Zip(Text["\text{+}", J, true, true, 1, 0], J, Take[row2PlusLoc, 1, Length[row2Labels] - 1]) → row2Plus
  98. If(Defined[movePointLocation], Text[moveText, movePointLocation, true, true, 1, 0], Text[moveText, (0, 0), true, true, 0, 0]) → movingText
  99. Zip(currentDigits(IndexOf[K, shuffleChoice]), K, Sequence[1, numDigits]) → currentStudentDigits
  100. Zip(If[correctOrder(k) ≟ currentLocations(k), k], k, Sequence[numDigits]) → hintCorrectIndex
  101. RemoveUndefined(Zip[If[IndexOf[k, currentLocations] ≟ IndexOf[k, shuffleChoice], k], k, Sequence[numDigits]]) → indexCorrectBoxLocation
  102. Remove(Sequence[numDigits], indexCorrectBoxLocationChecked) → indexIncorrectBoxLocation
  103. Zip(allFrames(k), k, indexIncorrectBoxLocation) → boxesIncorrect
  104. Zip(allFrames(k), k, indexCorrectBoxLocationChecked) → boxesCorrect
  105. Zip(inputCurrent(k) ≠ inputSaved(k), k, Sequence[numDigits]) → indexChanged
  106. Zip((((("" * K) * "\times") * L) * ""), K, shuffledDigits, L, currentUnitsShuffled) → row1Text
  107. Take(Zip[Text[L, J, true, true, 1, 0], L, row1Text, J, row1Location], animateTopRow + 1, Min[numDigits, animateRows + 1]) → row1Labels2
  108. Zip(Text[("" * K), J, true, true, 0, 0], K, Take[boxText, animateTopRowIndex, animateTopRowIndex], J, Take[allHomeAnchors, animateTopRowIndex, animateTopRowIndex]) → boxTextHomeHighlight
  109. Zip(Text[("" * K), J, true, true, 0, 0], K, Join[{Take[boxText, 1, animateTopRowIndex - 1], Take[boxText, animateTopRowIndex + 1, numDigits]}], J, Join[{Take[allHomeAnchors, 1, animateTopRowIndex - 1], Take[allHomeAnchors, animateTopRowIndex + 1, numDigits]}]) → boxTextHome
  110. Zip(Text[("\times\hspace{7px}" * K), J, true, true, 1, 0], K, Join[{Take[currentUnitsShuffled, 1, animateTopRowIndex - 1], Take[currentUnitsShuffled, animateTopRowIndex + 1, numDigits]}], J, Join[{Take[allHomeLabelLoc, 1, animateTopRowIndex - 1], Take[allHomeLabelLoc, animateTopRowIndex + 1, numDigits]}]) → unitLabels
  111. Zip(Text[("\times\hspace{7px}" * K), J, true, true, 1, 0], K, Take[currentUnitsShuffled, animateTopRowIndex, animateTopRowIndex], J, Take[allHomeLabelLoc, animateTopRowIndex, animateTopRowIndex]) → unitLabelsHighlight
  112. Zip(Text[K, J, true, true, 1, 0], K, currentDigitRearrangedText, J, Take[finalMovingPoints, 1, numDigits]) → row3Labels

AI Drawing Prompt Reference

Draw an interactive educational diagram for practicing writing numbers by place value. Show several rows of draggable digit cards, each labeled with a digit, grouped into whole-number and decimal parts. Place input boxes above for answers. Randomly shuffle card positions with slight vertical offsets. Display place-value labels (ones, tens, tenths, etc.) near the cards, along with hint text and animation controls. Keep the layout clear and suitable for elementary students.
The prompt above was compiled from the original drawing commands and is for reference only.