Advertisement
Guest User

Untitled

a guest
Sep 30th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.31 KB | None | 0 0
  1.  
  2. import java.util.ArrayList;
  3. import java.util.List;
  4.  
  5. /**
  6.  * Created by igalshilman on 01/10/2016.
  7.  */
  8. public class IntSets
  9. {
  10.     public static void main(String[] args)
  11.     {
  12.         long a = empty();
  13.         a = add(a, 1);
  14.         a = add(a, 2);
  15.         a = add(a, 10);
  16.         a = add(a, 30);
  17.  
  18.         System.out.println("a: " + elements(a));
  19.  
  20.         long b = set(1, 30, 50); // shorter way defining a set
  21.         System.out.println("b: " + elements(b));
  22.  
  23.         long b_a = difference(b, a);
  24.         System.out.println("b - a  = " + elements(b_a));
  25.  
  26.         long b_or_a = union(b, a);
  27.         System.out.println("b U a = " + elements(b_or_a));
  28.  
  29.         long b_and_a = intersect(b, a);
  30.         System.out.println("b AND a = " + elements(b_and_a));
  31.  
  32.         System.out.println();
  33.         System.out.println("powerset of [0,1,2]:");
  34.         System.out.println();
  35.  
  36.         for (long set : powerset(3))
  37.         {
  38.             System.out.println(elements(set));
  39.         }
  40.  
  41.     }
  42.  
  43.     public static long empty()
  44.     {
  45.         return 0;
  46.     }
  47.  
  48.     public static long add(long set, int element)
  49.     {
  50.         return set | (1L << element);
  51.     }
  52.  
  53.     public static long set(int... elements)
  54.     {
  55.         long s = empty();
  56.         for (int element : elements)
  57.         {
  58.             s = add(s, element);
  59.         }
  60.         return s;
  61.     }
  62.  
  63.     public static List<Integer> elements(long set)
  64.     {
  65.         List<Integer> elements = new ArrayList<Integer>();
  66.         int element = 0;
  67.         while (set > 0)
  68.         {
  69.             if ((set & 1) == 1) // if the right most bit is 1
  70.             {
  71.                 elements.add(element);
  72.             }
  73.             element++;
  74.             set = set >> 1; // move all the bits one position to the right.
  75.         }
  76.         return elements;
  77.     }
  78.  
  79.     public static long intersect(long a, long b)
  80.     {
  81.         return a & b;
  82.     }
  83.  
  84.     public static long union(long a, long b)
  85.     {
  86.         return a | b;
  87.     }
  88.  
  89.     public static long difference(long a, long b)
  90.     {
  91.         return a & ~b;
  92.     }
  93.  
  94.     public static List<Long> powerset(long n)
  95.     {
  96.         List<Long> powerSet = new ArrayList<Long>();
  97.         for (long i = 0; i < Math.pow(2, n); i++)
  98.         {
  99.             powerSet.add(i);
  100.         }
  101.         return powerSet;
  102.     }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement