input: def optimize_code(fn, params):
      """Optimizes the given function by iterating through the parameters within a specified range.
      Returns the best parameters that yield the highest score when passed to the function.
      >>> optimize_code(lambda params: params.a + params.b + params.c, Params(1, 2, 3))
      {'a': 5, 'b': 6, 'c': 7}
      """
      best_score = 0
      best_params = None
      for a in range(params.a - 5, params.a + 5):
          for b in range(params.b - 5, params.b + 5):
              for c in range(params.c - 5, params.c + 5):
                  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 = 0
      best_params = None
      for a in range(params.a - 5, params.a + 5):
          for b in range(params.b - 5, params.b + 5):
              for c in range(params.c - 5, params.c + 5):
                  score = fn(Params(a, b, c))
                  if score > best_score:
                      best_score = score
                      best_params = {'a': a, 'b': b, 'c': c}
      return best_params