diff options
Diffstat (limited to 'modeling/prod_multi.py')
-rw-r--r-- | modeling/prod_multi.py | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/modeling/prod_multi.py b/modeling/prod_multi.py new file mode 100644 index 0000000..667241e --- /dev/null +++ b/modeling/prod_multi.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 + + +def multiplication(Model): + prods = [] + + # TODO: switch operands so less steps are needed + # switch_mul = Model.productionstring( + # name="switch_mul", + # string=""" + # =g> + # =imaginal> + # ==> + # =imaginal> + # """, + # ) + # prods.append(switch_mul) + + start_mul = Model.productionstring( + name="start_mul", + string=""" + =g> + isa math_goal + op mul + task calc + =imaginal> + isa math_op + op mul + arg1 ~0 + arg1 ~1 + arg2 ~0 + arg1 ~1 + arg1 =mul + arg2 =arg + ones2 =ones + tens2 =tens + hundreds2 =huns + ==> + !g> + show terminal + +g> + isa math_goal + op add + task calc + +imaginal> + isa math_op + op add + arg1 =arg + ones1 =ones + tens1 =tens + hundreds1 =huns + arg2 =arg + ones2 =ones + tens2 =tens + hundreds2 =huns + +retrieval> + isa math_op + op add + arg1 =arg + arg2 =arg + """, + ) + prods.append(start_mul) + + + step_mul = Model.productionstring( + name="step_mul", + string=""" + =g> + isa math_goal + op mul + task calc + =imaginal> + isa math_op + op mul + arg2 =arg + =retrieval> + isa math_op + op add + arg1 =arg + arg2 =arg + result =sum + ==> + =g> + isa math_goal + op mul + one_ans =sum + """, + ) + prods.append(step_mul) + + return prods |