Resolvendo sistemas de equações XOR
Eu tenho que resolver um sistema que consiste em 32 xor equações, cada uma envolvendo 15 de 32 variáveis. Um ficaria assim:
i[0] = p[0] ^ p[4] ^ p[5] ^ p[10] ^ p[11] ^ p[20] ^ p[21] ^ p[22] ^ p[23] ^ p[25] ^ p[26] ^ p[27] ^ p[28] ^ p[30] ^ p[31]
i [n] e p [n] sendo inteiros de 16 bits.
Então, como eu entendo, eu acabaria com uma matriz 32x32 (contendo apenas 1s e 0s) e um vetor de 32 resultados.
Aparentemente, a eliminação gaussiana é o que eu preciso, mas não consigo me preocupar com o problema, alguém poderia me dar algumas dicas sobre como resolver esse problema?
EDIT: aqui está uma solução em C ++
void SolveLinearSystem(u8 A[32][32], u8 B[32])
{
int N = 32;
for (int K = 0; K < N; ++K)
{
if( A[K][K] == 0 )
{
for(int i = K + 1; i<N ; ++i )
{
if(A[i][K] != 0)
{
for( int L = 0; L < N; ++L )
{
int s = A[K][L];
A[K][L] = A[i][L];
A[i][L] = s;
}
int s = B[i];
B[i] = B[K];
B[K] = s;
break;
}
}
}
for( int I = 0; I<N; ++I)
{
if( I!=K )
{
if( A[I][K] )
{
int M = 0;
for( M=K; M<N; ++M )
{
A[I][M] = A[I][M] ^ A[K][M];
}
B[I] = B[I] ^ B[K];
}
}
}
}
}