input: Write a python function to implement the Gradient Descent algorithm.
  assert gradientDescent([1, 2, 3], [2, 2.5, 3.5], 0.01, 1000) == (approximately 0.5, approximately 1.5, approximately 0)
  assert gradientDescent([1, 2, 3, 4], [1, 2, 2.5, 4], 0.01, 1000) == (approximately 0.75, approximately 0.5, approximately 0)
  assert gradientDescent([1, 2], [1, 2], 0.1, 500) == (approximately 1, approximately 0, approximately 0)
output: def gradientDescent(x, y, learning_rate, iterations):
      m = b = 0
      n = len(x)
      
      for _ in range(iterations):
          y_pred = [m * xi + b for xi in x]
          D_m = (-2/n) * sum(xi * (yi - y_predi) for xi, yi, y_predi in zip(x, y, y_pred))
          D_b = (-2/n) * sum(yi - y_predi for yi, y_predi in zip(y, y_pred))
          m -= learning_rate * D_m
          b -= learning_rate * D_b
      
      return m, b, 0