



"""simple docstring"""






from typing import TYPE_CHECKING

from ....utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


__snake_case							:   Optional[Any]      =    {
    'configuration_mctct': ['MCTCT_PRETRAINED_CONFIG_ARCHIVE_MAP', 'MCTCTConfig'],
    'feature_extraction_mctct': ['MCTCTFeatureExtractor'],
    'processing_mctct': ['MCTCTProcessor'],
}


try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	__snake_case							:   Optional[int]      =    [
	    'MCTCT_PRETRAINED_MODEL_ARCHIVE_LIST',
	    'MCTCTForCTC',
	    'MCTCTModel',
	    'MCTCTPreTrainedModel',
	]


if TYPE_CHECKING:
	from .configuration_mctct import MCTCT_PRETRAINED_CONFIG_ARCHIVE_MAP, MCTCTConfig
	from .feature_extraction_mctct import MCTCTFeatureExtractor
	from .processing_mctct import MCTCTProcessor

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_mctct import MCTCT_PRETRAINED_MODEL_ARCHIVE_LIST, MCTCTForCTC, MCTCTModel, MCTCTPreTrainedModel

else:
	import sys

	__snake_case							:   Any      =    _LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)




'''simple docstring'''

from __future__ import annotations

from collections.abc import Sequence
from typing import Literal



def      __lowerCamelCase     (      lowerCAmelCase_						,			lowerCAmelCase_  )			->      str | Literal[False]:
		_a     :      Optional[int]        =							list(lowerCAmelCase_  )
		_a     :      Optional[Any]        =							list(lowerCAmelCase_  )
		_a     :      Union[str, Any]        =							0
		for i in range(len(lowerCAmelCase_  )  ):
				if lista[i] != lista[i]:
						count += 1
						_a     :      Optional[int]        =							'_'
		if count > 1:
				return False
		else:
				return "".join(lowerCAmelCase_  )



def      __lowerCamelCase     (      lowerCAmelCase_  )			->      list[str]:
		_a     :      Optional[int]        =							[]
		while True:
				_a     :      Any        =							['$'] * len(lowerCAmelCase_  )
				_a     :      List[str]        =							[]
				for i in range(len(lowerCAmelCase_  )  ):
						for j in range(i + 1						,			len(lowerCAmelCase_  )  ):
								_a     :      Optional[int]        =							compare_string(binary[i]						,			binary[j]  )
								if k is False:
										_a     :      Optional[Any]        =							'*'
										_a     :      Optional[Any]        =							'*'
										temp.append('X'  )
				for i in range(len(lowerCAmelCase_  )  ):
						if checka[i] == "$":
								pi.append(binary[i]  )
				if len(lowerCAmelCase_  ) == 0:
						return pi
				_a     :      Any        =							list(set(lowerCAmelCase_  )  )



def      __lowerCamelCase     (      lowerCAmelCase_						,			lowerCAmelCase_  )			->      list[str]:
		_a     :      int        =							[]
		for minterm in minterms:
				_a     :      Optional[int]        =							''
				for _ in range(lowerCAmelCase_  ):
						_a     :      Union[str, Any]        =							str(minterm % 2  ) + string
						minterm //= 2
				temp.append(lowerCAmelCase_  )
		return temp



def      __lowerCamelCase     (      lowerCAmelCase_						,			lowerCAmelCase_						,			lowerCAmelCase_  )			->      bool:
		_a     :      int        =							list(lowerCAmelCase_  )
		_a     :      Union[str, Any]        =							list(lowerCAmelCase_  )
		_a     :      str        =							0
		for i in range(len(lowerCAmelCase_  )  ):
				if lista[i] != lista[i]:
						count_n += 1
		return count_n == count



def      __lowerCamelCase     (      lowerCAmelCase_						,			lowerCAmelCase_  )			->      list[str]:
		_a     :      List[Any]        =							[]
		_a     :      Optional[Any]        =							[0] * len(lowerCAmelCase_  )
		for i in range(len(chart[0]  )  ):
				_a     :      Union[str, Any]        =							0
				_a     :      int        =							-1
				for j in range(len(lowerCAmelCase_  )  ):
						if chart[j][i] == 1:
								count += 1
								_a     :      int        =							j
				if count == 1:
						_a     :      List[Any]        =							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_  )  ):
												_a     :      Any        =							0
						temp.append(prime_implicants[i]  )
		while True:
				_a     :      Union[str, Any]        =							0
				_a     :      List[Any]        =							-1
				_a     :      str        =							0
				for i in range(len(lowerCAmelCase_  )  ):
						_a     :      Union[str, Any]        =							chart[i].count(1  )
						if count_n > max_n:
								_a     :      Any        =							count_n
								_a     :      int        =							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_  )  ):
										_a     :      List[str]        =							0



def      __lowerCamelCase     (      lowerCAmelCase_						,			lowerCAmelCase_  )			->      list[list[int]]:
		_a     :      int        =							[[0 for x in range(len(lowerCAmelCase_  )  )] for x in range(len(lowerCAmelCase_  )  )]
		for i in range(len(lowerCAmelCase_  )  ):
				_a     :      str        =							prime_implicants[i].count('_'  )
				for j in range(len(lowerCAmelCase_  )  ):
						if is_for_table(prime_implicants[i]						,			binary[j]						,			lowerCAmelCase_  ):
								_a     :      Optional[Any]        =							1

		return chart



def      __lowerCamelCase     (      )			->      None:
		_a     :      Optional[int]        =							int(input('Enter the no. of variables\n'  )  )
		_a     :      List[Any]        =							[
		    float(lowerCAmelCase_  )
		    for x in input(
		        'Enter the decimal representation of Minterms \'Spaces Separated\'\n'  ).split()
		]
		_a     :      List[str]        =							decimal_to_binary(lowerCAmelCase_						,			lowerCAmelCase_  )

		_a     :      Dict        =							check(lowerCAmelCase_  )
		print('Prime Implicants are:'  )
		print(lowerCAmelCase_  )
		_a     :      List[Any]        =							prime_implicant_chart(lowerCAmelCase_						,			lowerCAmelCase_  )

		_a     :      int        =							selection(lowerCAmelCase_						,			lowerCAmelCase_  )
		print('Essential Prime Implicants are:'  )
		print(lowerCAmelCase_  )


if __name__ == "__main__":
							import doctest

							doctest.testmod()
							main()




