| from __future__ import annotations |
|
|
| from quant_solver import solve_quant |
| from solver_absolute_value import solve_absolute_value |
| from solver_algebra import solve_algebra |
| from solver_combinatorics import solve_combinatorics |
| from solver_distance_rate_time import solve_distance_rate_time |
| from solver_factorial import solve_factorial |
| from solver_number_properties import solve_number_properties |
| from solver_overlapping_sets import solve_overlapping_sets |
| from solver_percent import solve_percent |
| from solver_probability import solve_probability |
| from solver_ratio import solve_ratio |
| from solver_remainder import solve_remainder |
| from solver_standard_deviation import solve_standard_deviation |
| from solver_weighted_average_and_mixture import solve_weighted_average_and_mixture |
| from solver_work_rate import solve_work_rate |
|
|
|
|
| def route_solver(text: str): |
| """Route to the most specific solver first.""" |
| if not text or not text.strip(): |
| return solve_quant(text) |
|
|
| text = text.strip() |
| ordered_solvers = [ |
| solve_standard_deviation, |
| solve_overlapping_sets, |
| solve_combinatorics, |
| solve_weighted_average_and_mixture, |
| solve_work_rate, |
| solve_distance_rate_time, |
| solve_percent, |
| solve_ratio, |
| solve_probability, |
| solve_remainder, |
| solve_factorial, |
| solve_absolute_value, |
| solve_number_properties, |
| solve_algebra, |
| ] |
| for solver in ordered_solvers: |
| try: |
| result = solver(text) |
| if result: |
| return result |
| except Exception: |
| continue |
| return solve_quant(text) |
|
|