Здравствуйте.
Есть такое задание: вывести все значения всех булевых функций от трёх переменных(только с конъюнкцией и дизъюнкцией).
Также есть условие: значения равных функций вывести только один раз, и не выводить значения функций, которые при всех 1 на входе дают 1 и на выходе.

В задании сказано, что таких функций должно получиться 34, если я всё правильно поняла, но у меня получается 35:
xyz - 7 функций, x v y v z - 7, x v yz, y v xz, z v xy - ещё 21.
Подскажте, пожалуйста, в чём может быть ошибка. Или я неправильно поняла задание?

Ещё я попробовала реализовать программу, пока только для 2 функций:
Код
var
i,j,k,a:integer;
function con(i,j,k: integer): integer;
begin
CON:=i and j and k;
end;

function dis(i,j,k: integer): integer;
begin
DIS:= i or j or k;
end;

begin
Write('x y z    x^y^z');
Writeln;
  for i:=0 to 1 do
  begin
    for j:=0 to 1 do
      for k:=0 to 1 do
      begin
      if (i=1) and (j=1) and (k=1) then Break;
      Write(i,' ',j,' ',k);
      a:=CON(i,j,k);
      Write('      ', a);
      Writeln;
      end;
  end;
  Writeln;
  Write('x y z  x v y v z');
Writeln;
  for i:=0 to 1 do
  begin
    for j:=0 to 1 do
      for k:=0 to 1 do
      begin
      if (i=1) and (j=1) and (k=1) then Break;
      Write(i,' ',j,' ',k);
      a:=DIS(i,j,k);
      Write('      ', a);
      Writeln;
      end;
  end;
  Readln;
end.

Подскажите, пожалуйста, более изящное решение, и возможно ли сделать, чтобы программа была универсальна для n переменных?

Заранее огромное спасибо!