input: from typing import Callable, Dict
  
  @dataclass
  class Params:
   a: int
   b: int
   c: int
  
  def get_result(params: Params) -> int:
   """Returns the sum of the three given numbers"""
   return params.a + params.b + params.c
  
  def optimize(fn: Callable[[Params], int], params: Params) -> Dict[str, int]:
   """ Optimize the given function by searching for the best set of parameters within a range
       around the initial parameters.
   
       >>> optimize(get_result, Params(a=1, b=2, c=3))
       {'a': 1, 'b': 2, 'c': 3}
       >>> optimize(get_result, Params(a=5, b=10, c=15))
       {'a': 5, 'b': 10, 'c': 15}
   """
   best_score = 0
   best_params = None
   for a in range(params.a - 10, params.a + 10):
    for b in range(params.b - 10, params.b + 10):
     for c in range(params.c - 10, params.c + 10):
      score = fn(Params(a, b, c))
      if score > best_score:
       best_score = score
       best_params = {
        'a': a,
        'b': b,
        'c': c
       }
   return best_params
output:     best_score = fn(params)
      best_params = {
          'a': params.a,
          'b': params.b,
          'c': params.c
      }
      return best_params