Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.List;
- /**
- * Created by igalshilman on 01/10/2016.
- */
- public class IntSets
- {
- public static void main(String[] args)
- {
- long a = empty();
- a = add(a, 1);
- a = add(a, 2);
- a = add(a, 10);
- a = add(a, 30);
- System.out.println("a: " + elements(a));
- long b = set(1, 30, 50); // shorter way defining a set
- System.out.println("b: " + elements(b));
- long b_a = difference(b, a);
- System.out.println("b - a = " + elements(b_a));
- long b_or_a = union(b, a);
- System.out.println("b U a = " + elements(b_or_a));
- long b_and_a = intersect(b, a);
- System.out.println("b AND a = " + elements(b_and_a));
- System.out.println();
- System.out.println("powerset of [0,1,2]:");
- System.out.println();
- for (long set : powerset(3))
- {
- System.out.println(elements(set));
- }
- }
- public static long empty()
- {
- return 0;
- }
- public static long add(long set, int element)
- {
- return set | (1L << element);
- }
- public static long set(int... elements)
- {
- long s = empty();
- for (int element : elements)
- {
- s = add(s, element);
- }
- return s;
- }
- public static List<Integer> elements(long set)
- {
- List<Integer> elements = new ArrayList<Integer>();
- int element = 0;
- while (set > 0)
- {
- if ((set & 1) == 1) // if the right most bit is 1
- {
- elements.add(element);
- }
- element++;
- set = set >> 1; // move all the bits one position to the right.
- }
- return elements;
- }
- public static long intersect(long a, long b)
- {
- return a & b;
- }
- public static long union(long a, long b)
- {
- return a | b;
- }
- public static long difference(long a, long b)
- {
- return a & ~b;
- }
- public static List<Long> powerset(long n)
- {
- List<Long> powerSet = new ArrayList<Long>();
- for (long i = 0; i < Math.pow(2, n); i++)
- {
- powerSet.add(i);
- }
- return powerSet;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement