Java - 522 434 228 213 caractères
Résout en vérifiant systématiquement tous les n-tuples entiers possibles par multiplication directe jusqu'à ce que l'on trouve un qui fonctionne.
La fonction prend la matrice augmentée, A, le vecteur de solution d'essai, x, et la dimension, n, comme vecteur de solution d'entrées-sorties, x. Notez que le vecteur x est en fait un plus grand que la dimension pour vous aider à parcourir les solutions possibles. (Si je déclarais les variables A, x, n, j, k, s comme variables d'instance, la fonction serait de 31 caractères plus courte - pour un total de 182, mais cela donne l'impression de trop plier les règles.)
int[]Z(int[][]A,int[]x,int n){int j,k,s;for(;;){for(j=0;j<n;j++){for(k=s=0;k<n;s+=A[j][k]*x[k++]);if(s!=A[j][n])j+=n;}if(j==n)return x;for(j=0;j<=n;j++)if(x[j]!=x[n]||j==n){x[j]++;for(k=0;k<j;x[k++]=-x[n]);j=n;}}}
Programme de test (quelque peu non golfé):
import java.util.*;
class MatrixSolver{
public MatrixSolver() {
Scanner p=new Scanner(System.in); //initialize everything from stdin
int j,k,n=p.nextInt(),A[][]=new int[n][n+1],x[]=new int[n+1];
for(j=0;j<n;j++)for(k=0;k<=n;A[j][k++]=p.nextInt());
x=Z(A,x,n); //call the magic function
for(j=0;j<n;j++) System.out.print(x[j]+" "); //print the output
}
public static void main(String[]args){
new MatrixSolver();
}
int[]Z(int[][]A,int[]x,int n){
int j,k,s;
for(;;){
for(j=0;j<n;j++){ //multiply each row of matrix by trial solution and check to see if it is correct
for(k=s=0;k<n;s+=A[j][k]*x[k++]);
if(s!=A[j][n])j+=n;
}
if(j==n)return x; //if it is correct return the trial solution
for(j=0;j<=n;j++)if(x[j]!=x[n]||j==n){//calculate the next trial solution
x[j]++;
for(k=0;k<j;x[k++]=-x[n]);
j=n;
}
}
}
}
Le programme prend les entrées de stdin sous forme d'entiers séparés par des espaces comme suit: premièrement, la dimension du problème, deuxièmement, les entrées de la matrice augmentée par ligne.
Exemple d'exécution:
$java -jar MatrixSolver.jar
3 2 1 -1 8 -3 -1 2 -11 -2 1 2 -3
2 3 -1
J'ai rasé plusieurs caractères en suivant les conseils de Victor sur les boucles et le "public", en stockant le RHS dans la matrice augmentée au lieu de séparément, et en ajoutant une entrée supplémentaire à ma solution d'essai pour simplifier la génération de chaque nouvelle solution d'essai. L'OP a également déclaré qu'une fonction est suffisante - pas besoin de compter l'ensemble du programme.