Ignore:
Timestamp:
07/23/14 18:18:11 (10 years ago)
Author:
rkrimmel
Message:

More intelligent match finding and creation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/algorithms/NumberSequence.java

    r1619 r1620  
    66public class NumberSequence { 
    77        private int[] sequence; 
    8         private int signature; 
     8        private int id; 
     9 
     10        public ArrayList<Match> getMatches() { 
     11                return matches; 
     12        } 
     13 
     14 
     15        public void setMatches(ArrayList<Match> matches) { 
     16                this.matches = matches; 
     17        } 
     18         
     19        public void addMatches(ArrayList<Match> matches) { 
     20                this.matches.addAll(matches); 
     21        } 
     22 
     23        private ArrayList<Match> matches; 
    924 
    1025        public NumberSequence(int size) { 
     
    1227                sequence = new int[size]; 
    1328        } 
    14  
     29         
    1530        public int[] getSequence() { 
    1631                return sequence; 
     
    2136        } 
    2237 
    23         public int getSignature() { 
    24                 return signature; 
    25         } 
    26  
    27         public void setSignature(int signature) { 
    28                 this.signature = signature; 
    29         } 
     38         
    3039 
    3140        public void printSequence() { 
     
    3847        public NumberSequence shuffle() { 
    3948                NumberSequence result = new NumberSequence(sequence.length); 
     49                result.setId(getId()); 
    4050                result.setSequence(this.sequence); 
    4151                Random rgen = new Random(); 
     
    5161        } 
    5262 
    53         // TODO: This can be done faster 
    54         public int containsPattern(ArrayList<NumberSequence> pattern) { 
     63 
     64        public int containsPattern(Match pattern) { 
    5565                int i = 0; 
    5666                int count = 0; 
    57                 int[] pat1 = pattern.get(0).getSequence(); 
    58                 int[] pat2 = pattern.get(1).getSequence(); 
     67                int[] pat1 = pattern.getFirstSequence().getSequence(); 
     68                int[] pat2 = pattern.getSecondSequence().getSequence(); 
    5969                notmatched: while (i < sequence.length - pat1.length) { 
    6070                        if (sequence[i] == pat1[0] || sequence[i] == pat2[0]) { 
    61                                 for (int j = 0; j < pat1.length; j++) { 
    62                                         if (sequence[i + j] != pat1[j] 
    63                                                         && sequence[i + j] != pat2[j]) { 
     71                                int ipat1 =0; 
     72                                int ipat2 =0; 
     73                                while(ipat1 < pat1.length && ipat2<pat2.length) { 
     74                                        if(pat1[ipat1]==-1) { 
     75                                                ipat1++; 
     76                                                continue; 
     77                                        } 
     78                                        if(pat2[ipat2]==-1) { 
     79                                                ipat2++; 
     80                                                continue; 
     81                                        } 
     82                                        if (sequence[i + ipat1] != pat1[ipat1] 
     83                                                        && sequence[i + ipat2] != pat2[ipat2]) { 
    6484                                                i++; 
    6585                                                continue notmatched; 
    6686                                        } 
     87                                        ipat1++; 
     88                                        ipat2++; 
    6789                                } 
    6890                                count++; 
     
    7294                return count; 
    7395        } 
     96         
     97        //Returns the number of times event occurs in this sequence 
     98        public int eventCount(int event) { 
     99                int count = 0; 
     100                for(int i=0;i<sequence.length;i++) { 
     101                        if(sequence[i] == event) { 
     102                                count++; 
     103                        } 
     104                } 
     105                return count; 
     106        } 
    74107 
    75108        public int size() { 
    76109                return sequence.length; 
    77110        } 
     111 
     112 
     113        public int getId() { 
     114                return id; 
     115        } 
     116 
     117 
     118        public void setId(int id) { 
     119                this.id = id; 
     120        } 
    78121} 
Note: See TracChangeset for help on using the changeset viewer.