জাভা - 522 434 228 213 অক্ষর
নিয়মিতভাবে সমস্ত সম্ভাব্য পূর্ণসংখ্যার এন-টিপলস সরাসরি গুনে পরীক্ষা করে সমাধান করা হয় যতক্ষণ না কোনও কাজ করে এটির কাজ খুঁজে পাওয়া যায়।
ফাংশনটি ইনপুট হিসাবে মেট্রিক্স, এ, ট্রায়াল সলিউশন ভেক্টর, এক্স, এবং মাত্রা, এন গ্রহণ করে - আউটপুট সলিউশন ভেক্টর, এক্স। নোট করুন যে ভেক্টর এক্স সম্ভাব্য সমাধানগুলির মধ্য দিয়ে পদক্ষেপে সহায়তা করার জন্য আসলে মাত্রা থেকে একটি বড়। (আমি যদি ভেরিয়েবল এ, এক্স, এন, জে, কে, সকে উদাহরণ ভেরিয়েবল হিসাবে ঘোষণা করি তবে ফাংশনটি 31 টি সংক্ষিপ্ত হবে - মোট 182 এর জন্য, তবে এটি নিয়মগুলি খুব দূরে বাঁকানোর মতো অনুভব করে))
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;}}}
পরীক্ষার জন্য প্রোগ্রাম (কিছুটা নাড়িত):
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;
}
}
}
}
প্রোগ্রামটি পৃথক পৃথক পূর্ণসংখ্যা হিসাবে স্টিডিন থেকে ইনপুট নেয়: প্রথমত, সমস্যার মাত্রা, দ্বিতীয়ত, সারি অনুসারে অগমেন্ট্টড ম্যাট্রিক্সের এন্ট্রি।
নমুনা রান:
$java -jar MatrixSolver.jar
3 2 1 -1 8 -3 -1 2 -11 -2 1 2 -3
2 3 -1
লুপস এবং "পাবলিক" সম্পর্কে ভিক্টরের পরামর্শ অনুসরণ করে, আলাদাভাবে পরিবর্তে পরিবর্তিত ম্যাট্রিক্সে আরএইচএস সংরক্ষণ করে এবং প্রতিটি নতুন পরীক্ষার সমাধানের জেনারেশনকে সহজতর করার জন্য আমার ট্রায়াল সলিউশনে একটি অতিরিক্ত এন্ট্রি যুক্ত করে আমি বেশ কয়েকটি চরিত্র কামিয়েছি। ওপি আরও বলেছিল যে একটি ফাংশন যথেষ্ট - পুরো প্রোগ্রামটি গণনা করার দরকার নেই।