Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void main(String[] args) {
- if (args.length != 1) {
- throw new RuntimeException();
- }
- final String expression = args[0];
- final Expression parsed;
- try {
- parsed = new ExpressionParser().parseString(expression);
- } catch (ParserException e) {
- e.printStackTrace();
- return;
- }
- Set<Character> have = new HashSet<>();
- for (int i = 0; i < expression.length(); i++) {
- char ch = expression.charAt(i);
- if ('a' <= ch && ch <= 'z') {
- have.add(ch);
- }
- }
- int nvars = have.size();
- int table[][] = new int [(int) Math.pow(2, nvars)][27];
- final int ALPHA = 'z' - 'a' + 1;
- boolean[] vars = new boolean[ALPHA];
- Object[] a;
- char y;
- for (int mask = 0; mask < (1 << nvars); mask++) {
- int ptr = 0;
- for (char ch = 'a'; ch <= 'z'; ch++) {
- vars[ch - 'a'] = have.contains(ch) && (mask & (1 << (ptr++))) != 0;
- }
- for (int i = 0; i < nvars; i++) {
- a = have.toArray();
- y = (char) a[i];
- table[mask][y - 'a'] = ((mask >> i) & 1);
- System.out.print(((mask >> i) & 1) + " ");
- }
- table[mask][26] = parsed.evaluate(vars) ? 1 : 0;
- System.out.println(parsed.evaluate(vars) ? 1 : 0);
- }
- for (int i = 0; i < table.length; i++) {
- for (int j = 0; j < table[i].length; j++) {
- System.out.print(table[i][j] + " ");
- }
- System.out.println();
- }
- String answer = "";
- char cur;
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < table.length; i++) {
- if (table[i][26] == 0) {
- continue;
- } else {
- if (!answer.isEmpty()) {
- sb.append("|");
- }
- sb.append("(");
- for (int j = 0; j < 26; j++) {
- if (table[i][j] == 1) {
- if (sb.length() > 2 | (answer.isEmpty()) & (sb.length() > 1)) {
- sb.append("&");
- }
- cur = (char) (j + 'a');
- sb.append(cur);
- }
- }
- sb.append(")");
- if (sb.length() > 2) {
- answer = answer + sb.toString();
- }
- sb.setLength(0);
- }
- }
- System.out.println(answer);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement