wenn du bei einem xor oder bei einem genaudann beide Seiten negierst ändert sich nichts -- und das ganze zu verneinen geht indem du ein xor gegen ein genaudann austauscht und an den Argumenten nichts änderst.
Um darauf zu kommen schreib dir am Besten einfach eine Wertetabelle von der Operation auf und schau, welche Operation rauskommt, wenn du es negierst, zB:
x | y | x xor y
-----------------
0 | 0 | 0
1 | 0 | 1
0 | 1 | 1
1 | 1 | 0
x | y | ¬ (x xor y)
-----------------
0 | 0 | 1
1 | 0 | 0
0 | 1 | 0
1 | 1 | 1
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}