npn
v1.1
Этот пакет - логический маттер. Он просто вычисляет канонического представителя, который является уникальным для каждого класса эквивалентности NPN, для данной логической функции, представленной таблицей истинности.
Бэкэнд этого пакета реализован C ++ для эффективности.
В настоящее время этот пакет поддерживает логические функции с количеством входов <= 8.
pip install npn import npn
# the truth table of f(x_2, x_1, x_0) as [f(0, 0, 0), f(0, 0, 1), f(0, 1, 0), f(0, 1, 1), ...]
tt = [ True , True , True , False , True , True , True , True ]
c = npn . npn_canonical_representative ( tt ) # [True, True, True, True, True, True, True, False]
c_int = npn . tt_to_int ( c ) # 254 (11111110)
c , phase , perm , output_inv = npn . npn_canonical_representative ( tt , return_details = True , refinement = True )return_details в True , чтобы вернуть информацию о преобразовании NPN ( phase, perm, output_inv ). Например, здесь phase = [False, False, True] , perm = [0, 1, 2] и output_inv = False mence (x_0, x_1, x_2) следует сопоставить с (x_0, x_1, x_2) , затем третья переменная ( x_2 ) должна быть инвертирована, и конечный результат не должен быть перевернут.refinement в True , чтобы ускорить вычисления, разбивая лексикографический порядок таблиц истины. Для получения подробной информации см. «Построение лучшего логического маттера и симметрического детектора». Скомпилируйте общую библиотеку libnpn.dll и libnpn.so через Cmake в среде Windows и Linux, поместите их в папку npn , затем
python setup.py sdistЧтобы загрузить в PYPI, запустить
twine upload . d ist n pn-X.X.tar.gzpip install pytest # if you haven't install it
python -m pytest