Sistemas de resolución de ecuaciones XOR.

Tengo que resolver un sistema que consta de 32 ecuaciones x, cada una con 15 de 32 variables. Uno se vería así:

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] yp [n] son ​​enteros de 16 bits.

Entonces, como entiendo, terminaría con una matriz de 32x32 (que contiene solo 1s y 0s) y un vector de 32 resultados.

Al parecer, la eliminación de Gauss es lo que necesito, pero no puedo enfocar mi mente en torno al problema. ¿Podría alguien darme una idea de cómo resolver ese problema?

EDITAR: Aquí hay una solución en 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];
            }
        }
    }
}
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta