source: branches/autoquest-core-tasktrees-alignment/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/matrix/DynamicTriangleMatrix.java @ 1717

Last change on this file since 1717 was 1702, checked in by rkrimmel, 10 years ago
File size: 2.3 KB
Line 
1package de.ugoe.cs.autoquest.tasktrees.alignment.matrix;
2
3import java.util.ArrayList;
4
5//Must be initialized!
6public class DynamicTriangleMatrix implements ITriangleMatrix {
7       
8        private ArrayList<Float> matrix;
9        protected int size;
10        private float initalizationValue;
11       
12       
13       
14        //Increases the size
15        /* (non-Javadoc)
16         * @see de.ugoe.cs.autoquest.tasktrees.alignment.matrix.ITriangleMatrix#increaseSize(int)
17         */
18        @Override
19        public void increaseSize(int count) {
20                int oldsize = size;
21                this.size += count;
22                matrix.ensureCapacity(size*(size+1/2));
23                for(int i=0;i<(oldsize*count)+(count*(count+1)/2);i++) {
24                        matrix.add(this.initalizationValue);
25                }
26        }
27
28
29        public DynamicTriangleMatrix(int size) {
30                this.size = size;
31                matrix = new ArrayList<Float>();
32                matrix.ensureCapacity(size*(size+1/2));
33        }
34
35       
36        /* (non-Javadoc)
37         * @see de.ugoe.cs.autoquest.tasktrees.alignment.matrix.ITriangleMatrix#get(int, int)
38         */
39        @Override
40        public float get(int first, int second) {
41                int row = Math.min(first, second);
42                int col = Math.max(first, second);
43                return matrix.get(row*size-(row*(row+1)/2 - (size-col)));
44               
45        }
46       
47        /* (non-Javadoc)
48         * @see de.ugoe.cs.autoquest.tasktrees.alignment.matrix.ITriangleMatrix#set(int, int, float)
49         */
50        @Override
51        public void set(int first, int second, float value) {
52                int row = Math.min(first, second);
53                int col = Math.max(first, second);
54                matrix.set(row*size-(row*(row+1)/2 - (size-col)),value);
55        }
56
57        /* (non-Javadoc)
58         * @see de.ugoe.cs.autoquest.tasktrees.alignment.matrix.ITriangleMatrix#initialize(float)
59         */
60        @Override
61        public void initialize(float value) {
62                this.initalizationValue = value;
63                matrix.clear();
64                for (int i=0; i < this.size*(this.size+1)/2; i++) {
65                        matrix.add(value);
66                }
67        }
68       
69       
70        /* (non-Javadoc)
71         * @see de.ugoe.cs.autoquest.tasktrees.alignment.matrix.ITriangleMatrix#toString()
72         */
73        @Override
74        public String toString() {
75                String result = "";
76                for (int i = 0; i < size; i++) {
77                        for(int j = 0; j< size; j++) {
78                                if(i<j) {
79                                        if(Float.isInfinite(this.get(i,j))) {
80                                                result = result + " -------";
81                                        }
82                                        else {
83                                                result = result + String.format("%+8.2f",this.get(i,j));
84                                        }
85                                }
86                                else {
87                                        result = result + ("        ");
88                                }
89                        }
90                        result = result + "\n";
91                }
92                return result;
93        }
94
95
96        @Override
97        public int size() {
98                return size;
99        }
100}
Note: See TracBrowser for help on using the repository browser.