Guest User

Untitled

a guest
May 22nd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.50 KB | None | 0 0
  1.         //Get n and m
  2.         n=ASCIIt.size();
  3.         m=ASCIIp.size();
  4.         //Reverse t to get t'
  5.         ArrayList<Integer> ASCIIrevt = new ArrayList<Integer>();
  6.         for(int i=0; i<ASCIIt.size(); i++) ASCIIrevt.add(ASCIIt.get(ASCIIt.size()-1-i));
  7.         //Pad t' to higher power of two
  8.         while(power2(ASCIIrevt.size())==false) ASCIIrevt.add(0);
  9.         //Pad p to length of t'
  10.         for(int i=ASCIIp.size(); i<ASCIIrevt.size(); i++) ASCIIp.add(0);
  11.         //Get size of padded t' and p
  12.         revn=ASCIIrevt.size();
  13.         //Get the first two sums
  14.         int sqt=0;
  15.         int sqp=0;
  16.         int sqpt=0;
  17.         sqp=square(ASCIIp, m);
  18.         //Create arrays for multiplication
  19.         Complex[] tprime = new Complex[revn];
  20.         Complex[] p = new Complex[revn];
  21.         for(int i=0; i<ASCIIrevt.size(); i++)
  22.         {
  23.             tprime[i]=new Complex(ASCIIrevt.get(i), 0);
  24.             p[i]=new Complex(ASCIIp.get(i), 0);
  25.         }
  26.         //Create array to hold result of multiplication
  27.         Complex[] pt = new Complex[2*tprime.length];
  28.         //Compute multiplication
  29.         pt=multiPoly(tprime, p, tprime.length);
  30.         sqt=square(ASCIIt.subList(0, m), m);
  31.         for(int i=0; i<n-m+1; i++)
  32.         {
  33.             if(i!=0) sqt=sqt+(ASCIIt.get(i+m-1)*ASCIIt.get(i+m-1))-(ASCIIt.get(i-1)*ASCIIt.get(i-1));
  34.             position=sqt+sqp-(2*(int)round(pt[n-i-1].getRe()))==0?i:-1;
  35.             if(position==i) break;
  36.         }
  37.         System.out.println(position);
Add Comment
Please, Sign In to add comment