summaryrefslogtreecommitdiff
path: root/modeling/prod_multi.py
diff options
context:
space:
mode:
Diffstat (limited to 'modeling/prod_multi.py')
-rw-r--r--modeling/prod_multi.py92
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