Changeset 1665


Ignore:
Timestamp:
08/12/14 21:45:18 (10 years ago)
Author:
rkrimmel
Message:

Found last bug in containsPattern

Location:
branches
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/autoquest-core-tasktrees-alignment-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/alignment/algorithms/NumberSequenceTest.java

    r1662 r1665  
    1818                int[] seq3 = new int[]{0,0,5,6,0,6,9,10,0,12,13,0,15,16,0,13,0,15,21,13,0,15,21,0,0,0,6,0,9,32,0,5,10,0,6,0,9,32,0,5,43,0,6,0,9,5,6,0,9,43,0,6,0,9,32,0,5,6,6,9,43,0,0,0,0}; 
    1919         
    20                  
     20                int[] seq4 = new int[]{32,32,5,6,9,10,0}; 
    2121                int[] pat1  = new int[]{2,3,4}; 
    2222                int[] pat2  = new int[]{2,3,4}; 
     
    4444                //int[] pat16 = new int[]{6,-1, 9,71,32, 5,10,0}; 
    4545                 
     46                int[] pat17 = new int[]{32,0,5,10}; 
     47                int[] pat18 = new int[]{271,-1,32,247}; 
     48                 
     49                 
    4650                NumberSequence ns = new NumberSequence(10); 
    4751                ns.setSequence(seq); 
     
    5054                ns2.setSequence(seq3); 
    5155                 
     56                NumberSequence ns3 = new NumberSequence(7); 
     57                ns3.setSequence(seq4); 
     58                 
     59                 
    5260                NumberSequence firstpattern = new NumberSequence(3); 
    5361                NumberSequence secondpattern = new NumberSequence(3); 
     
    5967                NumberSequence sixthpattern = new NumberSequence(pat14.length); 
    6068                 
     69                NumberSequence seventhpattern = new NumberSequence(pat17.length); 
     70                NumberSequence eigthpattern = new NumberSequence(pat17.length); 
     71                 
     72                 
    6173                firstpattern.setSequence(pat1); 
    6274                secondpattern.setSequence(pat2); 
     
    6880                sixthpattern.setSequence(pat14); 
    6981                 
     82                seventhpattern.setSequence(pat17); 
     83                eigthpattern.setSequence(pat18); 
    7084                 
    7185                Match pattern = new Match(); 
     
    8094                pattern3.setFirstSequence(fifthpattern); 
    8195                pattern3.setSecondSequence(sixthpattern); 
    82                  
     96 
     97                Match pattern4 = new Match(); 
     98                pattern4.setFirstSequence(seventhpattern); 
     99                pattern4.setSecondSequence(eigthpattern); 
    83100                 
    84101                assertEquals(Integer.valueOf(2),ns.containsPattern(pattern).get(0)); 
     
    129146                 
    130147                 
     148                assertEquals(0,ns3.containsPattern(pattern4).size()); 
    131149                 
    132150        } 
  • branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/algorithms/NumberSequence.java

    r1662 r1665  
    4545 
    4646        //Recursive check if sequence contains pattern at position i 
    47         private boolean matches(int i, int[] p1, int[] p2 ,int ip1,int ip2) { 
     47        private boolean matches(int i, int[] p1, int[] p2 ,int ip1,int ip2,boolean jumped1,boolean jumped2) { 
    4848                 
    4949                if(p1.length==ip1) { 
     
    5656                        return false; 
    5757                } 
     58                if((p1[ip1]==sequence[i]||p2[ip2]==sequence[i]) && jumped1) { 
     59                        return matches(i+1,p1,p2,ip1+1,ip2+2,false,false); 
     60                } 
     61                if((p1[ip1]==sequence[i]||p2[ip2]==sequence[i]) && jumped2) { 
     62                        return matches(i+1,p1,p2,ip1+2,ip2+1,false,false); 
     63                } 
    5864                if(p1[ip1]==sequence[i]||p2[ip2]==sequence[i]) { 
    59                         return matches(i+1,p1,p2,ip1+1,ip2+1); 
     65                        return matches(i+1,p1,p2,ip1+1,ip2+1,false,false); 
    6066                } 
    6167                if(p1[ip1]==-1) { 
    62                         return matches(i,p1,p2,ip1+1,ip2); 
     68                        return matches(i,p1,p2,ip1+1,ip2,true,false); 
    6369                } 
    6470                if(p2[ip2]==-1) { 
    65                         return matches(i,p1,p2,ip1,ip2+1); 
     71                        return matches(i,p1,p2,ip1,ip2+1,false,true); 
    6672                } 
     73         
    6774                return false; 
    6875        } 
     
    7683 
    7784                while (i < sequence.length ) { 
    78                         if(matches(i,pat1,pat2,0,0)) { 
     85                        if(matches(i,pat1,pat2,0,0,false,false)) { 
    7986                                result.add(i); 
    8087                        } 
Note: See TracChangeset for help on using the changeset viewer.