

'''simple docstring'''






import functools
from math import sqrt
from time import time


def  __lowerCamelCase      (				SCREAMING_SNAKE_CASE_					:     int  ,  *SCREAMING_SNAKE_CASE_					:     Any  ,  **SCREAMING_SNAKE_CASE_					:     Union[str, Any]   )							->       Optional[int]:
      """simple docstring"""

      SCREAMING_SNAKE_CASE_				:      int					=	time()
      SCREAMING_SNAKE_CASE_				:      Dict					=	func(*SCREAMING_SNAKE_CASE_  ,  **SCREAMING_SNAKE_CASE_   )
      SCREAMING_SNAKE_CASE_				:      Any					=	time()
      if int(end - start   ) > 0:
            print(F"{func.__name__} runtime: {(end - start):0.4f} s"   )
      else:
            print(F"{func.__name__} runtime: {(end - start) * 1_0_0_0:0.4f} ms"   )
      return output


def  __lowerCamelCase      (				SCREAMING_SNAKE_CASE_					:     int   )							->       list[int]:
      """simple docstring"""

      if n < 0:
            raise Exception("n is negative"   )
      if n == 0:
            return [0]
      SCREAMING_SNAKE_CASE_				:      Tuple					=	[0, 1]
      for _ in range(n - 1   ):
            fib.append(fib[-1] + fib[-2]   )
      return fib


def  __lowerCamelCase      (				SCREAMING_SNAKE_CASE_					:     int   )							->       list[int]:
      """simple docstring"""

      def fib_recursive_term(SCREAMING_SNAKE_CASE_					:     int   ) -> int:
            if i < 0:
                  raise Exception("n is negative"   )
            if i < 2:
                  return i
            return fib_recursive_term(i - 1   ) + fib_recursive_term(i - 2   )

      if n < 0:
            raise Exception("n is negative"   )
      return [fib_recursive_term(SCREAMING_SNAKE_CASE_   ) for i in range(n + 1   )]


def  __lowerCamelCase      (				SCREAMING_SNAKE_CASE_					:     int   )							->       list[int]:
      """simple docstring"""

      @functools.cache
      def fib_recursive_term(SCREAMING_SNAKE_CASE_					:     int   ) -> int:
            if i < 0:
                  raise Exception("n is negative"   )
            if i < 2:
                  return i
            return fib_recursive_term(i - 1   ) + fib_recursive_term(i - 2   )

      if n < 0:
            raise Exception("n is negative"   )
      return [fib_recursive_term(SCREAMING_SNAKE_CASE_   ) for i in range(n + 1   )]


def  __lowerCamelCase      (				SCREAMING_SNAKE_CASE_					:     int   )							->       list[int]:
      """simple docstring"""

      if n < 0:
            raise Exception("n is negative"   )
      # Cache must be outside recursuive function
      # other it will reset every time it calls itself.
      SCREAMING_SNAKE_CASE_				:      dict[int, int]					=	{0: 0, 1: 1, 2: 1}  # Prefilled cache

      def rec_fn_memoized(SCREAMING_SNAKE_CASE_					:     int   ) -> int:
            if num in cache:
                  return cache[num]

            SCREAMING_SNAKE_CASE_				:      Optional[int]					=	rec_fn_memoized(num - 1   ) + rec_fn_memoized(num - 2   )
            SCREAMING_SNAKE_CASE_				:      Optional[int]					=	value
            return value

      return [rec_fn_memoized(SCREAMING_SNAKE_CASE_   ) for i in range(n + 1   )]


def  __lowerCamelCase      (				SCREAMING_SNAKE_CASE_					:     int   )							->       list[int]:
      """simple docstring"""

      if n < 0:
            raise Exception("n is negative"   )
      if n >= 1_4_7_5:
            raise Exception("n is too large"   )
      SCREAMING_SNAKE_CASE_				:      Tuple					=	sqrt(5   )
      SCREAMING_SNAKE_CASE_				:      Optional[int]					=	(1 + sqrt_a) / 2
      return [round(phi**i / sqrt_a   ) for i in range(n + 1   )]


if __name__ == "__main__":
      snake_case_					  =	3_0
      time_func(fib_iterative, num)
      time_func(fib_recursive, num)  # Around 3s runtime
      time_func(fib_recursive_cached, num)  # Around 0ms runtime
      time_func(fib_memoization, num)
      time_func(fib_binet, num)




'''simple docstring'''






import requests
from bsa import BeautifulSoup


def  __lowerCamelCase      (				SCREAMING_SNAKE_CASE_					:     int  ,  SCREAMING_SNAKE_CASE_					:     str   )							->       str:
      """simple docstring"""

      SCREAMING_SNAKE_CASE_				:      List[str]					=	(
          "https://www.horoscope.com/us/horoscopes/general/"
          F"horoscope-general-daily-{day}.aspx?sign={zodiac_sign}"
      )
      SCREAMING_SNAKE_CASE_				:      Dict					=	BeautifulSoup(requests.get(SCREAMING_SNAKE_CASE_   ).content  ,  "html.parser"   )
      return soup.find("div"  ,  class_="main-horoscope"   ).p.text


if __name__ == "__main__":
      print('Daily Horoscope. \n')
      print(
          'enter your Zodiac sign number:\n',
          '1. Aries\n',
          '2. Taurus\n',
          '3. Gemini\n',
          '4. Cancer\n',
          '5. Leo\n',
          '6. Virgo\n',
          '7. Libra\n',
          '8. Scorpio\n',
          '9. Sagittarius\n',
          '10. Capricorn\n',
          '11. Aquarius\n',
          '12. Pisces\n',
      )
      snake_case_					  =	int(input('number> ').strip())
      print('choose some day:\n', 'yesterday\n', 'today\n', 'tomorrow\n')
      snake_case_					  =	input('enter the day> ')
      snake_case_					  =	horoscope(zodiac_sign, day)
      print(horoscope_text)

