Commit 54783d37 authored by Taddeus Kroes's avatar Taddeus Kroes

Added new tree traversal idea to TODO list.

parent e09fb5e9
......@@ -81,3 +81,33 @@ Division of 0 by 1 reduces to 0.
- Frontend: implicit rules are applied after expicit ones, but are still
printed separately. This yields multiple successive occurences of the same
expression.
- Base hint selection on the desired final expression.
To generate a hint for expression list A, ..., B:
1. Create a possibility tree for A.
2. Validate all expressions up to B:
set root node = A
for each expression C in <A, B] do:
if final answer of C is not equal to final answer of A:
validation failes at c
find C in the possibility tree, traversing from the root node
if not found:
validation continues, but generate an efficiency warning at C
# FIXME: validation fails at C?
set root node = C
3. Generate a hint:
# root node should now be equal to B, so lookup of B is unnecessary
set N = empty dictionary
for each possibility of the current root P node do:
evaluate P(B) until the final expression of A is reached
set N[P] = the number of explicit possibilities that have been applied in the evaluation
the hint is that P for which the value of N[P] the smallest
- Optimization: put possibility tree in hashmap: {'expression': [(handler, args, 'applied_expression')], ...}
This hashmap can be used to speedup the calculation of possbility trees.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment