Advertisement
philcrafts

PhilCraftsQuine

Oct 26th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.03 KB | None | 0 0
  1.  
  2. import java.util.Scanner;
  3.  
  4. public class QuineMcCluskey {
  5.  
  6.     static boolean isZero = false;
  7.     static int num = 0;
  8.     static String[][] binaryArr;
  9.  
  10.     public static void main(String[] args) {
  11.  
  12.         Scanner sc = new Scanner(System.in);
  13.  
  14.         System.out.println("Enter Number of Numbers");
  15.  
  16.         num = sc.nextInt();
  17.         System.out.println("Enter Numbers");
  18.  
  19.         binaryArr = new String[num * 16][5];
  20.  
  21.         int hold = 0;
  22.         int hold2 = 0;
  23.         int badtest = 0;
  24.  
  25.         for (int i = 0; i < num; i++) {
  26.  
  27.             badtest = sc.nextInt();
  28.             binaryArr[i][2] = Integer.toString(badtest) + ",";
  29.             binaryArr[i][3] = " ";
  30.             binaryArr[i][4] = "0";
  31.  
  32.             if (badtest == 0)
  33.                 isZero = true;
  34.  
  35.             binaryArr[i][0] = Integer.toBinaryString(badtest);
  36.  
  37.             for (int j = 0; j < binaryArr[i][0].length(); j++) {
  38.  
  39.                 hold += Character.getNumericValue(binaryArr[i][0].charAt(j));
  40.  
  41.                 binaryArr[i][1] = String.valueOf(hold);
  42.  
  43.             }
  44.  
  45.             hold2 = 16 - binaryArr[i][0].length(); // <---- num of bits
  46.             for (int k = 0; k <= hold2; k++) {
  47.                 binaryArr[i][0] = "0" + binaryArr[i][0];
  48.  
  49.             }
  50.  
  51.             hold = 0;
  52.             hold2 = 0;
  53.  
  54.         }
  55.  
  56.         for (int i = num; i < binaryArr.length; i++) {
  57.             binaryArr[i][0] = "000000000000000000";
  58.             binaryArr[i][1] = "000000000000000000";
  59.             binaryArr[i][2] = "000000000000000000";
  60.             binaryArr[i][3] = " ";
  61.             binaryArr[i][4] = "0";
  62.         }
  63.  
  64.         compare();
  65.         sc.close();
  66.  
  67.         for (int i = 0; i < num; i++) {
  68.             System.out.print(binaryArr[i][0] + " ");
  69.             System.out.printf("%6s", binaryArr[i][1]);
  70.             System.out.printf("%16s", binaryArr[i][2]);
  71.             System.out.print(" " + binaryArr[i][3] + " " + binaryArr[i][4] + "\n");
  72.         }
  73.     }
  74.  
  75.     private static void compare() {
  76.  
  77.         int size = binaryArr.length;
  78.         int check = 0;
  79.         int stuff = 0;
  80.         int internalnum = num;
  81.         int iteration = 0;
  82.  
  83.         StringBuilder holdString = new StringBuilder("00000000000000000");
  84.  
  85.         for (int i = 0; i < size - 1; i++) {
  86.  
  87.             for (int k = i; k < internalnum; k++) {
  88.                 check = 0;
  89.                 stuff = 0;
  90.  
  91.                 if (Integer.valueOf(binaryArr[k][4]) == iteration
  92.                         && Integer.valueOf(binaryArr[i][1]) < Integer.valueOf(binaryArr[k][1])) {
  93.  
  94.                     for (int j = 0; j <= 16; j++) {
  95.                         if (binaryArr[i][0].charAt(j) != binaryArr[k][0].charAt(j)) {
  96.                             check++;
  97.                             holdString.replace(0, 17, binaryArr[i][0]);
  98.                             holdString.setCharAt(j, '-');
  99.  
  100.                         }
  101.  
  102.                     }
  103.                     for (int m = 0; m <= 16; m++) {
  104.                         if (holdString.charAt(m) == '1')
  105.                             stuff++;
  106.                     }
  107.                 }
  108.  
  109.                 if (check == 1) {
  110.  
  111.                     internalnum++;
  112.                     binaryArr[i][3] = "c";
  113.                     binaryArr[k][3] = "c";
  114.  
  115.                     binaryArr[internalnum - 1][0] = holdString.toString();
  116.                     binaryArr[internalnum - 1][1] = String.valueOf(stuff);
  117.                     binaryArr[internalnum - 1][2] = binaryArr[i][2] + binaryArr[k][2];
  118.                     binaryArr[internalnum - 1][4] = Integer.toString(iteration + 1);
  119.                     check = 0;
  120.                     stuff = 0;
  121.  
  122.                     if (internalnum > 55) {
  123.                         internalnum--;
  124.                     }
  125.  
  126.                 }
  127.  
  128.             }
  129.  
  130.             if (Integer.valueOf(binaryArr[i][4]) < Integer.valueOf(binaryArr[i + 1][4]))
  131.                 iteration++;
  132.  
  133.         }
  134.  
  135.         num = internalnum;
  136.  
  137.     }
  138.  
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement