


from string import ascii_uppercase

__a     =			{str(ord(c) - 55): c for c in ascii_uppercase}
def   _UpperCamelCase				(						lowerCAmelCase_  ,						lowerCAmelCase_   )						->str:
   if isinstance(lowerCAmelCase_  ,						lowerCAmelCase_   ):
      raise TypeError("""int() can't convert non-string with explicit base"""   )
   if num < 0:
      raise ValueError("""parameter must be positive int"""   )
   if isinstance(lowerCAmelCase_  ,						lowerCAmelCase_   ):
      raise TypeError("""'str' object cannot be interpreted as an integer"""   )
   if isinstance(lowerCAmelCase_  ,						lowerCAmelCase_   ):
      raise TypeError("""'float' object cannot be interpreted as an integer"""   )
   if base in (0, 1):
      raise ValueError("""base must be >= 2"""   )
   if base > 3_6:
      raise ValueError("""base must be <= 36"""   )
   UpperCAmelCase							=     """"""
   UpperCAmelCase							=     0
   UpperCAmelCase							=     0
   while div != 1:
      UpperCAmelCase				,  UpperCAmelCase							=     divmod(lowerCAmelCase_  ,						lowerCAmelCase_   )
      if base >= 1_1 and 9 < mod < 3_6:
         UpperCAmelCase							=     ALPHABET_VALUES[str(lowerCAmelCase_   )]
      else:
         UpperCAmelCase							=     str(lowerCAmelCase_   )
      new_value += actual_value
      UpperCAmelCase							=     num // base
      UpperCAmelCase							=     div
      if div == 0:
         return str(new_value[::-1]   )
      elif div == 1:
         new_value += str(lowerCAmelCase_   )
         return str(new_value[::-1]   )

   return new_value[::-1]


if __name__ == "__main__":
 import doctest

 doctest.testmod()

 for base in range(2, 37):
  for num in range(1000):
   assert int(decimal_to_any(num, base), base) == num, (
       num,
       base,
       decimal_to_any(num, base),
       int(decimal_to_any(num, base), base),
   )







from __future__ import annotations

from collections.abc import Sequence
from typing import Literal
def   _UpperCamelCase				(						lowerCAmelCase_  ,						lowerCAmelCase_   )						->str | Literal[False]:
   UpperCAmelCase							=     list(lowerCAmelCase_   )
   UpperCAmelCase							=     list(lowerCAmelCase_   )
   UpperCAmelCase							=     0
   for i in range(len(lowerCAmelCase_   )   ):
      if lista[i] != lista[i]:
         count += 1
         UpperCAmelCase							=     """_"""
   if count > 1:
      return False
   else:
      return "".join(lowerCAmelCase_   )
def   _UpperCamelCase				(						lowerCAmelCase_   )						->list[str]:
   UpperCAmelCase							=     []
   while True:
      UpperCAmelCase							=     ["""$"""] * len(lowerCAmelCase_   )
      UpperCAmelCase							=     []
      for i in range(len(lowerCAmelCase_   )   ):
         for j in range(i + 1  ,						len(lowerCAmelCase_   )   ):
            UpperCAmelCase							=     compare_string(binary[i]  ,						binary[j]   )
            if k is False:
               UpperCAmelCase							=     """*"""
               UpperCAmelCase							=     """*"""
               temp.append("""X"""   )
      for i in range(len(lowerCAmelCase_   )   ):
         if checka[i] == "$":
            pi.append(binary[i]   )
      if len(lowerCAmelCase_   ) == 0:
         return pi
      UpperCAmelCase							=     list(set(lowerCAmelCase_   )   )
def   _UpperCamelCase				(						lowerCAmelCase_  ,						lowerCAmelCase_   )						->list[str]:
   UpperCAmelCase							=     []
   for minterm in minterms:
      UpperCAmelCase							=     """"""
      for _ in range(lowerCAmelCase_   ):
         UpperCAmelCase							=     str(minterm % 2   ) + string
         minterm //= 2
      temp.append(lowerCAmelCase_   )
   return temp
def   _UpperCamelCase				(						lowerCAmelCase_  ,						lowerCAmelCase_  ,						lowerCAmelCase_   )						->bool:
   UpperCAmelCase							=     list(lowerCAmelCase_   )
   UpperCAmelCase							=     list(lowerCAmelCase_   )
   UpperCAmelCase							=     0
   for i in range(len(lowerCAmelCase_   )   ):
      if lista[i] != lista[i]:
         count_n += 1
   return count_n == count
def   _UpperCamelCase				(						lowerCAmelCase_  ,						lowerCAmelCase_   )						->list[str]:
   UpperCAmelCase							=     []
   UpperCAmelCase							=     [0] * len(lowerCAmelCase_   )
   for i in range(len(chart[0]   )   ):
      UpperCAmelCase							=     0
      UpperCAmelCase							=     -1
      for j in range(len(lowerCAmelCase_   )   ):
         if chart[j][i] == 1:
            count += 1
            UpperCAmelCase							=     j
      if count == 1:
         UpperCAmelCase							=     1
   for i in range(len(lowerCAmelCase_   )   ):
      if select[i] == 1:
         for j in range(len(chart[0]   )   ):
            if chart[i][j] == 1:
               for k in range(len(lowerCAmelCase_   )   ):
                  UpperCAmelCase							=     0
         temp.append(prime_implicants[i]   )
   while True:
      UpperCAmelCase							=     0
      UpperCAmelCase							=     -1
      UpperCAmelCase							=     0
      for i in range(len(lowerCAmelCase_   )   ):
         UpperCAmelCase							=     chart[i].count(1   )
         if count_n > max_n:
            UpperCAmelCase							=     count_n
            UpperCAmelCase							=     i

      if max_n == 0:
         return temp

      temp.append(prime_implicants[rem]   )

      for i in range(len(chart[0]   )   ):
         if chart[rem][i] == 1:
            for j in range(len(lowerCAmelCase_   )   ):
               UpperCAmelCase							=     0
def   _UpperCamelCase				(						lowerCAmelCase_  ,						lowerCAmelCase_   )						->list[list[int]]:
   UpperCAmelCase							=     [[0 for x in range(len(lowerCAmelCase_   )   )] for x in range(len(lowerCAmelCase_   )   )]
   for i in range(len(lowerCAmelCase_   )   ):
      UpperCAmelCase							=     prime_implicants[i].count("""_"""   )
      for j in range(len(lowerCAmelCase_   )   ):
         if is_for_table(prime_implicants[i]  ,						binary[j]  ,						lowerCAmelCase_   ):
            UpperCAmelCase							=     1

   return chart
def   _UpperCamelCase				(						)						->None:
   UpperCAmelCase							=     int(input("""Enter the no. of variables\n"""   )   )
   UpperCAmelCase							=     [
       float(lowerCAmelCase_   )
       for x in input(
           """Enter the decimal representation of Minterms 'Spaces Separated'\n"""   ).split()
   ]
   UpperCAmelCase							=     decimal_to_binary(lowerCAmelCase_  ,						lowerCAmelCase_   )

   UpperCAmelCase							=     check(lowerCAmelCase_   )
   print("""Prime Implicants are:"""   )
   print(lowerCAmelCase_   )
   UpperCAmelCase							=     prime_implicant_chart(lowerCAmelCase_  ,						lowerCAmelCase_   )

   UpperCAmelCase							=     selection(lowerCAmelCase_  ,						lowerCAmelCase_   )
   print("""Essential Prime Implicants are:"""   )
   print(lowerCAmelCase_   )


if __name__ == "__main__":
 import doctest

 doctest.testmod()
 main()



