Поскольку вопрос помечен MATLAB, я также дам вам решение MATLAB.По сути, ваша идея добавления суммы - это просто путь, просто сначала преобразуйте переменные в двоичные, что делается с помощью logical
.Таким образом, проверка на неудачу может быть выполнена с помощью
arr = logical([a,b,c,d]);
fail = sum(logical(arr))==1 || all(arr(1:2))
, где первое условие проверяет, сколько было заполнено, а второе проверяет, установлены ли оба значения a
и b
.
Следует отметить, что существуют случаи, которые удовлетворяют как условиям прохождения, так и неудачи (например, все установленные переменные).Решение, приведенное выше, является неудачным.Проходное жадное решение будет (как предложено Крисом Луенго в комментариях)
arr = logical([a,b,c,d]);
fail = sum(logical(arr))==1 || all(arr==[1,1,0,0])