SHARE
TWEET

Untitled

a guest Feb 18th, 2020 72 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package v02;
  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import java.util.Scanner;
  5.  
  6. public class hw2 {
  7.     private static int[][] data, holdOnes;
  8.     private static int inLength, numIn, numOut;
  9.     private static int[] ones;
  10.     private static boolean[][] linked;
  11.    
  12.     public static void main(String[] args) {
  13.         runQM();
  14.        
  15.         printData();
  16.     }
  17.  
  18.     private static void qmMethod() {
  19.         for(int i = 0; i < numOut; i++) {
  20.             get1s(i);
  21.             reduceIt();
  22.             checkUsed();
  23.             printResult();
  24.         }
  25.     }
  26.  
  27.     private static void printResult() {
  28.        
  29.     }
  30.  
  31.     private static void checkUsed() {
  32.         for(int i = 0; i < holdOnes.length; i++) {
  33.             for(int j = i; j < holdOnes.length; j++) {
  34.                 int c1 = 0, c2 = 0;
  35.                 if(linked[i][j]) {
  36.                     for(int k = 0; k < linked.length; k++) {
  37.                         if(linked[i][j] == linked[i][k] && j != k) {
  38.                             c1 = 1;
  39.                         }
  40.                     }
  41.                     for(int l = 0; l < linked.length; l++) {
  42.                         if(linked[i][j] == linked[l][j] && i != l) {
  43.                             c2 = 1;
  44.                         }
  45.                     }
  46.                 }
  47.                 if(c1+c2 == 2) {
  48.                     linked[i][j] = false;
  49.                 }
  50.                 System.out.print(linked[i][j]+" ");
  51.             }
  52.             System.out.println();
  53.         }
  54.     }
  55.  
  56.     private static void reduceIt() {
  57.         for(int i = 0; i < holdOnes.length; i++) {
  58.             for(int j = i; j < holdOnes.length; j++) {
  59.                 int counter = 0;
  60.                 for(int k = 0; k < numIn; k++) {
  61.                     if(holdOnes[i][k] != holdOnes[j][k]) {
  62.                         counter++;
  63.                     }
  64.                 }
  65.                 if(counter == 1) {
  66.                     linked[i][j] = true;
  67.                     System.out.println(i + "; " + j);
  68.                 }
  69.             }
  70.         }
  71.     }
  72.  
  73.     private static void get1s(int pos) {
  74.         holdOnes = new int[ones[pos]][numIn];
  75.         linked = new boolean[ones[pos]][ones[pos]];
  76.         for(int i = 0; i < ones[pos]; i++) {
  77.             for(int j = 0; j < ones[pos]; j++) {
  78.                 linked[i][j] = false;
  79.             }
  80.         }
  81.         int counter = 0;
  82.         for(int i = 0; i < inLength; i++) {
  83.             if(data[numIn+pos][i] == 1) {
  84.                 for(int j = 0; j < numIn; j++) {
  85.                     holdOnes[counter][j] = data[j][i];
  86.                 }
  87.                 counter++;
  88.             }
  89.         }
  90.     }
  91.  
  92.     private static void runQM() {
  93.         try {
  94.             Scanner sc = new Scanner(new File("input.txt"));
  95.             numIn = sc.nextInt();
  96.             numOut = sc.nextInt();
  97.             inLength = (int) Math.pow(2, numIn);
  98.             data = new int[numIn+numOut][inLength];
  99.             fillIn(numIn);
  100.             fillOut(sc, numIn, numOut);
  101.             qmMethod();
  102.             sc.close();
  103.         } catch (FileNotFoundException e) {
  104.             System.out.println("Sorry, this file could not be found");
  105.         }
  106.     }
  107.  
  108.     private static void fillOut(Scanner sc, int numIn, int numOut) {
  109.         ones = new int[numOut];
  110.         for(int i = 0; i < numOut; i++) {
  111.             ones[i] = 0;
  112.         }
  113.         for(int j = 0; j < inLength; j++) {
  114.             for(int i = numIn; i < (numIn+numOut); i++) {
  115.                 int num = sc.nextInt();
  116.                 if(num == 1) {
  117.                     ones[i-numIn]++;
  118.                 }
  119.                 data[i][j] = num;
  120.             }
  121.         }
  122.     }
  123.  
  124.     private static void fillIn(int numIn) {
  125.         for(int i = 0; i < numIn; i++) {
  126.             int fill = (int) (Math.pow(2, numIn)/Math.pow(2, i+1));
  127.             boolean tf = true;
  128.             for(int j = 0; j < inLength; j++) {
  129.                 if(j%fill == 0 && j > 0) {
  130.                     tf = !tf;
  131.                 }
  132.                 if(tf) {
  133.                     data[i][j] = 0;
  134.                 } else {
  135.                     data[i][j] = 1;
  136.                 }
  137.             }
  138.         }
  139.     }
  140.    
  141.     private static void printData() {
  142.         for(int j = 0; j < inLength; j++) {
  143.             for(int i = 0; i < data.length; i++) {
  144.                 System.out.print(data[i][j] + " ");
  145.             }
  146.             System.out.println();
  147.         }
  148.     }
  149. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top