Advertisement
Guest User

Untitled

a guest
Oct 1st, 2014
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.01 KB | None | 0 0
  1. {
  2. static public boolean isInPowerArray( String x, int i, String y )
  3. //
  4. // Notkun:  Þetta fall tekur streng "x" og býr til veldafylki
  5. //          úr öllum stökum strengsins í réttri stafrófsröð.
  6. //          Eftir það ber það saman hvort strengur "y" sé sá sami og
  7. //          sá strengur sem er í hólfi "i" þar sem "i" er int tala.
  8. //          Ef samanburðurinn stenst þá skilar fallið boolean "true", annars "false",
  9. //          og fallið gefur líka "false" ef talan "i" er ekki númer á hólfi í fylkinu.
  10. //
  11. // Fyrir:   x er strengur sem inniheldur aðeins stafina
  12. //          a,b,...,z (enska stafrófið).  Enginn
  13. //          stafur er endurtekinn í strengnum og
  14. //          stafirnir eru í stafrófsröð.  Lengd
  15. //          strengsins er því á bilinu 0..26.
  16. //          i er hvaða heiltala sem er, y er strengur.
  17. //
  18. // Eftir:   isInPowerArray(x,i,y) er satt þá og því aðeins að veldisfylki
  19. //          strengsins x hafi strenginn y í sæti i.
  20. //
  21. {
  22.     long xlengd = x.length(); // lengd strengsins x
  23.     long s = 1; // true or false, segir til um hvort index skrifast eða skippast
  24.     long q = 1; // counterinn fyrir hvenær S eigi að vera true or false
  25.     int sub = 0; // hvaða stak af strengnum er notaður til að setja í array
  26.     int slot = 0; // Stendur fyrir númer á hólfi í array-inu
  27.     String[] a = new String[(int) Math.pow(2,xlengd)]; // Fylki "a" sem hefur lengd 2^n þar sem n er lengd strengsins x
  28.     long alengd = a.length; //lengd fylkissins
  29.     long r = alengd/2; // gildi fyrir hversu hátt q þarf að fara
  30.     if(i<0 || i>=alengd)
  31.     {
  32.         return false;
  33.     }
  34.     //
  35.     // Notkun:  Breytir þannig að það sé "" en ekki "null" í öllum hólfum fylkissins
  36.     // Fyrir:   Öll hólfin í fylkinu innihalda "null"
  37.     // Eftir:   Öll hólfin í fylkinu eru tóm, þ.e. ""
  38.     //
  39.     for ( int j =0; j < alengd; j++)
  40.     {
  41.         a[j] = "";
  42.     }
  43.     //
  44.     // Notkun:  Setur stafina úr streng "x" í hólf fylkissins og raðar þeim þannig að þeir myndi öll hlutmengi stafanna
  45.     //          á sama hátt og maður myndi búa til sanntöflu
  46.     // Fyrir:   Fylkið er tómt og hefur lengdina 2^n þar sem n er lengd strengsins "x"
  47.     // Eftir:   Fylkið inniheldur öll hlutmengi stakanna í strengnum "x"
  48.     //
  49.     for(long u = 0; u <= (alengd*xlengd)-1; u++)
  50.     {
  51.         if(s>0)
  52.         {
  53.             a[slot] = a[slot] + x.substring(sub,sub+1); slot++;
  54.         }
  55.         else
  56.         {
  57.             slot++;
  58.         }
  59.         if(slot == alengd)
  60.         {
  61.             sub=sub+1; slot=0; r=r/2;
  62.         }
  63.         if(q >= (r))
  64.         {
  65.             q=1; s=-s;
  66.         }
  67.         else
  68.         {
  69.             q++;
  70.         }
  71.     }
  72.     //
  73.     // Notkun:  Þessar tvær forlykkjur sjá um að raða hólfum fylkissins í stafrófsröð
  74.     // Fyrir:   Hólfin í fylkinu eru ekki í stafrófsröð
  75.     // Eftir:   Hólfin í fylkinu eru í stafrófsröð
  76.     //
  77.     for(int w = 1; w<alengd; w++)
  78.     for(int j = w; j>0; j--)
  79.     if (a[j-1].compareTo(a[j]) > 0)
  80.     {
  81.         String t = a[j-1];
  82.         a[j-1] = a[j];
  83.         a[j] = t;
  84.     }
  85.     else break;
  86.     if (a[i].compareTo(y) == 0)
  87.     {
  88.         return true;
  89.     }
  90.     else
  91.     {
  92.         return false;
  93.     }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement