Go to file
Malar Kannan e3b688d1b5 added a readme 2017-06-08 15:40:49 +05:30
.gitignore implemented the rule engine 2017-06-08 14:33:52 +05:30
EN-RuleEngineChallenge-080417-1436.pdf implemented the rule engine 2017-06-08 14:33:52 +05:30
README.md added a readme 2017-06-08 15:40:49 +05:30
quartic_rule.py improved performance of rule matching 2017-06-08 15:34:16 +05:30
quartic_rule_test.py improved performance of rule matching 2017-06-08 15:34:16 +05:30
raw_data.json implemented the rule engine 2017-06-08 14:33:52 +05:30
rules.txt implemented the rule engine 2017-06-08 14:33:52 +05:30
rules_test.txt implemented the rule engine 2017-06-08 14:33:52 +05:30

README.md

Approach

Rule engine supports only simple comparison operators. The trade-off of this approach is that you can't encode complex rules. To be able to support more robust rules we could embed a scripting languages like lua, possibly at the cost of performance bottlenecks.

Performance

for 200*4=800 sig and 3 rules this python code takes about 0.04 secs on a AMD6410. The complexity of the rule engine is O(1) on the rule list selection based on the signal, O(n) on the application of those rules.

Final Thoughts

  • Could have improved performance and reduced resouce usage by actually streaming the json, might introduce additionaly dependency
  • Add support for more features for the rules