Advertisement
daniel_079

Untitled

Jun 3rd, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.98 KB | None | 0 0
  1. public static void main(String[] args) {
  2.         if (args.length != 1) {
  3.             throw new RuntimeException();
  4.         }
  5.         final String expression = args[0];
  6.         final Expression parsed;
  7.         try {
  8.             parsed = new ExpressionParser().parseString(expression);
  9.         } catch (ParserException e) {
  10.             e.printStackTrace();
  11.             return;
  12.         }
  13.         Set<Character> have = new HashSet<>();
  14.         for (int i = 0; i < expression.length(); i++) {
  15.             char ch = expression.charAt(i);
  16.             if ('a' <= ch && ch <= 'z') {
  17.                 have.add(ch);
  18.             }
  19.         }
  20.         int nvars = have.size();
  21.         int table[][] = new int [(int) Math.pow(2, nvars)][27];
  22.         final int ALPHA = 'z' - 'a' + 1;
  23.         boolean[] vars = new boolean[ALPHA];
  24.         Object[] a;
  25.         char y;
  26.         for (int mask = 0; mask < (1 << nvars); mask++) {
  27.             int ptr = 0;
  28.             for (char ch = 'a'; ch <= 'z'; ch++) {
  29.                 vars[ch - 'a'] = have.contains(ch) && (mask & (1 << (ptr++))) != 0;
  30.             }
  31.             for (int i = 0; i < nvars; i++) {
  32.                 a = have.toArray();
  33.                 y = (char) a[i];
  34.                 table[mask][y - 'a'] = ((mask >> i) & 1);
  35.                 System.out.print(((mask >> i) & 1) + " ");
  36.             }
  37.             table[mask][26] = parsed.evaluate(vars) ? 1 : 0;
  38.             System.out.println(parsed.evaluate(vars) ? 1 : 0);
  39.         }
  40.  
  41.         for (int i = 0; i < table.length; i++) {
  42.             for (int j = 0; j < table[i].length; j++) {
  43.                 System.out.print(table[i][j] + " ");
  44.             }
  45.             System.out.println();
  46.         }
  47.         String answer = "";
  48.         char cur;
  49.         StringBuilder sb = new StringBuilder();
  50.         for (int i = 0; i < table.length; i++) {
  51.             if (table[i][26] == 0) {
  52.                 continue;
  53.             } else {
  54.                 if (!answer.isEmpty()) {
  55.                     sb.append("|");
  56.                 }
  57.                 sb.append("(");
  58.                 for (int j = 0; j < 26; j++) {
  59.                     if (table[i][j] == 1) {
  60.                         if (sb.length() > 2 | (answer.isEmpty()) & (sb.length() > 1)) {
  61.                             sb.append("&");
  62.                         }
  63.                         cur = (char) (j + 'a');
  64.                         sb.append(cur);
  65.                     }
  66.                 }
  67.                 sb.append(")");
  68.                 if (sb.length() > 2) {
  69.                     answer = answer + sb.toString();
  70.                 }
  71.                 sb.setLength(0);
  72.             }
  73.         }
  74.         System.out.println(answer);
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement