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)