Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- static public boolean isInPowerArray( String x, int i, String y )
- //
- // Notkun: Þetta fall tekur streng "x" og býr til veldafylki
- // úr öllum stökum strengsins í réttri stafrófsröð.
- // Eftir það ber það saman hvort strengur "y" sé sá sami og
- // sá strengur sem er í hólfi "i" þar sem "i" er int tala.
- // Ef samanburðurinn stenst þá skilar fallið boolean "true", annars "false",
- // og fallið gefur líka "false" ef talan "i" er ekki númer á hólfi í fylkinu.
- //
- // Fyrir: x er strengur sem inniheldur aðeins stafina
- // a,b,...,z (enska stafrófið). Enginn
- // stafur er endurtekinn í strengnum og
- // stafirnir eru í stafrófsröð. Lengd
- // strengsins er því á bilinu 0..26.
- // i er hvaða heiltala sem er, y er strengur.
- //
- // Eftir: isInPowerArray(x,i,y) er satt þá og því aðeins að veldisfylki
- // strengsins x hafi strenginn y í sæti i.
- //
- {
- long xlengd = x.length(); // lengd strengsins x
- long s = 1; // true or false, segir til um hvort index skrifast eða skippast
- long q = 1; // counterinn fyrir hvenær S eigi að vera true or false
- int sub = 0; // hvaða stak af strengnum er notaður til að setja í array
- int slot = 0; // Stendur fyrir númer á hólfi í array-inu
- String[] a = new String[(int) Math.pow(2,xlengd)]; // Fylki "a" sem hefur lengd 2^n þar sem n er lengd strengsins x
- long alengd = a.length; //lengd fylkissins
- long r = alengd/2; // gildi fyrir hversu hátt q þarf að fara
- if(i<0 || i>=alengd)
- {
- return false;
- }
- //
- // Notkun: Breytir þannig að það sé "" en ekki "null" í öllum hólfum fylkissins
- // Fyrir: Öll hólfin í fylkinu innihalda "null"
- // Eftir: Öll hólfin í fylkinu eru tóm, þ.e. ""
- //
- for ( int j =0; j < alengd; j++)
- {
- a[j] = "";
- }
- //
- // Notkun: Setur stafina úr streng "x" í hólf fylkissins og raðar þeim þannig að þeir myndi öll hlutmengi stafanna
- // á sama hátt og maður myndi búa til sanntöflu
- // Fyrir: Fylkið er tómt og hefur lengdina 2^n þar sem n er lengd strengsins "x"
- // Eftir: Fylkið inniheldur öll hlutmengi stakanna í strengnum "x"
- //
- for(long u = 0; u <= (alengd*xlengd)-1; u++)
- {
- if(s>0)
- {
- a[slot] = a[slot] + x.substring(sub,sub+1); slot++;
- }
- else
- {
- slot++;
- }
- if(slot == alengd)
- {
- sub=sub+1; slot=0; r=r/2;
- }
- if(q >= (r))
- {
- q=1; s=-s;
- }
- else
- {
- q++;
- }
- }
- //
- // Notkun: Þessar tvær forlykkjur sjá um að raða hólfum fylkissins í stafrófsröð
- // Fyrir: Hólfin í fylkinu eru ekki í stafrófsröð
- // Eftir: Hólfin í fylkinu eru í stafrófsröð
- //
- for(int w = 1; w<alengd; w++)
- for(int j = w; j>0; j--)
- if (a[j-1].compareTo(a[j]) > 0)
- {
- String t = a[j-1];
- a[j-1] = a[j];
- a[j] = t;
- }
- else break;
- if (a[i].compareTo(y) == 0)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement