Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.07 KB | None | 0 0
  1. class Imp1_zso17_taak1 {
  2.   public static void main (String[] args) {
  3.    
  4.     /* if (args.length != 4 ) {
  5.      System.out.println("false");
  6.      return;
  7.      }
  8.      
  9.      String s = args[0];
  10.      String waarde1 = args[1];
  11.      String waarde2 = args[2];
  12.      String waarde3 = args[3];
  13.      */
  14.    
  15.     String[][] truthy = {
  16.       {"p", "true", "false", "false"},
  17.       {"q", "false", "true", "false"},
  18.       {"r", "false", "false", "true"},
  19.       {"true", "false", "false", "false"},
  20.       {"(!false)", "false", "false", "false"},
  21.       {"(!(p&(q&r)))", "false", "false", "false"},
  22.       {"(p&p)", "true", "false", "false"},
  23.       {"(p&q)", "true", "true", "false"},
  24.       {"((!p)|q)", "false", "false", "true"},
  25.       {"((!p)|q)", "false", "true", "true"},
  26.       {"((!p)|q)", "true", "true", "true"},
  27.       {"( (p&r) | q )", "true", "true", "false"},
  28.       {"(p|(!p))", "false", "false", "false"}
  29.     };
  30.    
  31.     for ( int i = 0; i < truthy.length; i++ ) {
  32.       String s = truthy[i][0];
  33.       String waarde1 = truthy[i][1];
  34.       String waarde2 = truthy[i][2];
  35.       String waarde3 = truthy[i][3];
  36.      
  37.       String noSpaces = "";
  38.       noSpaces = removeSpaces(s);
  39.      
  40.       if ( !(noSpaces.equals("")) ) {  
  41.         if( checkInput(noSpaces, waarde1, waarde2, waarde3) ) {
  42.           boolean b1 = waardeBepalenString(waarde1);
  43.           boolean b2 = waardeBepalenString(waarde2);
  44.           boolean b3 = waardeBepalenString(waarde3);
  45.           if ( evaluateProp(noSpaces, b1, b2, b3) ) {
  46.             System.out.println("true");
  47.           }
  48.           else {
  49.             System.out.println("false");
  50.           }
  51.         }
  52.         else {
  53.           System.out.println("false");
  54.         }
  55.       }
  56.       else {
  57.         System.out.println("false");
  58.       }
  59.     }
  60.   }
  61.  
  62.   static boolean evaluateProp(String s, boolean b1, boolean b2, boolean b3) {
  63.     if ( s.equals("p")) {
  64.       return b1;
  65.     }
  66.     if ( s.equals("q")) {
  67.       return b2;
  68.     }
  69.     if ( s.equals("r")) {
  70.       return b3;
  71.     }
  72.     if ( s.equals("true")) {
  73.       return true;
  74.     }
  75.     if ( s.equals("false")) {
  76.       return false;
  77.     }
  78.     else {
  79.       if ( s.charAt(0) == '(' && s.charAt(s.length()-1) == ')' ) {  
  80.         int diepte = 0;
  81.         for ( int i = 1; i < s.length()-1; i++ ) {  
  82.           if ( s.charAt(i) == '(' ) {  
  83.             diepte++;
  84.           }
  85.           if ( s.charAt(i) == ')' ) {  
  86.             diepte--;
  87.           }
  88.           char symbool;
  89.           if ( diepte == 0 && (s.charAt(i) == '&' || s.charAt(i) == '!' || s.charAt(i) == '|' ) ) {
  90.             symbool = s.charAt(i);
  91.             if ( symbool == '&' ) {
  92.               return(evaluateProp(s.substring(1,i), b1, b2, b3) && evaluateProp(s.substring(i+1,s.length()-1), b1, b2, b3));
  93.             }
  94.             else {
  95.               if ( symbool == '|' ) {
  96.                 return(evaluateProp(s.substring(1,i), b1, b2, b3) || evaluateProp(s.substring(i+1,s.length()-1), b1, b2, b3));
  97.               }
  98.               else {
  99.                 if ( symbool == '!' ) {
  100.                   return(evaluateProp(s.substring(i+1,s.length()-1), b1, b2, b3));
  101.                 }
  102.               }
  103.             }
  104.           }
  105.           else {
  106.             return false;
  107.           }
  108.         }
  109.       }
  110.       else {
  111.         return false;
  112.       }
  113.     }
  114.     return false;
  115.   }
  116.  
  117.   static boolean waardeBepalenString(String s) {
  118.     if ( s.equals("true") ) {
  119.       return true;
  120.     }
  121.     else {
  122.       return false;
  123.     }
  124.   }
  125.  
  126.   static boolean checkInput(String s, String b1, String b2, String b3) {
  127.     if ( elementProp(s) && checkArguments(b1, b2, b3) ) {
  128.       return true;
  129.     }
  130.     else {
  131.       return false;
  132.     }
  133.   }
  134.  
  135.   static boolean checkArguments(String b1, String b2, String b3) {
  136.     String correct = "true";
  137.     String incorrect = "false";
  138.     if ( (b1.equals(correct)|| b1.equals(incorrect)) && (b2.equals(correct)|| b2.equals(incorrect)) && (b3.equals(correct)|| b3.equals(incorrect)) ) {
  139.       return true;
  140.     }
  141.     else {
  142.       return false;
  143.     }
  144.   }
  145.  
  146.   static boolean elementProp(String s) {
  147.     if ( s.equals("") || s.equals("true") || s.equals("false") || s.equals("p") || s.equals("q") || s.equals("r") ) {
  148.       return true;
  149.     }
  150.     else {
  151.       if ( s.charAt(0) == '(' && s.charAt(s.length()-1) == ')' ) {  
  152.         int diepte = 0;
  153.         for ( int i = 1; i < s.length()-1; i++ ) {  
  154.           if ( s.charAt(i) == '(' ) {  
  155.             diepte++;
  156.           }
  157.           if ( s.charAt(i) == ')' ) {  
  158.             diepte--;
  159.           }
  160.           if ( diepte == 0 && (s.charAt(i) == '&' || s.charAt(i) == '!' || s.charAt(i) == '|' ) ) {  
  161.             return(elementProp(s.substring(1,i)) && elementProp(s.substring(i+1,s.length()-1)));  
  162.           }
  163.         }
  164.       }
  165.       else {
  166.         return false;
  167.       }
  168.     }
  169.     return false;
  170.   }
  171.  
  172.   static String removeSpaces(String s) {
  173.     String newString = "";
  174.     for ( int i = 0; i < s.length(); i++ ) {
  175.       if ( s.charAt(i) != ' ' ) {
  176.         newString += s.charAt(i);
  177.       }
  178.     }
  179.     return newString;
  180.   }
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement