Я создаю вывод из токенов из spaCy из документации. Используя таблицу истинности, мне нужно вывести все возможные сценарии для тестирования. Количество входов может варьироваться от входа к входу. Если возможно, я бы хотел, чтобы это было гибким, чтобы сделать 3+ ввода таким образом: ((a и b) или c).
Каждый сценарий имеет положительный (True) или отрицательный (False) аспектна его вход (т.е. когда вход установлен как ИЛИ, если вход не установлен), потому что все возможные случаи должны быть проверены. Для сценария с двумя входами целью является следующий результат:
Вход: если «Вход 1 установлен» или «Вход 2 недоступен», то «Обнаружен сбой».
Выход:
Случай 1:
- Вход 1 установлен
- Вход 2 недоступен
- Обнаружена ошибка
Случай 2:
- Вход 1 не установлен
- Вход 2 недоступен
- ОшибкаОбнаружено
Случай 3:
- Вход 1 установлен
- Вход 2 доступен
- ОшибкаОбнаружен
Случай 4:
- Вход 1 не установлен
- Доступен вход 2
- ОшибкаНе обнаружено
Для 3 или более входов оно будет экспоненциально увеличено.
У меня нет проблем с форматированием / извлечением строковых значений из массива или списка в правильный формат для моего вывода. Моя главная проблема - итерация по n входам и смешанным типам логики.
def truth_table(n):
table = list(itertools.product([False, True], repeat=n))
print(table)
truth_table(3)
Это не работает для меня, поскольку касается только входов, а не результирующих выходов.
Я рассмотрел добавление входных данных в виде кортежей, присвоение значения 1 или 0 в качестве индикатора положительной или отрицательной «версии» и определение моей таблицы истинности в виде 2D-списка. Затем выполните итерацию по каждой позиции таблицы истинности и создайте новый двумерный массив с указанными операторами ввода, заменяющими значения 0 и 1.
or_2 = [[0,0,0],
[0,1,1],
[1,0,1],
[1,1,1]]
and_2 = [[0,0,0],
[0,1,0],
[1,0,0],
[1,1,1]]