Мне нужен код, который возвращает True, если только один или два из трех параметров верны
какой самый короткий / лучший способ?
Поскольку мой предыдущий ответ был слишком длинным, я попробую еще раз:
bool MySecondAnswer(params bool[] list) { return list.GroupBy(x => x).Count() == 2; }
69 символов в bash
x (){ test "$(echo $@|sed 's/ /\n/g'|sort|uniq|grep -c .)" == "2"; }
32 символа в питоне
def x(a,b,c):return a!=b or b!=c
Хороший вопросМой ответ:
return (a||b||c) != (a&&b&&c)
bool result = !(a && b && c) && (a || b || c)
Поместите логические значения в список, а затем отфильтруйте с помощью linq:
var options = new List<bool>() { true, true, false }; var trueOptions = options.Where( opt => opt }; var count = trueOptions.Count(); return count == 1 || count == 2;