source: branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/algorithms/NumberSequence.java @ 1648

Last change on this file since 1648 was 1648, checked in by rkrimmel, 10 years ago

Adding a few Testclasses.

File size: 2.4 KB
Line 
1package de.ugoe.cs.autoquest.tasktrees.alignment.algorithms;
2
3import java.util.ArrayList;
4import java.util.LinkedList;
5import java.util.Random;
6
7public class NumberSequence {
8        private int[] sequence;
9        private int id;
10
11
12        public NumberSequence(int size) {
13
14                sequence = new int[size];
15        }
16       
17        public int[] getSequence() {
18                return sequence;
19        }
20
21        public void setSequence(int[] sequence) {
22                this.sequence = sequence;
23        }
24
25       
26
27        public void printSequence() {
28                for (int i = 0; i < sequence.length; i++) {
29                        System.out.format("%5d", sequence[i]);
30                }
31                System.out.println();
32        }
33
34        public NumberSequence shuffle() {
35                NumberSequence result = new NumberSequence(sequence.length);
36                result.setId(getId());
37                result.setSequence(this.sequence);
38                Random rgen = new Random();
39
40                for (int i = 0; i < result.sequence.length; i++) {
41                        int randomPosition = rgen.nextInt(result.sequence.length);
42                        int temp = result.sequence[i];
43                        result.sequence[i] = result.sequence[randomPosition];
44                        result.sequence[randomPosition] = temp;
45                }
46                return result;
47
48        }
49
50        //Searching occurences of
51        public LinkedList<Integer> containsPattern(Match pattern) {
52                LinkedList<Integer> result = new LinkedList<Integer>();
53                int i = 0;
54                int[] pat1 = pattern.getFirstSequence().getSequence();
55                int[] pat2 = pattern.getSecondSequence().getSequence();
56                notmatched: while (i < sequence.length - pat1.length) {
57                        if (sequence[i] == pat1[0] || sequence[i] == pat2[0]) {
58                                int ipat1 =0;
59                                int ipat2 =0;
60                                while(ipat1 < pat1.length && ipat2<pat2.length) {
61                                        if(pat1[ipat1]==-1) {
62                                                ipat1++;
63                                                continue;
64                                        }
65                                        if(pat2[ipat2]==-1) {
66                                                ipat2++;
67                                                continue;
68                                        }
69                                        if (sequence[i + ipat1] != pat1[ipat1]
70                                                        && sequence[i + ipat2] != pat2[ipat2]) {
71                                                i++;
72                                                continue notmatched;
73                                        }
74                                        ipat1++;
75                                        ipat2++;
76                                }
77                                result.add(i);
78                        }
79                        i++;
80                }
81                return result;
82        }
83       
84        //Returns the number of times event occurs in this sequence
85        public int eventCount(int event) {
86                int count = 0;
87                for(int i=0;i<sequence.length;i++) {
88                        if(sequence[i] == event) {
89                                count++;
90                        }
91                }
92                return count;
93        }
94
95        public int size() {
96                return sequence.length;
97        }
98
99
100        public int getId() {
101                return id;
102        }
103
104
105        public void setId(int id) {
106                this.id = id;
107        }
108       
109        public boolean equals(NumberSequence n) {
110                int[] seq = n.getSequence();
111                if(n.size() !=this.size()) {
112                        return false;
113                }
114                for (int i=0; i<n.size();i++) {
115                        if(seq[i] != this.sequence[i]) {
116                                return false;
117                        }
118                }
119                return true;
120        }
121       
122       
123}
Note: See TracBrowser for help on using the repository browser.