DragginMath: Replication
Basic arithmetic is constructive by replication. For example:
a+b = a+(1+1+…+1) b times, or a times (1+1+…+1)+b.
a∗b = 0+(a+a+…+a) b times, or 0+(b+b+…+b) a times.
a↑b = 1*(a∗a∗…∗a) b times.
When an operand is a number, build replications by dragging the operand onto the operator. For example:
Enter 5+7. Drag 5 onto + to get 4+1+7. Drag 4 onto + to get 3+1+1+7.
Enter 5∗7. Drag 5 onto ∗ to get 4∗7+7. Drag 4 onto ∗ to get 3∗7+7+7.
Enter 5↑7. Drag 7 onto ↑ to get 5∗5↑6. Drag 6 onto ↑ to get 5∗5∗5↑5.
Continue replicating until your goal is met or you have exhausted the number. An underappreciated fact: some solutions depend on your ability to do this. And if you go far enough, you can expand many computations to a simple long string of 1+1+…+1s.
The direction of dragging creates expectations about structure of the result. For example, in 5+5, dragging the left operand onto + has a structurally different result from dragging the right operand onto + even though the operands are the same. Try some examples to get a feel for the issue: you will expect these replications to grow differently based on whether you dragged the left or right operand. Depending on what you are trying to accomplish with replication, some judicious commuting and associating will quickly get you what you want.