Java - 522 434 228 213 karakter
Çalışır bir tane bulunana kadar olası tüm tamsayı n-tuples'lerini doğrudan çarparak sistematik olarak kontrol ederek çözer.
Fonksiyon artırılmış matris, A, deneme solüsyonu vektörü, x ve boyut, n, girdi - çıktılar solüsyon vektörü, x olarak alınır. X vektörünün aslında olası çözümlere adım atmaya yardımcı olmak için boyuttan daha büyük olduğunu unutmayın. (A, x, n, j, k, s değişkenlerini örnek değişkenler olarak bildirirsem, işlev 31 karakter daha kısa olurdu - toplam 182 için, ancak bu kuralların çok fazla bükülmesi gibi geliyor.)
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;}}}
Test programı (biraz 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;
}
}
}
}
Program stdin'den boşlukla ayrılmış tamsayılar olarak girdi alır: birincisi, problemin boyutu, ikincisi, artırılmış matrisin satır satır girişleri.
Örnek çalışma:
$java -jar MatrixSolver.jar
3 2 1 -1 8 -3 -1 2 -11 -2 1 2 -3
2 3 -1
Victor'un döngüler ve "herkese açık" hakkındaki tavsiyelerini izleyerek, RHS'yi ayrı olarak değil artırılmış matriste saklayarak ve her yeni deneme çözümünün oluşturulmasını basitleştirmek için deneme çözümüme ekstra bir giriş ekleyerek birkaç karakter traş ettim. OP ayrıca bir fonksiyonun yeterli olduğunu söyledi - tüm programı saymaya gerek yok.