yassmin

Untitled

May 1st, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.54 KB | None | 0 0
  1. import java.util.LinkedList;
  2.  
  3. public class step1 {
  4. static LinkedList<node> array[];
  5. static LinkedList<node> remain;
  6. static LinkedList<node> finall_array;
  7.  
  8. static int nOfBits = 0;
  9. int noRemain = 0;
  10. static String Binary(int decimal) {
  11. array = new LinkedList[nOfBits + 1];
  12. StringBuilder conc = new StringBuilder();
  13. String bin = Integer.toBinaryString(decimal);
  14. int count = 0;
  15. for (int i = 0; i < bin.length(); i++) {
  16. if (bin.charAt(i) == '1') {
  17. count++;
  18. }
  19. }
  20. for (int i = 0; i < nOfBits - bin.length(); i++) {
  21. conc.append("0");
  22. }
  23. conc.append(bin);
  24. node new_node = new node(2 ^ nOfBits - 1);
  25. new_node.minterm = conc.toString();
  26. new_node.min[decimal] = true;
  27. new_node.symbol.append(Integer.toString(decimal)).append(',');
  28. array[count].add(new_node);
  29. return conc.toString();
  30. }
  31.  
  32. /**
  33. * to get first simplification
  34. *
  35. * @param tmp
  36. */
  37. public void solve(LinkedList<node> tmp[]) {
  38. tmp = array;
  39. LinkedList<node> tmpnext = null;
  40. int i = 0;
  41. while (i < tmp.length - 1) {
  42. for (int j = 0; j < tmp[i].size(); j++) {
  43. int take = 0;
  44. for (int k = 0; k < tmp[i + 1].size(); k++) {
  45. int count = 0;
  46. StringBuilder newminterm = new StringBuilder();
  47. for (int l = 0; l < nOfBits; l++) {
  48.  
  49. if (tmp[i].get(j).minterm.charAt(l) == tmp[i].get(k).minterm.charAt(l)) {
  50. newminterm.append(tmp[i].get(j).minterm.charAt(l));
  51. continue;
  52.  
  53. } else {
  54. count++;
  55. newminterm.append('-');
  56. if (count > 1)
  57. break;
  58.  
  59. }
  60. }
  61. if (count == 1) {
  62. node new_node = new node(nOfBits);
  63. new_node.minterm = newminterm.toString();
  64. new_node.min[i] = true;
  65. new_node.symbol.append(Integer.toString(i)).append(',').append(Integer.toString(i + 1))
  66. .append(',');
  67. tmpnext.add(new_node);
  68. take = 1;
  69. }
  70.  
  71. }
  72. if (take == 0) {
  73. node new_node = new node(nOfBits);
  74. new_node.minterm = tmp[i].get(j).minterm;
  75. new_node.symbol.append(Integer.toString(i)).append(',');
  76. remain.add(new_node);
  77. noRemain++;
  78. }
  79. }
  80. i++;
  81. }
  82. getdashes(tmpnext);
  83.  
  84. }
  85.  
  86. /**
  87. * to get dashes
  88. *
  89. * @param dash
  90. */
  91. public void getdashes(LinkedList<node> dash) {
  92.  
  93. LinkedList<node> tmpdash = null;
  94. boolean check_ind[] = new boolean[dash.size()];
  95. for (int i = 0; i < dash.size(); i++) {
  96. int take = 0;
  97. if (check_ind[i] == true) {
  98. continue;
  99. }
  100. for (int j = 0; j < dash.size(); j++) {
  101. int count = 0;
  102.  
  103. StringBuilder newminterm = new StringBuilder();
  104. for (int l = 0; l < nOfBits; l++) {
  105.  
  106. if (dash.get(j).minterm.charAt(l) == dash.get(i).minterm.charAt(l)) {
  107. newminterm.append(dash.get(j).minterm.charAt(l));
  108. continue;
  109.  
  110. } else {
  111. count++;
  112. newminterm.append('-');
  113. if (count > 1)
  114. break;
  115.  
  116. }
  117. }
  118. if (count == 1) {
  119. int add = 1;
  120. node new_node = new node(nOfBits);
  121. new_node.minterm = newminterm.toString();
  122. new_node.symbol.append(dash.get(i).symbol).append(dash.get(j).symbol).append(',');
  123. if (check_ind[j] == true) {
  124. if (new_node.minterm == dash.get(j).minterm)
  125. add = 0;
  126. }
  127. if (add == 1) {
  128. check_ind[j] = true;
  129. tmpdash.add(new_node);
  130. }
  131. take = 1;
  132. }
  133. }
  134. if (take == 0) {
  135. node new_node = new node(nOfBits);
  136. new_node.minterm = dash.get(i).minterm;
  137. remain.add(new_node);
  138. noRemain++;
  139. }
  140. }
  141. finall_array = tmpdash;
  142. if (tmpdash.size() != 0) {
  143. getdashes(tmpdash);
  144. }
  145.  
  146. }
  147. }
Advertisement
Add Comment
Please, Sign In to add comment