





"""simple docstring"""





from math import isclose, sqrt


def 			UpperCAmelCase__							(  SCREAMING_SNAKE_CASE     :						float							,						SCREAMING_SNAKE_CASE     :						float							,						SCREAMING_SNAKE_CASE     :						float			):







      '''simple docstring'''




      lowerCAmelCase  						=       point_y / 4 / point_x
      lowerCAmelCase  						=       2 * normal_gradient / (1 + normal_gradient * normal_gradient)
      lowerCAmelCase  						=       (1 - normal_gradient * normal_gradient) / (
          1 + normal_gradient * normal_gradient
      )
      lowerCAmelCase  						=       (sa - ca * incoming_gradient) / (ca + sa * incoming_gradient)

      # to find the next point, solve the simultaeneous equations:
      # y^2 + 4x^2 = 100
      # y - b = m * (x - a)
      # ==> A x^2 + B x + C = 0
      lowerCAmelCase  						=       outgoing_gradient**2 + 4
      lowerCAmelCase  						=       2 * outgoing_gradient * (point_y - outgoing_gradient * point_x)
      lowerCAmelCase  						=       (point_y - outgoing_gradient * point_x) ** 2 - 1_00

      lowerCAmelCase  						=       (
          -linear_term - sqrt(linear_term**2 - 4 * quadratic_term * constant_term			)
      ) / (2 * quadratic_term)
      lowerCAmelCase  						=       (
          -linear_term + sqrt(linear_term**2 - 4 * quadratic_term * constant_term			)
      ) / (2 * quadratic_term)

      # two solutions, one of which is our input point
      lowerCAmelCase  						=       x_minus if isclose(SCREAMING_SNAKE_CASE							,						SCREAMING_SNAKE_CASE			) else x_plus
      lowerCAmelCase  						=       point_y + outgoing_gradient * (next_x - point_x)

      return next_x, next_y, outgoing_gradient


def 			UpperCAmelCase__							(  SCREAMING_SNAKE_CASE     :						float = 1.4							,						SCREAMING_SNAKE_CASE     :						float = -9.6			):







      '''simple docstring'''




      lowerCAmelCase  						=       0
      lowerCAmelCase  						=       first_x_coord
      lowerCAmelCase  						=       first_y_coord
      lowerCAmelCase  						=       (10.1 - point_y) / (0.0 - point_x)

      while not (-0.01 <= point_x <= 0.01 and point_y > 0):
            lowerCAmelCase						,		lowerCAmelCase						,		lowerCAmelCase  						=       next_point(SCREAMING_SNAKE_CASE							,						SCREAMING_SNAKE_CASE							,						SCREAMING_SNAKE_CASE			)
            num_reflections += 1

      return num_reflections


if __name__ == "__main__":
       print(f'{solution() = }')













"""simple docstring"""





from __future__ import annotations


def 			UpperCAmelCase__							(  SCREAMING_SNAKE_CASE     :						str			):







      '''simple docstring'''




      return [ord(SCREAMING_SNAKE_CASE			) - 96 for elem in plain]


def 			UpperCAmelCase__							(  SCREAMING_SNAKE_CASE     :						list[int]			):







      '''simple docstring'''




      return "".join(chr(elem + 96			) for elem in encoded			)


def 			UpperCAmelCase__							(  ):







      '''simple docstring'''




      lowerCAmelCase  						=       encode(input("""-> """			).strip().lower()			)
      print("""Encoded: """							,						SCREAMING_SNAKE_CASE			)
      print("""Decoded:"""							,						decode(SCREAMING_SNAKE_CASE			)			)


if __name__ == "__main__":
       main()






