Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Sets {
- public static void main(String... args) {
- String[] a = {"1", "2", "3", "4", "5"};
- String[] b = {"1", "3", "6", "7"};
- print_set(a, "a");
- print_set(b, "b");
- print_set(union(a, b), "union");
- print_set(intersection(a, b), "intersection");
- print_set(difference(a, b), "difference a/b");
- print_set(difference(b, a), "difference b/a");
- print_set(sim_difference(a, b), "sim_difference");
- }
- // start of the interface:
- public static String[] extend(String[] set) { // returns extended set with length set.length*2+1
- String[] new_set = new String[set.length*2+1];
- for (int i = 0; i < new_set.length; i++){
- if (i < set.length)
- new_set[i] = set[i];
- }
- return new_set;
- }
- public static String[] reduce(String[] set) { // returns reduced set with length set.length/2
- String[] new_set = new String[set.length/2];
- for (int i = 0; i < new_set.length; i++){
- new_set[i] = set[i];
- }
- return new_set;
- }
- public static String[] add(String[] set, String elem) { // returns "set" with added element "elem"
- int end = -1;
- for (int i = 0; i < set.length; i++) {
- if (elem == set[i])
- return set;
- if (set[i] != null)
- end = i;
- }
- if ((set.length == 0) || (end >= set.length/2))
- set = extend(set);
- set[end+1] = elem;
- return set;
- }
- public static String[] remove(String[] set, String elem) { // returns "set" with removed element "elem"
- int end = 0;
- for (int i = 0; i < set.length; i++){
- if (set[i] == elem) {
- for (int j = i; j < set.length-1; j++)
- set[j] = set[j+1];
- set[set.length-1] = null;
- }
- if (set[i] != null)
- end = i;
- }
- if (end < set.length/2)
- set = reduce(set);
- return set;
- }
- public static void print_set(String[] set, String name) { //prints the set as: "name": set[0] set[1] ... set[set.length - 1]
- String s = name + ": ";
- for (int i = 0; i < set.length; i++)
- if (set[i] != null)
- s = s + set[i] + " ";
- System.out.println(s);
- }
- public static String[] union(String[] a, String[] b) { // returns the union-set of sets "a" and "b"
- String[] result = a;
- for (int i = 0; i < b.length; i++)
- result = add(result, b[i]);
- return result;
- }
- public static String[] intersection(String[] a, String[] b) { // returns the intersection-set of sets "a" and "b"
- String[] result = new String[0];
- for (int i = 0; i < a.length; i++)
- for (int j = 0; j < b.length; j++)
- if (a[i] == b[j])
- result = add(result, a[i]);
- return result;
- }
- public static String[] difference(String[] a, String[] b) { // returns the difference-set of sets "a" and "b"
- String[] result = new String[0];
- for (int i = 0; i < a.length; i++)
- result = add(result, a[i]);
- for (int i = 0; i < b.length; i++)
- result = remove(result, b[i]);
- return result;
- }
- public static String[] sim_difference(String[] a, String[] b) { // returns the simmetric-difference-set of sets "a" and "b"
- return union(difference(a, b), difference(b, a));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement