Andean Taptanita: Interactive Arithmetic & Probability Simulation

Andean Taptanita: Interactive Arithmetic & Probability Simulation
Loading the math board and drawing, please wait…
2026-10-08 22:30
This example demonstrates the "Taptanita", an Andean traditional counting tool similar to an abacus, used for teaching addition, subtraction, and basic arithmetic with natural numbers. Core math concepts include natural number operations, stochastic processes, and introductory probability. Construction highlights: Polygon command draws corn and bean arrangements; Sequence and Join generate sequenc

GeoGebra Commands & Parameters

  1. Join({Sequence[Rotate[(0, (-4.55 * s)), (k * pi / 5), CentroChoza(2)], k, 4, -4, -1], CentroKilla, {Rotate[(0, (-4.55 * s)), (4 * pi / 5), CentroChoza(2)]}}) → CentroPozo
  2. Sequence(Text[("CHOZA " * k), CentroChoza(k) + ajusteChoza], k, 1, 2) → textoChoza
  3. Sequence(Text[("POZO " * k), CentroPozo(k) + ajustePozo], k, 1, 9) → textoPozo
  4. Semicircle(CentroKilla(1) + ((1.52 * s), 0), CentroKilla(1) - ((1.52 * s), 0)) → killa
  5. Polygon(CentroChoza(2) - ((3.4, 3.4) * s), CentroChoza(2) + ((3.4, -3.4) * s), CentroChoza(1) + ((3.4, 1.6) * s), CentroChoza(1) - ((3.4, -1.6) * s)) → zona, f, g, h, i
  6. PointIn(zona) → C1M0a
  7. PointIn(zona) → C1M1a
  8. PointIn(zona) → C1M2a
  9. PointIn(zona) → C1M3a
  10. PointIn(zona) → C1M4a
  11. PointIn(zona) → C1M5a
  12. PointIn(zona) → C1M6a
  13. PointIn(zona) → C1M7a
  14. PointIn(zona) → C1M8a
  15. PointIn(zona) → C1M9a
  16. PointIn(zona) → C1P0a
  17. PointIn(zona) → C1P1a
  18. PointIn(zona) → C1P2a
  19. PointIn(zona) → C1P3a
  20. PointIn(zona) → C1P4a
  21. PointIn(zona) → C1P5a
  22. PointIn(zona) → C1P6a
  23. PointIn(zona) → C1P7a
  24. PointIn(zona) → C1P8a
  25. PointIn(zona) → C1P9a
  26. PointIn(zona) → C1H1a
  27. PointIn(zona) → C1H2a
  28. PointIn(zona) → C1H3a
  29. PointIn(zona) → C1H4a
  30. PointIn(zona) → C1H5a
  31. PointIn(zona) → C1H6a
  32. PointIn(zona) → C1H7a
  33. PointIn(zona) → C1H8a
  34. PointIn(zona) → C1H9a
  35. PointIn(zona) → C2M0a
  36. PointIn(zona) → C2M1a
  37. PointIn(zona) → C2M2a
  38. PointIn(zona) → C2M3a
  39. PointIn(zona) → C2M4a
  40. PointIn(zona) → C2M5a
  41. PointIn(zona) → C2M6a
  42. PointIn(zona) → C2M7a
  43. PointIn(zona) → C2M8a
  44. PointIn(zona) → C2M9a
  45. PointIn(zona) → C2P0a
  46. PointIn(zona) → C2P1a
  47. PointIn(zona) → C2P2a
  48. PointIn(zona) → C2P3a
  49. PointIn(zona) → C2P4a
  50. PointIn(zona) → C2P5a
  51. PointIn(zona) → C2P6a
  52. PointIn(zona) → C2P7a
  53. PointIn(zona) → C2P8a
  54. PointIn(zona) → C2P9a
  55. PointIn(zona) → C2H1a
  56. PointIn(zona) → C2H2a
  57. PointIn(zona) → C2H3a
  58. PointIn(zona) → C2H4a
  59. PointIn(zona) → C2H5a
  60. PointIn(zona) → C2H6a
  61. PointIn(zona) → C2H7a
  62. PointIn(zona) → C2H8a
  63. PointIn(zona) → C2H9a
  64. Corner(1, 1) → E1
  65. Random(1, 1000000) → activar
  66. Join({Sequence[{CentroPozo(k) - (anchoM, altoM) / 2, CentroPozo(k) + (anchoM, (-altoM)) / 2}, k, 1, 9], {posKillaM}}) → posPozosM
  67. Sequence(Rotate[CentroPozo(k) - ((0.2, 0.05) * s), ((-k) * pi / 5), CentroPozo(k)], k, 1, 9) → posPozosHa
  68. Sequence(Rotate[posPozosHa(k) + (anchoH, 0), (((-(k - 1)) * pi)) / 5, posPozosHa(k)], k, 1, 9) → posPozosHb
  69. Sequence(Circle[CentroPozo(k), (0.66 * s)], k, 1, 9) → pozo
  70. Sequence(posC1Maiz(k) + CentroChoza(2) - CentroChoza(1), k, 1, 10) → posC2Maiz
  71. Sequence(Rotate[CentroChoza(1) + (((-anchoP)) / 2, (0.5 * s)), ((-k) * pi / 5), CentroChoza(1)], k, 1, 10) → posC1Poroto
  72. Sequence(posC1Poroto(k) + CentroChoza(2) - CentroChoza(1), k, 1, 10) → posC2Poroto
  73. Sequence(Rotate[CentroChoza(1) + (((-anchoH)) / 2, (0.75 * s)), ((-k) * pi / 5), CentroChoza(1)], k, 1, 10) → posC1Haba
  74. Sequence(posC1Haba(k) + CentroChoza(2) - CentroChoza(1), k, 1, 10) → posC2Haba
  75. Join({Sequence[Rotate[CentroPozo(k) - ((-0.2, 0.05) * s), ((-k) * pi / 5), CentroPozo(k)], k, 1, 9], {posKillaP(1)}}) → posPozosPa
  76. Join({Sequence[Rotate[posPozosPa(k) - (anchoP, 0), (((-(k - 1)) * pi)) / 5, posPozosPa(k)], k, 1, 9], {posKillaP(2)}}) → posPozosPb
  77. Vector(CentroChoza(2) + (0.65 * (CentroPozo(9) - CentroChoza(2))) - (0.2, 0.15), CentroChoza(2) + (0.65 * (CentroPozo(9) - CentroChoza(2)))) → flechaSentidoHorario
  78. CircleArc(CentroChoza(2), CentroChoza(2) + (0.65 * (CentroPozo(9) - CentroChoza(2))), CentroChoza(2) + (0.65 * (CentroPozo(1) - CentroChoza(2)))) → sentido
  79. If(sumar9 ∨ restar9, contar9) → c
  80. If(contar, N1, sumar, N1 + N2, N1 - N2) → T
  81. If(contar19 ∧ aux ≟ 1, 0, floor(N1 / 100)) → c1
  82. If(contar19 ∧ aux ≟ 1, 10, contar19 ∧ aux ≟ 0, 0, floor((N1 - (c1 * 100)) / 10)) → d1
  83. If(contar19 ∧ aux ≟ 1, floor((N1 - 100) / 10), contar19 ∧ aux ≟ 0, 0, floor((N2 - (c2 * 100)) / 10)) → d2
  84. If(contar19 ∧ aux ≟ 0, 10, contar19 ∧ aux ≟ 1, 0, N1 - (100 * c1) - (10 * d1)) → u1
  85. If(contar19 ∧ aux ≟ 0, N1 - 10, contar19 ∧ aux ≟ 1, N1 - 100 - (10 * d2), N2 - (100 * c2) - (10 * d2)) → u2
  86. Mod(u1 + u2, 10) → u12
  87. Mod(d1 + d2, 10) → d12
  88. Vector(CentroChoza(2) + (0.65 * (CentroPozo(1) - CentroChoza(2))) + (0.2, -0.15), CentroChoza(2) + (0.65 * (CentroPozo(1) - CentroChoza(2)))) → flechaSentidoAntiHorario
  89. Textfield(N1) → CasillaDeEntrada1
  90. Textfield(N2) → CasillaDeEntrada2