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

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

Resolved conflict

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