Java - 522 434 228 213 Zeichen
Löst durch systematisches Überprüfen aller möglichen ganzzahligen n-Tupel durch direkte Multiplikation, bis eines gefunden wird, das funktioniert.
Die Funktion verwendet die erweiterte Matrix A, den Versuchslösungsvektor x und die Dimension n als Eingabe-Ausgabe-Lösungsvektor x. Beachten Sie, dass der Vektor x tatsächlich eins größer als die Dimension ist, um mögliche Lösungen zu durchlaufen. (Wenn ich die Variablen A, x, n, j, k, s als Instanzvariablen deklarieren würde, wäre die Funktion 31 Zeichen kürzer - für insgesamt 182, aber das fühlt sich an, als würde man die Regeln zu weit biegen.)
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;}}}
Testprogramm (etwas ungolfed):
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;
}
}
}
}
Das Programm nimmt Eingaben von stdin als durch Leerzeichen getrennte Ganzzahlen wie folgt entgegen: erstens die Dimension des Problems, zweitens die zeilenweisen Einträge der erweiterten Matrix.
Probelauf:
$java -jar MatrixSolver.jar
3 2 1 -1 8 -3 -1 2 -11 -2 1 2 -3
2 3 -1
Ich habe mehrere Zeichen rasiert, indem ich Victors Ratschlägen zu Loops und "public" gefolgt bin, die RHS in der erweiterten Matrix anstatt separat gespeichert und meiner Testlösung einen zusätzlichen Eintrag hinzugefügt habe, um die Generierung jeder neuen Testlösung zu vereinfachen. Das OP sagte auch, dass eine Funktion ausreicht - es ist nicht erforderlich, das gesamte Programm zu zählen.