Advertisement
madalinaradu

IA Criptaritmetica

May 29th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.25 KB | None | 0 0
  1. #include<iostream>
  2. #include<conio.h>
  3. #include<iomanip>
  4. #include<time.h>
  5. #include<stdlib.h>
  6. #define N 10
  7.  
  8. using namespace std;
  9.  
  10. int evaluare(  int v[]) {
  11.  
  12.     int doi=v[4]*100+v[5]*10+v[3];
  13.     int trei=v[0]*1000+v[1]*100+v[2]*10+v[3];
  14.     int cinci =v[6]*10000+v[3]*1000+v[7]*100+v[6]*10+v[3];
  15.     return abs(cinci-(doi+trei));
  16. }
  17.  
  18. int main() {
  19.     int elemente[N], permutare[N], perm[N];
  20.  
  21.     srand(time(0));
  22.     int gasit=0;
  23.     while(gasit==0) {
  24.         for(int i=0; i<N; i++) {
  25.             elemente[i]=i;
  26.         }
  27.         int lungime=N, contor=0;
  28.         while(lungime>0) {
  29.             int poz=rand()%lungime;
  30.             permutare[contor++]=elemente[poz];
  31.             for(int i=poz; i<lungime-1; i++)
  32.                 elemente[i]=elemente[i+1];
  33.             lungime--;
  34.         }
  35.         /*
  36.         for (int i = 0; i < N; i++)
  37.         cout<<permutare[i] <<"   ";
  38.         cout<<endl;
  39.         cout<<evaluare(permutare) <<" ";
  40.         cout<<endl;
  41.         */
  42.         for(int k=0; (gasit==0 && k<100); k++) {
  43.  
  44.             for(int i=0; i<N; i++) { //perm[N] este copia
  45.                 perm[i]=permutare[i];
  46.                 //cout<<perm[i]<<"   ";
  47.  
  48.             }
  49.  
  50.             int x=rand()%N;
  51.             int y=rand()%N;
  52.             while(x==y)
  53.                 y=rand()%N;
  54.             int temp=perm[x];
  55.             perm[x]=perm[y];
  56.             perm[y]=temp;
  57.             /*
  58.             for(int i=0; i<N; i++)
  59.                 cout<<permutare[i]<<"   ";
  60.             cout<<endl;
  61.             cout<<evaluare(permutare) <<" ";
  62.             cout<<endl;
  63.             */
  64.             if(evaluare(perm)<evaluare(permutare))
  65.                 for(int i=0; i<N; i++)
  66.                     permutare[i]=perm[i];
  67.  
  68.             if(evaluare(permutare)==0)
  69.                 gasit=1;
  70.         }
  71.  
  72.     }
  73.  
  74.     for(int i=0; i<N; i++)
  75.         cout<<permutare[i]<<"   ";
  76.     cout<<endl;
  77.     cout<<evaluare(permutare) <<" ";
  78.     cout<<endl;
  79.     int doi=permutare[4]*100+permutare[5]*10+permutare[3];
  80.     int trei=permutare[0]*1000+permutare[1]*100+permutare[2]*10+permutare[3];
  81.     int cinci =permutare[6]*10000+permutare[3]*1000+permutare[7]*100+permutare[6]*10+permutare[3];
  82.     cout<<doi<<endl;
  83.     cout<<trei<<endl;
  84.     cout<<cinci<<endl;
  85.     return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement