Not sure about that. Can someone explain this?
board[i] |= ((board[i] ^ 34) && (board[i] ^ 35)) ? ( (board[i]^3) ? 0 : (1<<4)) : (1<<4);
Do not ask for fish, ask how to catch fish. Instead of explaining this to you, let me teach you how to explain it to you.
I don't understand this crazy code anymore than you are doing right now, so I'm going to write down a process that I will use to understand this code.
We begin to understand this by first reformatting it so that the indentation gives us the key:
board[i] |=
((board[i] ^ 34) && (board[i] ^ 35)) ?
((board[i]^3) ?
0 :
(1<<4)) :
(1<<4);
, . , .
int original = board[i];
int result =
((original ^ 34) && (original ^ 35)) ?
((original ^ 3) ?
0 :
(1<<4)) :
(1<<4);
board[i] = original | result;
. , .
int original = board[i];
int result;
if ((original ^ 34) && (original ^ 35))
{
if (original ^ 3)
result = 0;
else
result = 1 << 4;
}
else
result = 1 << 4;
board[i] = original | result;
, , "if" : , , , ? .
int original = board[i];
int result;
if ((original ^ 34) && (original ^ 35) && (original ^ 3))
result = 0;
else
result = 1 << 4;
board[i] = original | result;
, . .
(original ^ 34) && ...
? , , , .
int original = board[i];
int result;
int condition34 = (original ^ 34) != 0;
int condition35 = (original ^ 35) != 0;
int condition3 = (original ^ 3) != 0;
if (condition34 && condition35 && condition3)
result = 0;
else
result = 1 << 4;
board[i] = original | result;
, : " (x ^ y) != 0, , ? x^y 0. x^y , x y . x y ? . , , , , . :
int original = board[i];
int result;
int condition34 = (original != 34);
int condition35 = (original != 35);
int condition3 = (original != 3);
if (condition34 && condition35 && condition3)
result = 0;
else
result = 1 << 4;
board[i] = original | result;
- . board[i]. result , original|result no-op. , result 16. , , result:
int original = board[i];
int condition34 = (original != 34);
int condition35 = (original != 35);
int condition3 = (original != 3);
if (condition34 && condition35 && condition3)
{ }
else
board[i] = original | 16;
, if " ":
int original = board[i];
int condition34 = (original != 34);
int condition35 = (original != 35);
int condition3 = (original != 3);
if (!(condition34 && condition35 && condition3))
board[i] = original | 16;
,
- ,
:
int original = board[i];
int condition34 = (original != 34);
int condition35 = (original != 35);
int condition3 = (original != 3);
if ((!condition34) || (!condition35) || (!condition3))
board[i] = original | 16;
-, . .
int original = board[i];
int condition34 = (original == 34);
int condition35 = (original == 35);
int condition3 = (original == 3);
if (condition34 || condition35 || condition3)
board[i] = original | 16;
:
if ((board[i] == 34) || (board[i] == 35) || (board[i] == 3))
board[i] |= 16;
. , . 34, 35 3, 16 , .
, - , , , , .
, , , : , . - .